protected ORecordIteratorClass(final ODatabaseDocumentInternal database, OClass targetClass, boolean polymorphic) { super(database, targetClass.getPolymorphicClusterIds()); this.targetClass = targetClass; this.polymorphic = polymorphic; }
@Override public int[] getPolymorphicClusterIds() { return delegate.getPolymorphicClusterIds(); }
@Override public Set<OClass> getClassesRelyOnCluster(String clusterName) { getDatabase().checkSecurity(ORule.ResourceGeneric.SCHEMA, ORole.PERMISSION_READ); final int clusterId = getDatabase().getClusterIdByName(clusterName); final Set<OClass> result = new HashSet<OClass>(); for (OClass c : classes.values()) { if (OArrays.contains(c.getPolymorphicClusterIds(), clusterId)) result.add(c); } return result; }
public Set<OClass> getClassesRelyOnCluster(ODatabaseDocumentInternal database, final String clusterName) { database.checkSecurity(ORule.ResourceGeneric.SCHEMA, ORole.PERMISSION_READ); acquireSchemaReadLock(); try { final int clusterId = database.getClusterIdByName(clusterName); final Set<OClass> result = new HashSet<OClass>(); for (OClass c : classes.values()) { if (OArrays.contains(c.getPolymorphicClusterIds(), clusterId)) result.add(c); } return result; } finally { releaseSchemaReadLock(); } }
@Deprecated public ORecordIteratorClass(final ODatabaseDocumentInternal iDatabase, final String iClassName, final boolean iPolymorphic, final OStorage.LOCKING_STRATEGY iLockingStrategy) { super(iDatabase, iLockingStrategy); targetClass = ((OMetadataInternal) database.getMetadata()).getImmutableSchemaSnapshot().getClass(iClassName); if (targetClass == null) throw new IllegalArgumentException("Class '" + iClassName + "' was not found in database schema"); polymorphic = iPolymorphic; clusterIds = polymorphic ? targetClass.getPolymorphicClusterIds() : targetClass.getClusterIds(); clusterIds = OClassImpl.readableClusters(iDatabase, clusterIds); checkForSystemClusters(iDatabase, clusterIds); Arrays.sort(clusterIds); config(); }
protected Set<String> getInvolvedClustersOfClasses(final Collection<String> iClassNames) { final ODatabaseDocument db = getDatabase(); final Set<String> clusters = new HashSet<String>(); for (String clazz : iClassNames) { final OClass cls = ((OMetadataInternal) db.getMetadata()).getImmutableSchemaSnapshot().getClass(clazz); if (cls != null) for (int clId : cls.getPolymorphicClusterIds()) { // FILTER THE CLUSTER WHERE THE USER HAS THE RIGHT ACCESS if (clId > -1 && checkClusterAccess(db, db.getClusterNameById(clId))) clusters.add(db.getClusterNameById(clId).toLowerCase(Locale.ENGLISH)); } } return clusters; }
public OIndex build(final ODatabaseDocumentTx db) { checkState(!propertyNames.isEmpty(), "At least one property is required"); checkState(propertyTypes.size() == propertyNames.size(), "A type must be defined for each property"); List<OCollate> collates = null; if (caseInsensitive) { collates = Lists.transform(propertyNames, n -> new OCaseInsensitiveCollate()); } ODocument metadata = new ODocument(); if (ignoreNullValues) { metadata.field("ignoreNullValues", true); } OIndexDefinition indexDefinition = OIndexDefinitionFactory.createIndexDefinition(type, propertyNames, propertyTypes, collates, indexType.name(), null); return db.getMetadata().getIndexManager().createIndex(name, indexType.name(), indexDefinition, type.getPolymorphicClusterIds(), null, metadata.fields() > 0 ? metadata : null); } }
throw new OCommandExecutionException("Class not found: " + className); for (int clusterId : clazz.getPolymorphicClusterIds()) { targetClusterNames.add(db.getClusterNameById(clusterId));
private OIndex<?> getoIndex(OClass oClass, String[] fields, String engine, ODatabase database, List<OCollate> collatesList, ODocument metadataDoc) { OIndex<?> idx; if ((keyTypes == null || keyTypes.size() == 0) && collatesList == null) { idx = oClass.createIndex(name.getValue(), type.getStringValue(), null, metadataDoc, engine, fields); } else { final List<OType> fieldTypeList; if (keyTypes == null || keyTypes.size() == 0 && fields.length > 0) { for (final String fieldName : fields) { if (!fieldName.equals("@rid") && !oClass.existsProperty(fieldName)) throw new OIndexException( "Index with name : '" + name.getValue() + "' cannot be created on class : '" + oClass.getName() + "' because field: '" + fieldName + "' is absent in class definition."); } fieldTypeList = ((OClassImpl) oClass).extractFieldTypes(fields); } else fieldTypeList = keyTypes.stream().map(x -> OType.valueOf(x.getStringValue())).collect(Collectors.toList()); final OIndexDefinition idxDef = OIndexDefinitionFactory .createIndexDefinition(oClass, Arrays.asList(fields), fieldTypeList, collatesList, type.getStringValue(), null); idx = database.getMetadata().getIndexManager() .createIndex(name.getValue(), type.getStringValue(), idxDef, oClass.getPolymorphicClusterIds(), null, metadataDoc, engine); } return idx; }
public OImmutableClass(final OClass oClass, final OImmutableSchema schema) { isAbstract = oClass.isAbstract(); strictMode = oClass.isStrictMode(); this.schema = schema; superClassesNames = oClass.getSuperClassesNames(); superClasses = new ArrayList<OImmutableClass>(superClassesNames.size()); name = oClass.getName(); streamAbleName = oClass.getStreamableName(); clusterSelection = oClass.getClusterSelection(); defaultClusterId = oClass.getDefaultClusterId(); clusterIds = oClass.getClusterIds(); polymorphicClusterIds = oClass.getPolymorphicClusterIds(); baseClassesNames = new ArrayList<String>(); for (OClass baseClass : oClass.getSubclasses()) baseClassesNames.add(baseClass.getName()); overSize = oClass.getOverSize(); classOverSize = oClass.getClassOverSize(); shortName = oClass.getShortName(); properties = new HashMap<String, OProperty>(); for (OProperty p : oClass.declaredProperties()) properties.put(p.getName(), new OImmutableProperty(p, this)); Map<String, String> customFields = new HashMap<String, String>(); for (String key : oClass.getCustomKeys()) customFields.put(key, oClass.getCustom(key)); this.customFields = Collections.unmodifiableMap(customFields); this.description = oClass.getDescription(); }
throw new OCommandExecutionException("Class " + className + " not found"); int[] classClusters = clazz.getPolymorphicClusterIds(); List<Integer> filteredClassClusters = new ArrayList<>(); for (int clusterId : classClusters) {
indexDefinition.setCollate(collate); db.getMetadata().getIndexManager() .createIndex(className + "." + key, indexType, indexDefinition, cls.getPolymorphicClusterIds(), null, metadata); return null;
private void checkIndex(OIndex index) { List<String> fields = index.getDefinition().getFields(); String className = index.getDefinition().getClassName(); OClass clazz = database.getMetadata().getSchema().getClass(className); int[] clusterIds = clazz.getPolymorphicClusterIds(); for (int clusterId : clusterIds) { checkCluster(clusterId, index, fields); } }
.createIndex(className + "." + key, indexType, new OPropertyIndexDefinition(className, key, keyType), cls.getPolymorphicClusterIds(), null);
@Override public OClass call(final OrientGraph g) { String indexType = configuration.getString("type"); OType keyType = (OType) configuration.getProperty("keytype"); String collate = configuration.getString("collate"); ODocument metadata = (ODocument) configuration.getProperty("metadata"); final ODatabaseDocument db = getRawDatabase(); final OSchema schema = db.getMetadata().getSchema(); final OClass cls = schema.getClass(className); final OProperty property = cls.getProperty(key); if (property != null) keyType = property.getType(); OPropertyIndexDefinition indexDefinition = new OPropertyIndexDefinition(className, key, keyType); if (collate != null) indexDefinition.setCollate(collate); db.getMetadata().getIndexManager() .createIndex(className + "." + key, indexType, indexDefinition, cls.getPolymorphicClusterIds(), null, metadata); return null; } };
for (OClass superClass : superClasses) { final int[] clustersToIndex = superClass.getPolymorphicClusterIds(); final String[] clusterNames = new String[clustersToIndex.length]; for (int i = 0; i < clustersToIndex.length; i++)
return null; int[] clusterIds = clazz.getPolymorphicClusterIds(); for (int clusterId : clusterIds) { String clusterName = db.getClusterNameById(clusterId);
for (int clust : clazz.getPolymorphicClusterIds()) { if (clust == clusterId) { found = true;
.createIndex(indexName, indexType.name(), idxDef, oClass.getPolymorphicClusterIds(), null, metadataDoc, engine);