Example #1
0
  private String formRowKey(byte[] byteKey) {
    Converter converter = ownerMeta.getIdField().getConverter();
    Object objKey = converter.convertFromNoSql(byteKey);
    String keyAsStr = converter.convertTypeToString(objKey);

    // We ALWAYS ignore partition in this case since this index row is ALWAYS tied to this row
    // period...moving it all
    // would be a pain and be useless...
    String rowKey = getMetaDbo().getIndexRowKey(null, null) + "/" + keyAsStr;
    return rowKey;
  }
Example #2
0
 public void setup(
     DboTableMeta tableMeta,
     Field field,
     String colName,
     MetaAbstractClass<OWNER> ownerMeta,
     MetaAbstractClass<PROXY> classMeta) {
   DboTableMeta fkToTable = classMeta.getMetaDbo();
   metaDbo.setup(tableMeta, colName, fkToTable, true);
   super.setup(field, colName);
   this.classMeta = classMeta;
   this.ownerMeta = ownerMeta;
 }
Example #3
0
  @Override
  public void translateFromColumn(Row row, OWNER entity, NoSqlSession session) {
    String indexColFamily = getMetaDbo().getIndexTableName();
    String rowKey = formRowKey(row.getKey());

    byte[] key = StandardConverters.convertToBytes(rowKey);
    ScanInfo info = new ScanInfo(ownerMeta.getMetaDbo(), getMetaDbo(), indexColFamily, key);
    int batchSize = 200;
    AbstractCursor<IndexColumn> indexCursor = session.scanIndex(info, null, null, batchSize);

    CursorProxy<PROXY> cursor =
        new CursorProxy<PROXY>(entity, session, indexCursor, classMeta, batchSize);
    ReflectionUtil.putFieldValue(entity, field, cursor);
  }
Example #4
0
 @Override
 public String toString() {
   return "MetaCursorField [field='"
       + field.getDeclaringClass().getName()
       + "."
       + field.getName()
       + "(field type="
       + field.getType().getName()
       + "<"
       + classMeta.getMetaClass().getName()
       + ">), columnName="
       + columnName
       + "]";
 }
Example #5
0
  private IndexData fetchIndexData(InfoForIndex<OWNER> info, PROXY value) {
    RowToPersist row = info.getRow();
    // Value is the Account.java or a Proxy of Account.java field and what we need to save in
    // the database is the ID inside this Account.java object!!!!
    byte[] byteVal = classMeta.convertEntityToId(value);
    if (byteVal == null && value != null) {
      // if value is not null but we get back a byteVal of null, it means the entity has not been
      // initialized with a key yet, BUT this is required to be able to save this object
      String owner = "'" + field.getDeclaringClass().getSimpleName() + "'";
      String child = "'" + field.getType().getSimpleName() + "'";
      String fieldName = "'" + field.getType().getSimpleName() + " " + field.getName() + "'";
      throw new ChildWithNoPkException(
          "The entity you are saving of type="
              + owner
              + " has a field="
              + fieldName
              + " that does not yet have a primary key so you cannot save it.  To correct this\n"
              + "problem, you can either\n"
              + "1. SAVE the "
              + child
              + " BEFORE you save the "
              + owner
              + " OR\n"
              + "2. Call entityManager.fillInWithKey(Object entity), then SAVE your "
              + owner
              + "', then save your "
              + child
              + " NOTE that this"
              + "\nmethod #2 is used for when you have a bi-directional relationship where each is a child of the other");
    }

    byte[] key = info.getRow().getKey();

    IndexData data = new IndexData();
    String colFamily = getMetaDbo().getIndexTableName();
    String rowKey = formRowKey(row.getKey());

    data.setColumnFamilyName(colFamily);
    data.setRowKey(rowKey);
    IndexColumn indCol = data.getIndexColumn();
    indCol.setIndexedValue(byteVal);
    indCol.setPrimaryKey(key);
    return data;
  }