@Override public <E> List<E> getColumnsById(String schemaName, String tableName, String pKeyColumnName, String columnName, Object pKeyColumnValue, Class columnJavaType) { // search using index on pkey column List<E> foreignKeys = new ArrayList<E>(); Table schemaTable = tableAPI.getTable(tableName); Index index = schemaTable.getIndex(pKeyColumnName); IndexKey indexKey = index.createIndexKey(); // StringBuilder indexNamebuilder = new StringBuilder(); NoSqlDBUtils.add(schemaTable.getField(pKeyColumnName), indexKey, pKeyColumnValue, pKeyColumnName); KunderaCoreUtils.printQuery( "Get columns by id from:" + tableName + " for column:" + columnName + " where value:" + pKeyColumnValue, showQuery); Iterator<Row> rowsIter = tableAPI.tableIterator(indexKey, null, null); while (rowsIter.hasNext()) { Row row = rowsIter.next(); FieldDef fieldMetadata = schemaTable.getField(columnName); FieldValue value = row.get(columnName); foreignKeys.add((E) NoSqlDBUtils.get(fieldMetadata, value, null)); } return foreignKeys; }
static Object get(final FieldDef fieldMetadata, FieldValue value, final Field field) if (fieldMetadata != null && !value.isNull()) switch (fieldMetadata.getType()) retValue = value.asString().get(); break; retValue = value.asInteger().get(); break; retValue = value.asLong().get(); retValue = value.asDouble().get(); break; retValue = value.asBoolean().get(); break; retValue = value.asBinary().get(); throw new UnsupportedOperationException("Invalid field type: " + fieldMetadata.getType() + " provided!");
@Override public void deleteByColumn(String schemaName, String tableName, String columnName, Object columnValue) { Table schemaTable = tableAPI.getTable(tableName); List<String> primaryKeys = schemaTable.getPrimaryKey(); Object[] foundRecords = findIdsByColumn(schemaName, tableName, primaryKeys.get(0), columnName, columnValue, null); KunderaCoreUtils.printQuery("Delete columns by id from:" + tableName, showQuery); if (foundRecords != null) { for (Object key : foundRecords) { PrimaryKey primaryKey = schemaTable.createPrimaryKey(); NoSqlDBUtils.add(schemaTable.getField(primaryKeys.get(0)), primaryKey, key, primaryKeys.get(0)); KunderaCoreUtils.printQuery(" Delete for id:" + key, showQuery); tableAPI.delete(primaryKey, null, null); } } }
Table schemaTable = tableAPI.getTable(entityMetadata.getTableName()); if (schemaTable.getPrimaryKey().contains(colName)) PrimaryKey rowKey = schemaTable.createPrimaryKey(); NoSqlDBUtils.add(schemaTable.getField(colName), rowKey, colValue, colName); rowsIter = tableAPI.tableIterator(rowKey, null, null); Index index = schemaTable.getIndex(colName); IndexKey indexKey = index.createIndexKey(); NoSqlDBUtils.add(schemaTable.getField(colName), indexKey, colValue, colName); rowsIter = tableAPI.tableIterator(indexKey, null, null);
Table schemaTable = tableAPI.getTable(entityMetadata.getTableName()); Iterator<Row> rowsIter = tableAPI.tableIterator(schemaTable.createPrimaryKey(), null, null);
Table table = tableAPI.getTable(tableInfo.getTableName()); if (table == null) result = tableAPI.executeSync(statement); if (!result.isSuccessful()) for (ColumnInfo column : columnInfos) if (table.getField(column.getColumnName()) == null) if (table.getField(column.getColumnName()) == null) result = tableAPI.executeSync(statement); if (!result.isSuccessful())
Map<Key, List<TableOperation>> operations = new HashMap<Key, List<TableOperation>>(); Table schemaTable = tableAPI.getTable(joinTableName); Row row = schemaTable.createRow(); NoSqlDBUtils.add(schemaTable.getField(joinColumnName), row, pk, joinColumnName); Set<Object> values = joinTableRecords.get(pk); for (Object childId : values) NoSqlDBUtils.add(schemaTable.getField(invJoinColumnName), row, childId, invJoinColumnName); NoSqlDBUtils.add(schemaTable.getField(JOIN_TABLE_PRIMARY_KEY_NAME), row, pk.toString() + SEPERATOR + childId.toString(), JOIN_TABLE_PRIMARY_KEY_NAME);
StatementResult result = tableAPI.executeSync(builder.toString()); if (!result.isSuccessful())
/** * Populate id. * * @param entityMetadata * the entity metadata * @param schemaTable * the schema table * @param entity * the entity * @param row * the row */ private void populateId(EntityMetadata entityMetadata, Table schemaTable, Object entity, Row row) { FieldDef fieldMetadata; FieldValue value; String idColumnName = ((AbstractAttribute) entityMetadata.getIdAttribute()).getJPAColumnName(); fieldMetadata = schemaTable.getField(idColumnName); value = row.get(idColumnName); NoSqlDBUtils.get(fieldMetadata, value, entity, (Field) entityMetadata.getIdAttribute().getJavaMember()); }
/** * Adds the ops. * * @param operations * the operations * @param schemaTable * the schema table * @param row * the row */ private void addOps(Map<Key, List<TableOperation>> operations, Table schemaTable, Row row) { Key key = ((TableImpl) schemaTable).createKey(row, false); TableOperation ops = tableAPI.getTableOperationFactory().createPut(row, Choice.NONE, true); if (operations.containsKey(key)) { operations.get(key).add(ops); } else { List<TableOperation> operation = new ArrayList<TableOperation>(); operation.add(ops); operations.put(key, operation); } }
@Override protected void validate(List<TableInfo> tableInfos) { for (TableInfo tableInfo : tableInfos) { try { if (tableAPI.getTable(tableInfo.getTableName()) == null) { logger.error("No table found for " + tableInfo.getTableName()); throw new SchemaGenerationException("No table found for " + tableInfo.getTableName()); } } catch (FaultException e) { logger.error("Error while getting table " + tableInfo.getTableName() + ". Caused By: ", e); throw new SchemaGenerationException(e, "Error while getting table " + tableInfo.getTableName() + ". Caused By: "); } } }
/** * Process discriminator columns. * * @param row * kv row object. * @param entityType * metamodel attribute. * @param schemaTable * the schema table */ private void addDiscriminatorColumn(Row row, EntityType entityType, Table schemaTable) { String discrColumn = ((AbstractManagedType) entityType).getDiscriminatorColumn(); String discrValue = ((AbstractManagedType) entityType).getDiscriminatorValue(); // No need to check for empty or blank, as considering it as valid name // for nosql! if (discrColumn != null && discrValue != null) { // Key // Key key = Key.createKey(majorKeyComponent, discrColumn); byte[] valueInBytes = PropertyAccessorHelper.getBytes(discrValue); NoSqlDBUtils.add(schemaTable.getField(discrColumn), row, discrValue, discrColumn); } }
tableAPI.execute(batch, null);
/** * On persist. * * @param entityMetadata * the entity metadata * @param entity * the entity * @param id * the id * @param rlHolders * the rl holders */ @Override protected void onPersist(EntityMetadata entityMetadata, Object entity, Object id, List<RelationHolder> rlHolders) { KunderaCoreUtils.printQuery( "Persist data into " + entityMetadata.getSchema() + "." + entityMetadata.getTableName() + " for " + id, showQuery); Row row = createRow(entityMetadata, entity, id, rlHolders); // TODO:: handle case for putDate?????? tableAPI.put(row, null, null); }
if (fieldMetadata != null && !value.isNull()) switch (fieldMetadata.getType()) PropertyAccessorHelper.set(entity, field, value.asString().get()); break; PropertyAccessorHelper.set(entity, field, value.asInteger().get()); break; PropertyAccessorHelper.set(entity, field, new Date(value.asLong().get())); PropertyAccessorHelper.set(entity, field, new java.sql.Date(value.asLong().get())); PropertyAccessorHelper.set(entity, field, new java.sql.Timestamp(value.asLong().get())); PropertyAccessorHelper.set(entity, field, new java.sql.Time(value.asLong().get())); PropertyAccessorHelper.set(entity, field, value.asLong().get()); PropertyAccessorHelper.set(entity, field, value.asDouble().get()); break; PropertyAccessorHelper.set(entity, field, value.asFloat().get()); break; PropertyAccessorHelper.set(entity, field, value.asBoolean().get()); break;
@Override public void dropSchema() { // dropping all the tables in the Oracle NoSQL store if (operation != null && operation.equalsIgnoreCase("create-drop")) { for (TableInfo tableInfo : tableInfos) { try { StatementResult result = tableAPI.executeSync("DROP TABLE IF EXISTS " + tableInfo.getTableName()); if (!result.isSuccessful()) { throw new SchemaGenerationException("Unable to DROP TABLE " + tableInfo.getTableName()); } } catch (IllegalArgumentException e) { logger.error("Invalid DROP TABLE Statement. Caused By: ", e); throw new SchemaGenerationException(e, "Invalid DROP TABLE Statement. Caused By: "); } catch (FaultException e) { logger.error("DROP TABLE Statement couldn't be executed. Caused By: ", e); throw new SchemaGenerationException(e, "Invalid DROP TABLE Statement is executed. Caused By: "); } } } }
/** * setter field. * * @param row * the row * @param schemaTable * the schema table * @param embeddedObject * the embedded object * @param embeddedAttrib * the embedded attrib */ private void setField(Row row, Table schemaTable, Object embeddedObject, Attribute embeddedAttrib) { Field field = (Field) embeddedAttrib.getJavaMember(); FieldDef fieldDef = schemaTable.getField(((AbstractAttribute) embeddedAttrib).getJPAColumnName()); Object valueObj = PropertyAccessorHelper.getObject(embeddedObject, field); if (valueObj != null) NoSqlDBUtils.add(fieldDef, row, valueObj, ((AbstractAttribute) embeddedAttrib).getJPAColumnName()); }
result = tableAPI.executeSync("DROP TABLE IF EXISTS " + tableInfo.getTableName()); if (!result.isSuccessful()) result = tableAPI.executeSync(statement); if (!result.isSuccessful())