private void parseOutKeyList(Row row, TypedRow entity) { String columnName = getColumnName() + "Id"; byte[] namePrefix = StandardConverters.convertToBytes(columnName); Collection<Column> columns = row.columnByPrefix(namePrefix); if (columns.size() > 0) { for (Column col : columns) { byte[] rowkeyFullName = col.getName(); int rkLen = rowkeyFullName.length - namePrefix.length; byte[] rk = new byte[rkLen]; for (int i = namePrefix.length; i < rowkeyFullName.length; i++) { rk[i - namePrefix.length] = rowkeyFullName[i]; } // this is the rowkey which is being added String rowKeyToDisplay = getColumnName() + ".Id"; byte[] rowkeyPrefixToDisplay = StandardConverters.convertToBytes(rowKeyToDisplay); entity.addColumn( this, rowkeyFullName, rowkeyPrefixToDisplay, rk, col.getValue(), col.getTimestamp()); // Now extract other columns Object objVal = this.convertFromStorage2(rk); String columnsInEmbeddedRowName = getColumnName() + this.convertTypeToString(objVal); byte[] embedColumn = StandardConverters.convertToBytes(columnsInEmbeddedRowName); Collection<Column> columnsInRow = row.columnByPrefix(embedColumn); for (Column colInRow : columnsInRow) { byte[] fullName = colInRow.getName(); int pkLen = fullName.length - embedColumn.length; byte[] fk = new byte[pkLen]; for (int i = embedColumn.length; i < fullName.length; i++) { fk[i - embedColumn.length] = fullName[i]; } String embedColumnToDisplay = getColumnName() + "." + this.convertTypeToString(objVal); byte[] embedColumPrefixToDisplay = StandardConverters.convertToBytes(embedColumnToDisplay); entity.addColumn( this, fullName, embedColumPrefixToDisplay, fk, colInRow.getValue(), col.getTimestamp()); } } } else { // It means it doesn't have a NoSqlId, so only extract other columns byte[] colName = StandardConverters.convertToBytes(getColumnName()); Collection<Column> columnsWORowKey = row.columnByPrefix(colName); for (Column col : columnsWORowKey) { byte[] fullName = col.getName(); int embedColumnLen = fullName.length - colName.length; byte[] embedColumn = new byte[embedColumnLen]; for (int i = colName.length; i < fullName.length; i++) { embedColumn[i - colName.length] = fullName[i]; } entity.addColumn(this, fullName, colName, embedColumn, col.getValue(), col.getTimestamp()); } } }
@Override public int compare(ByteArray o1, ByteArray o2) { if (o1.getKey() == null && o2.getKey() != null) return -1; else if (o2.getKey() == null && o1.getKey() != null) return 1; else if (o2.getKey() == null && o1.getKey() == null) return 0; String left = StandardConverters.convertFromBytes(String.class, o1.getKey()); String right = StandardConverters.convertFromBytes(String.class, o2.getKey()); return left.compareTo(right); }
private void loadPartitions(DboTableMeta meta2) { DboTableMeta tableMeta = mgr.find(DboTableMeta.class, "partitions"); NoSqlSession session = mgr.getSession(); byte[] rowKey = StandardConverters.convertToBytes(meta2.getColumnFamily()); Cursor<Column> results = session.columnSlice(tableMeta, rowKey, null, null, 1000, BigInteger.class); while (results.next()) { Column col = results.getCurrent(); BigInteger time = StandardConverters.convertFromBytes(BigInteger.class, col.getName()); existingPartitions.add(time.longValue()); } Collections.sort(existingPartitions); }
@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); }