public OCompositeKey(final Object... keys) { this.keys = new ArrayList<Object>(keys.length); this.comparator = ODefaultComparator.INSTANCE; for (final Object key : keys) addKey(key); }
public OCompositeKey(final List<?> keys) { this.keys = new ArrayList<Object>(keys.size()); this.comparator = ODefaultComparator.INSTANCE; for (final Object key : keys) addKey(key); }
/** * Add new key value to the list of already registered values. * <p> * If passed in value is {@link OCompositeKey} itself then its values will be copied in current index. But key itself will not be * added. * * @param key Key to add. */ public void addKey(final Object key) { if (key instanceof OCompositeKey) { final OCompositeKey compositeKey = (OCompositeKey) key; for (final Object inKey : compositeKey.keys) { addKey(inKey); } } else { keys.add(key); } }
private OCompositeKey convertToCompositeKey(Object key) { final OCompositeKey compositeKey = new OCompositeKey(); int paramsIndex = 0; for (int i = 0; i < indexDefinitions.size(); i++) { final OIndexDefinition indexDefinition = indexDefinitions.get(i); if (i != multiValueIndex) { compositeKey.addKey(indexDefinition.createValue(params[paramsIndex])); paramsIndex++; } else compositeKey.addKey(((OIndexDefinitionMultiValue) indexDefinition).createSingleValue(key)); } return compositeKey; } }
for (final Object keyItem : collectionKey) { final OCompositeKey compositeKey = compositeKeys.get(compositeIndex); compositeKey.addKey(keyItem); firstKey.addKey(null); } else if (containsCollection) for (final OCompositeKey compositeKey : compositeKeys) compositeKey.addKey(keyValue); else firstKey.addKey(keyValue);
@SuppressWarnings("unchecked") @Override public Object transform(final Object obj) { final List<Object> keys; if (obj instanceof OCompositeKey) { final OCompositeKey compositeKey = (OCompositeKey) obj; keys = compositeKey.getKeys(); } else if (obj instanceof List) { keys = (List<Object>) obj; } else { throw new OIndexException("Impossible add as key of a CompositeIndex a value of type " + obj.getClass()); } final OCompositeKey transformedKey = new OCompositeKey(); final int size = Math.min(keys.size(), collates.size()); for (int i = 0; i < size; i++) { final Object key = keys.get(i); final OCollate collate = collates.get(i); transformedKey.addKey(collate.transform(key)); } for (int i = size; i < keys.size(); i++) transformedKey.addKey(keys.get(i)); return transformedKey; }
/** * {@inheritDoc} */ @Override public OCompositeKey deserializeFromByteBufferObject(ByteBuffer buffer) { final OCompositeKey compositeKey = new OCompositeKey(); buffer.position(buffer.position() + OIntegerSerializer.INT_SIZE); final int keysSize = buffer.getInt(); final OBinarySerializerFactory factory = OBinarySerializerFactory.getInstance(); for (int i = 0; i < keysSize; i++) { final byte serializerId = buffer.get(); @SuppressWarnings("unchecked") OBinarySerializer<Object> binarySerializer = (OBinarySerializer<Object>) factory.getObjectSerializer(serializerId); final Object key = binarySerializer.deserializeFromByteBufferObject(buffer); compositeKey.addKey(key); } return compositeKey; }
@Override public OCompositeKey preprocess(OCompositeKey value, Object... hints) { if (value == null) { return null; } final OType[] types = getKeyTypes(hints); final List<Object> keys = value.getKeys(); final OCompositeKey compositeKey = new OCompositeKey(); final OBinarySerializerFactory factory = OBinarySerializerFactory.getInstance(); for (int i = 0; i < keys.size(); i++) { Object key = keys.get(i); if (key != null) { final OType type; if (types.length > i) type = types[i]; else { type = OType.getTypeByClass(key.getClass()); } OBinarySerializer<Object> keySerializer = factory.getObjectSerializer(type); if (key instanceof Map && !(type == OType.EMBEDDEDMAP || type == OType.LINKMAP) && ((Map) key).size() == 1 && ((Map) key) .keySet().iterator().next().getClass().isAssignableFrom(type.getDefaultJavaType())) { key = ((Map) key).keySet().iterator().next(); } compositeKey.addKey(keySerializer.preprocess(key)); } else { compositeKey.addKey(key); } } return compositeKey; }
private K enhanceCompositeKey(final K key, final PartialSearchMode partialSearchMode) { if (!(key instanceof OCompositeKey)) { return key; } final OCompositeKey compositeKey = (OCompositeKey) key; if (!(keySize == 1 || compositeKey.getKeys().size() == keySize || partialSearchMode.equals(PartialSearchMode.NONE))) { final OCompositeKey fullKey = new OCompositeKey(compositeKey); final int itemsToAdd = keySize - fullKey.getKeys().size(); final Comparable<?> keyItem; if (partialSearchMode.equals(PartialSearchMode.HIGHEST_BOUNDARY)) { keyItem = ALWAYS_GREATER_KEY; } else { keyItem = ALWAYS_LESS_KEY; } for (int i = 0; i < itemsToAdd; i++) { fullKey.addKey(keyItem); } //noinspection unchecked return (K) fullKey; } return key; }
private K enhanceCompositeKey(final K key, final PartialSearchMode partialSearchMode) { if (!(key instanceof OCompositeKey)) { return key; } final OCompositeKey compositeKey = (OCompositeKey) key; if (!(keySize == 1 || compositeKey.getKeys().size() == keySize || partialSearchMode.equals(PartialSearchMode.NONE))) { final OCompositeKey fullKey = new OCompositeKey(compositeKey); final int itemsToAdd = keySize - fullKey.getKeys().size(); final Comparable<?> keyItem; if (partialSearchMode.equals(PartialSearchMode.HIGHEST_BOUNDARY)) { keyItem = ALWAYS_GREATER_KEY; } else { keyItem = ALWAYS_LESS_KEY; } for (int i = 0; i < itemsToAdd; i++) { fullKey.addKey(keyItem); } //noinspection unchecked return (K) fullKey; } return key; }
((OCompositeKey) key).addKey(conditions.get(keyName));
public OCompositeKey createSingleValue(final List<?> params) { final OCompositeKey compositeKey = new OCompositeKey(); int currentParamIndex = 0; for (final OIndexDefinition indexDefinition : indexDefinitions) { if (currentParamIndex + 1 > params.size()) break; final int endIndex; if (currentParamIndex + indexDefinition.getParamCount() > params.size()) endIndex = params.size(); else endIndex = currentParamIndex + indexDefinition.getParamCount(); final List<?> indexParams = params.subList(currentParamIndex, endIndex); currentParamIndex += indexDefinition.getParamCount(); final Object keyValue; if (indexDefinition instanceof OIndexDefinitionMultiValue) keyValue = ((OIndexDefinitionMultiValue) indexDefinition).createSingleValue(indexParams.toArray()); else keyValue = indexDefinition.createValue(indexParams); if (keyValue == null && isNullValuesIgnored()) return null; compositeKey.addKey(keyValue); } return compositeKey; }
private K enhanceCompositeKey(final K key, final PartialSearchMode partialSearchMode) { if (!(key instanceof OCompositeKey)) { return key; } final OCompositeKey compositeKey = (OCompositeKey) key; if (!(keySize == 1 || compositeKey.getKeys().size() == keySize || partialSearchMode.equals(PartialSearchMode.NONE))) { final OCompositeKey fullKey = new OCompositeKey(compositeKey); final int itemsToAdd = keySize - fullKey.getKeys().size(); final Comparable<?> keyItem; if (partialSearchMode.equals(PartialSearchMode.HIGHEST_BOUNDARY)) { keyItem = ALWAYS_GREATER_KEY; } else { keyItem = ALWAYS_LESS_KEY; } for (int i = 0; i < itemsToAdd; i++) { fullKey.addKey(keyItem); } //noinspection unchecked return (K) fullKey; } return key; }
protected Object enhanceCompositeKey(Object key, PartialSearchMode partialSearchMode) { if (!(key instanceof OCompositeKey)) return key; final OCompositeKey compositeKey = (OCompositeKey) key; final int keySize = getDefinition().getParamCount(); if (!(keySize == 1 || compositeKey.getKeys().size() == keySize || partialSearchMode.equals(PartialSearchMode.NONE))) { final OCompositeKey fullKey = new OCompositeKey(compositeKey); int itemsToAdd = keySize - fullKey.getKeys().size(); final Comparable<?> keyItem; if (partialSearchMode.equals(PartialSearchMode.HIGHEST_BOUNDARY)) keyItem = ALWAYS_GREATER_KEY; else keyItem = ALWAYS_LESS_KEY; for (int i = 0; i < itemsToAdd; i++) fullKey.addKey(keyItem); return fullKey; } return key; }
for (int i = 0; i < nMatchingKeys; i++) { Object keyValue = convert(conditions.get(definitionFields.get(i)), definition.getTypes()[i]); ((OCompositeKey) key).addKey(keyValue);
public Object createValue(final Object... params) { if (params == null || params.length == 0) return null; if (keyTypes.length == 1) return OType.convert(params[0], keyTypes[0].getDefaultJavaType()); final OCompositeKey compositeKey = new OCompositeKey(); for (int i = 0; i < params.length; ++i) { final Comparable<?> paramValue = (Comparable<?>) OType.convert(params[i], keyTypes[i].getDefaultJavaType()); if (paramValue == null) return null; compositeKey.addKey(paramValue); } return compositeKey; }
public OCompositeKey deserializeNativeObject(byte[] stream, int startPosition) { final OCompositeKey compositeKey = new OCompositeKey(); startPosition += OIntegerSerializer.INT_SIZE; final int keysSize = OIntegerSerializer.INSTANCE.deserializeNative(stream, startPosition); startPosition += OIntegerSerializer.INSTANCE.getObjectSize(keysSize); final OBinarySerializerFactory factory = OBinarySerializerFactory.getInstance(); for (int i = 0; i < keysSize; i++) { final byte serializerId = stream[startPosition]; startPosition += OBinarySerializerFactory.TYPE_IDENTIFIER_SIZE; @SuppressWarnings("unchecked") OBinarySerializer<Object> binarySerializer = (OBinarySerializer<Object>) factory.getObjectSerializer(serializerId); final Object key = binarySerializer.deserializeNativeObject(stream, startPosition); compositeKey.addKey(key); startPosition += binarySerializer.getObjectSize(key); } return compositeKey; }
@SuppressWarnings("unchecked") public OCompositeKey deserialize(byte[] stream, int startPosition) { final OCompositeKey compositeKey = new OCompositeKey(); startPosition += OIntegerSerializer.INT_SIZE; final int keysSize = OIntegerSerializer.INSTANCE.deserializeLiteral(stream, startPosition); startPosition += OIntegerSerializer.INSTANCE.getObjectSize(keysSize); final OBinarySerializerFactory factory = OBinarySerializerFactory.getInstance(); for (int i = 0; i < keysSize; i++) { final byte serializerId = stream[startPosition]; startPosition += OBinarySerializerFactory.TYPE_IDENTIFIER_SIZE; OBinarySerializer<Object> binarySerializer = (OBinarySerializer<Object>) factory.getObjectSerializer(serializerId); final Object key = binarySerializer.deserialize(stream, startPosition); compositeKey.addKey(key); startPosition += binarySerializer.getObjectSize(key); } return compositeKey; }
/** * {@inheritDoc} */ @Override public OCompositeKey deserializeFromByteBufferObject(ByteBuffer buffer, OWALChanges walChanges, int offset) { final OCompositeKey compositeKey = new OCompositeKey(); offset += OIntegerSerializer.INT_SIZE; final int keysSize = walChanges.getIntValue(buffer, offset); offset += OIntegerSerializer.INT_SIZE; final OBinarySerializerFactory factory = OBinarySerializerFactory.getInstance(); for (int i = 0; i < keysSize; i++) { final byte serializerId = walChanges.getByteValue(buffer, offset); offset += OBinarySerializerFactory.TYPE_IDENTIFIER_SIZE; @SuppressWarnings("unchecked") OBinarySerializer<Object> binarySerializer = (OBinarySerializer<Object>) factory.getObjectSerializer(serializerId); final Object key = binarySerializer.deserializeFromByteBufferObject(buffer, walChanges, offset); compositeKey.addKey(key); offset += binarySerializer.getObjectSize(key); } return compositeKey; }