@Override public Set<OIndex<?>> getInvolvedIndexes(final Collection<String> fields) { return delegate.getInvolvedIndexes(fields); }
@Override public Set<OIndex<?>> getIndexes() { return owner.getInvolvedIndexes(name); }
@Override public Set<OIndex<?>> getInvolvedIndexes(final String... fields) { return delegate.getInvolvedIndexes(fields); }
@Override public OIndex<?> getIndex() { Set<OIndex<?>> indexes = owner.getInvolvedIndexes(name); if (indexes != null && !indexes.isEmpty()) return indexes.iterator().next(); return null; }
public List<OIndex<?>> getInvolvedIndexes(OClass iSchemaClass, OIndexSearchResult searchResultFields) { final Set<OIndex<?>> involvedIndexes = iSchemaClass.getInvolvedIndexes(searchResultFields.fields()); final List<OIndex<?>> result = new ArrayList<OIndex<?>>(involvedIndexes.size()); if (searchResultFields.lastField.isLong()) { result.addAll(OChainedIndexProxy.createProxies(iSchemaClass, searchResultFields.lastField)); } else { for (OIndex<?> involvedIndex : involvedIndexes) { result.add(involvedIndex); } } return result; }
private static Collection<OIndex<?>> prepareLastIndexVariants(OClass iSchemaClass, OSQLFilterItemField.FieldChain fieldChain) { OClass oClass = iSchemaClass; final Collection<OIndex<?>> result = new ArrayList<OIndex<?>>(); for (int i = 0; i < fieldChain.getItemCount() - 1; i++) { oClass = oClass.getProperty(fieldChain.getItemName(i)).getLinkedClass(); if (oClass == null) { return result; } } final Set<OIndex<?>> involvedIndexes = new TreeSet<OIndex<?>>(new Comparator<OIndex<?>>() { public int compare(OIndex<?> o1, OIndex<?> o2) { return o1.getDefinition().getParamCount() - o2.getDefinition().getParamCount(); } }); involvedIndexes.addAll(oClass.getInvolvedIndexes(fieldChain.getItemName(fieldChain.getItemCount() - 1))); final Collection<Class<? extends OIndex>> indexTypes = new HashSet<Class<? extends OIndex>>(3); for (OIndex<?> involvedIndex : involvedIndexes) { if (!indexTypes.contains(involvedIndex.getInternal().getClass())) { result.add(involvedIndex); indexTypes.add(involvedIndex.getInternal().getClass()); } } return result; }
private static List<OIndex<?>> prepareBaseIndexes(OClass iSchemaClass, OSQLFilterItemField.FieldChain fieldChain) { List<OIndex<?>> result = new ArrayList<OIndex<?>>(fieldChain.getItemCount() - 1); OClass oClass = iSchemaClass; for (int i = 0; i < fieldChain.getItemCount() - 1; i++) { final Set<OIndex<?>> involvedIndexes = oClass.getInvolvedIndexes(fieldChain.getItemName(i)); final OIndex<?> bestIndex = findBestIndex(involvedIndexes); if (bestIndex == null) return null; result.add(bestIndex); oClass = oClass.getProperty(fieldChain.getItemName(i)).getLinkedClass(); } return result; }
@Override public Object execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iParams, OCommandContext iContext) { String clazz = (String) iParams[0]; String latField = (String) iParams[1]; String lngField = (String) iParams[2]; ODatabaseDocument databaseRecord = ODatabaseRecordThreadLocal.INSTANCE.get(); Set<OIndex<?>> indexes = databaseRecord.getMetadata().getSchema().getClass(clazz).getInvolvedIndexes(latField, lngField); for (OIndex i : indexes) { if (OClass.INDEX_TYPE.SPATIAL.toString().equals(i.getInternal().getType())) { List<Object> params = new ArrayList<Object>(); params.add(iParams[3]); params.add(iParams[4]); double distance = iParams.length > 5 ? ((Number) iParams[5]).doubleValue() : 0; Object ret = i.get(new OSpatialCompositeKey(params).setMaxDistance(distance)); if (ret instanceof Collection) { if (context == null) context = new HashSet<Object>(); context.addAll((Collection<?>) ret); } return ret; } } return null; }
return null; Set<OIndex<?>> indexes = edgeClass.getInvolvedIndexes("in", "out"); if (indexes == null || indexes.size() == 0) { return null;
return null; Set<OIndex<?>> indexes = edgeClass.getInvolvedIndexes("out", "in"); if (indexes == null || indexes.size() == 0) { return null;
return null; Set<OIndex<?>> indexes = edgeClass.getInvolvedIndexes("out", "in"); if (indexes == null || indexes.size() == 0) { return null;
return null; Set<OIndex<?>> indexes = edgeClass.getInvolvedIndexes("in", "out"); if (indexes == null || indexes.size() == 0) { return null;
final OClass clazz = getDatabase().getMetadata().getImmutableSchemaSnapshot().getClass(label); if (clazz != null) { Set<OIndex<?>> indexes = clazz.getInvolvedIndexes(Arrays.asList(iKey)); Iterator<OIndex<?>> iterator = indexes.iterator(); while (iterator.hasNext()) {
if (cls != null) for (OProperty p : cls.properties()) { if (p.isMandatory() || p.isNotNull() || !p.getOwnerClass().getInvolvedIndexes(p.getName()).isEmpty()) return false;
final Set<OIndex<?>> indexes = iSchemaClass.getInvolvedIndexes(fieldNames);
protected OLuceneFullTextIndex involvedIndex(OIdentifiable iRecord, ODocument iCurrentResult, OSQLFilterCondition iCondition, Object iLeft, Object iRight) { ODocument doc = iRecord.getRecord(); OClass cls = getDatabase().getMetadata().getSchema().getClass(doc.getClassName()); if (isChained(iCondition.getLeft())) { OSQLFilterItemField chained = (OSQLFilterItemField) iCondition.getLeft(); OSQLFilterItemField.FieldChain fieldChain = chained.getFieldChain(); OClass oClass = cls; for (int i = 0; i < fieldChain.getItemCount() - 1; i++) { oClass = oClass.getProperty(fieldChain.getItemName(i)).getLinkedClass(); } if (oClass != null) { cls = oClass; } } Set<OIndex<?>> classInvolvedIndexes = cls.getInvolvedIndexes(fields(iCondition)); OLuceneFullTextIndex idx = null; for (OIndex<?> classInvolvedIndex : classInvolvedIndexes) { if (classInvolvedIndex.getInternal() instanceof OLuceneFullTextIndex) { idx = (OLuceneFullTextIndex) classInvolvedIndex.getInternal(); break; } } return idx; }
public void load() { final OClass userClass = getDatabase().getMetadata().getSchema().getClass("OUser"); if (userClass != null) { // @COMPATIBILITY <1.3.0 if (!userClass.existsProperty("status")) { userClass.createProperty("status", OType.STRING).setMandatory(true).setNotNull(true); } OProperty p = userClass.getProperty("name"); if (p == null) p = userClass.createProperty("name", OType.STRING).setMandatory(true).setNotNull(true).setMin("1") .setRegexp("\\S+(.*\\S+)*"); if (userClass.getInvolvedIndexes("name") == null) p.createIndex(INDEX_TYPE.UNIQUE); // ROLE final OClass roleClass = getDatabase().getMetadata().getSchema().getClass("ORole"); final OProperty rules = roleClass.getProperty("rules"); if (rules != null && !OType.EMBEDDEDMAP.equals(rules.getType())) { roleClass.dropProperty("rules"); } if (!roleClass.existsProperty("inheritedRole")) { roleClass.createProperty("inheritedRole", OType.LINK, roleClass); } p = roleClass.getProperty("name"); if (p == null) p = roleClass.createProperty("name", OType.STRING).setMandatory(true).setNotNull(true); if (roleClass.getInvolvedIndexes("name") == null) p.createIndex(INDEX_TYPE.UNIQUE); } }