/** * {@inheritDoc} */ public Object getDocumentValueToIndex(final ODocument iDocument) { final List<OCompositeKey> compositeKeys = new ArrayList<OCompositeKey>(10); final OCompositeKey firstKey = new OCompositeKey(); boolean containsCollection = false; compositeKeys.add(firstKey); for (final OIndexDefinition indexDefinition : indexDefinitions) { final Object result = indexDefinition.getDocumentValueToIndex(iDocument); if (result == null && isNullValuesIgnored()) return null; //for empty collections we add null key in index if (result instanceof Collection && ((Collection) result).isEmpty() && isNullValuesIgnored()) return null; containsCollection = addKey(firstKey, compositeKeys, containsCollection, result); } if (!containsCollection) return firstKey; return compositeKeys; }
@Override protected void serializeToStream() { super.serializeToStream(); final List<ODocument> inds = new ArrayList<ODocument>(indexDefinitions.size()); final List<String> indClasses = new ArrayList<String>(indexDefinitions.size()); document.field("className", className); for (final OIndexDefinition indexDefinition : indexDefinitions) { final ODocument indexDocument = indexDefinition.toStream(); inds.add(indexDocument); indClasses.add(indexDefinition.getClass().getName()); } document.field("indexDefinitions", inds, OType.EMBEDDEDLIST); document.field("indClasses", indClasses, OType.EMBEDDEDLIST); document.field("nullValuesIgnored", isNullValuesIgnored()); }
if (keyValue == null && isNullValuesIgnored()) return null; if (keyValue instanceof Collection && ((Collection) keyValue).isEmpty() && isNullValuesIgnored()) return null;
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; }
final Object newValue = indexDefinition.getDocumentValueToIndex(iRecord); if (!indexDefinition.isNullValuesIgnored() || origValue != null) addRemove(changes, index, origValue, iRecord); if (!indexDefinition.isNullValuesIgnored() || newValue != null) addPut(changes, index, newValue, iRecord.getIdentity()); } else { if (dirtyFields.size() == 1 && indexDefinition.isNullValuesIgnored()) { final Map<OCompositeKey, Integer> keysToAdd = new HashMap<>(); final Map<OCompositeKey, Integer> keysToRemove = new HashMap<>();