@Override public int compare(RowKey key1, RowKey key2) { CompareToBuilder builder = new CompareToBuilder(); for (String name : sortFields) { builder.append(key1.getColumnValue(name), key2.getColumnValue(name)); } return builder.toComparison(); }
/** * Remove an association row * * @param executionEngine the {@link ExecutionEngine} used to run the query * @param associationKey represents the association * @param rowKey represents a row in an association */ public void removeAssociationRow( ExecutionEngine executionEngine, AssociationKey associationKey, RowKey rowKey) { Object[] relationshipValues; if (associationKey.getMetadata().getRowKeyIndexColumnNames().length > 0) { int length = associationKey.getMetadata().getRowKeyIndexColumnNames().length; relationshipValues = new Object[length]; String[] indexColumnNames = associationKey.getMetadata().getRowKeyIndexColumnNames(); for (int i = 0; i < indexColumnNames.length; i++) { for (int j = 0; j < rowKey.getColumnNames().length; j++) { if (indexColumnNames[i].equals(rowKey.getColumnNames()[j])) { relationshipValues[i] = rowKey.getColumnValues()[j]; } } } } else { relationshipValues = getEntityKey(associationKey, rowKey).getColumnValues(); } Object[] queryValues = ArrayHelper.concat(associationKey.getEntityKey().getColumnValues(), relationshipValues); executionEngine.execute(removeAssociationRowQuery, params(queryValues)); }
/** * Returns the entity key on the other side of association row represented by the given row key. * * <p><b>Note:</b> May only be invoked if the row key actually contains all the columns making up * that entity key. Specifically, it may <b>not</b> be invoked if the association has index * columns (maps, ordered collections), as the entity key columns will not be part of the row key * in this case. */ private EntityKey getEntityKey(AssociationKey associationKey, RowKey rowKey) { String[] associationKeyColumns = associationKey.getMetadata().getAssociatedEntityKeyMetadata().getAssociationKeyColumns(); Object[] columnValues = new Object[associationKeyColumns.length]; int i = 0; for (String associationKeyColumn : associationKeyColumns) { columnValues[i] = rowKey.getColumnValue(associationKeyColumn); i++; } EntityKeyMetadata entityKeyMetadata = associationKey.getMetadata().getAssociatedEntityKeyMetadata().getEntityKeyMetadata(); return new EntityKey(entityKeyMetadata, columnValues); }
public SerializableRowKey(RowKey key) { columnNames = key.getColumnNames(); columnValues = key.getColumnValues(); }