Search in sources :

Example 11 with TableRef

use of com.torodb.core.TableRef in project torodb by torodb.

the class DerbyReadInterface method getLastRowIdUsedStatement.

@Override
protected String getLastRowIdUsedStatement(MetaDatabase metaDatabase, MetaDocPart metaDocPart) {
    TableRef tableRef = metaDocPart.getTableRef();
    StringBuilder sb = new StringBuilder();
    sb.append("SELECT max(\"").append(getPrimaryKeyColumnIdentifier(tableRef)).append("\") FROM \"").append(metaDatabase.getIdentifier()).append("\".\"").append(metaDocPart.getIdentifier()).append("\"");
    String statement = sb.toString();
    return statement;
}
Also used : TableRef(com.torodb.core.TableRef)

Example 12 with TableRef

use of com.torodb.core.TableRef 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());
}
Also used : KvDocument(com.torodb.kvdocument.values.KvDocument) R2DTranslator(com.torodb.core.d2r.R2DTranslator) KvArray(com.torodb.kvdocument.values.KvArray) ToroDocument(com.torodb.core.document.ToroDocument) DocPartResult(com.torodb.core.d2r.DocPartResult) TableRef(com.torodb.core.TableRef) Test(org.junit.Test)

Example 13 with TableRef

use of com.torodb.core.TableRef 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());
}
Also used : KvDocument(com.torodb.kvdocument.values.KvDocument) R2DTranslator(com.torodb.core.d2r.R2DTranslator) KvArray(com.torodb.kvdocument.values.KvArray) ToroDocument(com.torodb.core.document.ToroDocument) DocPartResult(com.torodb.core.d2r.DocPartResult) TableRef(com.torodb.core.TableRef) Test(org.junit.Test)

Example 14 with TableRef

use of com.torodb.core.TableRef in project torodb by torodb.

the class TableRefImplTest method rootTest.

@Test
public void rootTest() throws Exception {
    TableRef tableRef = createTableRef();
    Assert.assertEquals("", tableRef.getName());
    Assert.assertEquals(0, tableRef.getDepth());
    Assert.assertEquals(0, tableRef.getArrayDimension());
    Assert.assertEquals(true, tableRef.isRoot());
    Assert.assertEquals(false, tableRef.isInArray());
    Assert.assertEquals(false, tableRef.getParent().isPresent());
}
Also used : TableRef(com.torodb.core.TableRef) Test(org.junit.Test)

Example 15 with TableRef

use of com.torodb.core.TableRef 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();
}
Also used : MetaDocPart(com.torodb.core.transaction.metainf.MetaDocPart) ImmutableList(com.google.common.collect.ImmutableList) ToroDocument(com.torodb.core.document.ToroDocument) DocPartResult(com.torodb.core.d2r.DocPartResult) HashMap(java.util.HashMap) Map(java.util.Map) TableRef(com.torodb.core.TableRef) KvValue(com.torodb.kvdocument.values.KvValue)

Aggregations

TableRef (com.torodb.core.TableRef)32 Test (org.junit.Test)13 MetaDocPart (com.torodb.core.transaction.metainf.MetaDocPart)6 DocPartResult (com.torodb.core.d2r.DocPartResult)5 ToroDocument (com.torodb.core.document.ToroDocument)5 MetaCollection (com.torodb.core.transaction.metainf.MetaCollection)5 MetaDatabase (com.torodb.core.transaction.metainf.MetaDatabase)5 R2DTranslator (com.torodb.core.d2r.R2DTranslator)4 MetaField (com.torodb.core.transaction.metainf.MetaField)4 KvDocument (com.torodb.kvdocument.values.KvDocument)4 KvArray (com.torodb.kvdocument.values.KvArray)3 KvValue (com.torodb.kvdocument.values.KvValue)3 MetaIdentifiedDocPartIndex (com.torodb.core.transaction.metainf.MetaIdentifiedDocPartIndex)2 MutableMetaCollection (com.torodb.core.transaction.metainf.MutableMetaCollection)2 MutableMetaDatabase (com.torodb.core.transaction.metainf.MutableMetaDatabase)2 MutableMetaDocPart (com.torodb.core.transaction.metainf.MutableMetaDocPart)2 EmptyTorodCursor (com.torodb.torod.cursors.EmptyTorodCursor)2 ArrayList (java.util.ArrayList)2 Preconditions (com.google.common.base.Preconditions)1 ImmutableList (com.google.common.collect.ImmutableList)1