use of com.torodb.core.document.ToroDocument in project torodb by torodb.
the class R2DTranslatorTest method readDocumentWithOutPresentFields.
/*
* Document: { "name" : "jero" }
*/
@Test
public void readDocumentWithOutPresentFields() {
MetaDocPartBuilder builder = new MetaDocPartBuilder(rootRef);
builder.addMetaField("name", "name_s", FieldType.STRING);
builder.addMetaField("address", "address_s", FieldType.STRING);
builder.addRow(1, null, 1, null, "jero", null);
MockedDocPartResult root = builder.getResultSet();
List<DocPartResult> lst = Collections.singletonList(root);
R2DTranslator r2dTranslator = new R2DTranslatorImpl();
Collection<ToroDocument> readedDocuments = r2dTranslator.translate(lst.iterator());
assertEquals(1, readedDocuments.size());
KvDocument doc = readedDocuments.iterator().next().getRoot();
assertEquals("jero", doc.get("name").getValue());
assertNull(doc.get("address"));
}
use of com.torodb.core.document.ToroDocument in project torodb by torodb.
the class R2DTranslatorTest method readInnerArray.
/*
* Document: { "name" : "jero", "numbers" : [4, 8, 15, 16] }
*/
@Test
public void readInnerArray() {
/*
* Root Level
*/
MetaDocPartBuilder builder = new MetaDocPartBuilder(rootRef);
builder.addMetaField("name", "name_s", FieldType.STRING);
builder.addMetaField("numbers", "numbers_e", FieldType.CHILD);
builder.addRow(1, null, 1, null, "jero", IsArray);
MockedDocPartResult root = builder.getResultSet();
/*
* Second Level
*/
TableRef secondRef = fact.createChild(rootRef, "numbers");
MetaDocPartBuilder secondBuilder = new MetaDocPartBuilder(secondRef);
secondBuilder.addMetaScalar("v_i", FieldType.INTEGER);
secondBuilder.addRow(1, 1, 20, 0, 4);
secondBuilder.addRow(1, 1, 21, 1, 8);
secondBuilder.addRow(1, 1, 23, 2, 15);
secondBuilder.addRow(1, 1, 24, 3, 16);
MockedDocPartResult secondLevel = secondBuilder.getResultSet();
List<DocPartResult> lst = Lists.newArrayList(secondLevel, root);
R2DTranslator r2dTranslator = new R2DTranslatorImpl();
Collection<ToroDocument> readedDocuments = r2dTranslator.translate(lst.iterator());
assertEquals(1, readedDocuments.size());
KvDocument doc = readedDocuments.iterator().next().getRoot();
assertEquals("jero", doc.get("name").getValue());
KvValue<?> kvValue = doc.get("numbers");
assertTrue(kvValue instanceof KvArray);
KvArray array = (KvArray) kvValue;
assertEquals(4, array.size());
assertEquals(4, array.get(0).getValue());
assertEquals(8, array.get(1).getValue());
assertEquals(15, array.get(2).getValue());
assertEquals(16, array.get(3).getValue());
}
use of com.torodb.core.document.ToroDocument in project torodb by torodb.
the class R2DTranslatorTest method readDocumentInArray.
/*
* Document: { "name" : "jero", "numbers" : [ 666, { "address": "myhome" } ] }
*/
@Test
public void readDocumentInArray() {
int did = 1;
/*
* Root Level
*/
MetaDocPartBuilder builder = new MetaDocPartBuilder(rootRef);
builder.addMetaField("name", "name_s", FieldType.STRING);
builder.addMetaField("numbers", "numbers_e", FieldType.CHILD);
builder.addRow(did, null, did, null, "jero", IsArray);
MockedDocPartResult root = builder.getResultSet();
/*
* Second Level
*/
int pid = did;
TableRef secondRef = fact.createChild(rootRef, "numbers");
MetaDocPartBuilder secondBuilder = new MetaDocPartBuilder(secondRef);
secondBuilder.addMetaScalar("v_i", FieldType.INTEGER);
secondBuilder.addMetaField("address", "address_s", FieldType.STRING);
secondBuilder.addRow(did, pid, 20, 0, 666, null);
secondBuilder.addRow(did, pid, 21, 1, null, "myhome");
MockedDocPartResult secondLevel = secondBuilder.getResultSet();
List<DocPartResult> lst = Lists.newArrayList(secondLevel, root);
R2DTranslator r2dTranslator = new R2DTranslatorImpl();
Collection<ToroDocument> readedDocuments = r2dTranslator.translate(lst.iterator());
assertEquals(1, readedDocuments.size());
KvDocument doc = readedDocuments.iterator().next().getRoot();
assertEquals("jero", doc.get("name").getValue());
KvValue<?> kvValue = doc.get("numbers");
assertTrue(kvValue instanceof KvArray);
KvArray array = (KvArray) kvValue;
assertEquals(2, array.size());
assertEquals(666, array.get(0).getValue());
KvValue<?> kvValueSecond = array.get(1);
assertNotNull(kvValueSecond);
assertTrue(kvValueSecond instanceof KvDocument);
KvDocument doc2 = (KvDocument) kvValueSecond;
assertEquals("myhome", doc2.get("address").getValue());
}
use of com.torodb.core.document.ToroDocument in project torodb by torodb.
the class R2DTranslatorTest method readDocumentWithMultipleFields.
/*
* Document: { "name" : "jero", "address" : "my home", "age" : 25 }
*/
@Test
public void readDocumentWithMultipleFields() {
MetaDocPartBuilder builder = new MetaDocPartBuilder(rootRef);
builder.addMetaField("name", "name_s", FieldType.STRING);
builder.addMetaField("address", "address_s", FieldType.STRING);
builder.addMetaField("age", "age_i", FieldType.INTEGER);
builder.addRow(1, null, 1, null, "jero", "my home", 25);
MockedDocPartResult root = builder.getResultSet();
List<DocPartResult> lst = Collections.singletonList(root);
R2DTranslator r2dTranslator = new R2DTranslatorImpl();
Collection<ToroDocument> readedDocuments = r2dTranslator.translate(lst.iterator());
assertEquals(1, readedDocuments.size());
KvDocument doc = readedDocuments.iterator().next().getRoot();
assertEquals("jero", doc.get("name").getValue());
assertEquals("my home", doc.get("address").getValue());
assertEquals(25, doc.get("age").getValue());
}
use of com.torodb.core.document.ToroDocument in project torodb by torodb.
the class R2DTranslatorImpl method translate.
@Override
public List<ToroDocument> translate(Iterator<DocPartResult> docPartResultIt) {
ImmutableList.Builder<ToroDocument> readedDocuments = ImmutableList.builder();
Table<TableRef, Integer, Map<String, List<KvValue<?>>>> currentFieldDocPartTable = HashBasedTable.<TableRef, Integer, Map<String, List<KvValue<?>>>>create();
Table<TableRef, Integer, Map<String, List<KvValue<?>>>> childFieldDocPartTable = HashBasedTable.<TableRef, Integer, Map<String, List<KvValue<?>>>>create();
int previousDepth = -1;
while (docPartResultIt.hasNext()) {
DocPartResult docPartResult = docPartResultIt.next();
MetaDocPart metaDocPart = docPartResult.getMetaDocPart();
TableRef tableRef = metaDocPart.getTableRef();
if (previousDepth != -1 && previousDepth != tableRef.getDepth()) {
Table<TableRef, Integer, Map<String, List<KvValue<?>>>> previousFieldChildDocPartTable = childFieldDocPartTable;
childFieldDocPartTable = currentFieldDocPartTable;
currentFieldDocPartTable = previousFieldChildDocPartTable;
if (!tableRef.isRoot()) {
currentFieldDocPartTable.clear();
}
}
previousDepth = tableRef.getDepth();
Map<Integer, Map<String, List<KvValue<?>>>> childFieldDocPartRow = childFieldDocPartTable.row(tableRef);
Map<Integer, Map<String, List<KvValue<?>>>> currentFieldDocPartRow;
if (tableRef.isRoot()) {
currentFieldDocPartRow = null;
} else {
currentFieldDocPartRow = currentFieldDocPartTable.row(tableRef.getParent().get());
}
readResult(metaDocPart, tableRef, docPartResult, currentFieldDocPartRow, childFieldDocPartRow, readedDocuments);
}
return readedDocuments.build();
}
Aggregations