@Override public Collection<OIndex<?>> getAllIndexes() { return delegate.getAllIndexes(); }
public boolean isIndexChain(OCommandContext ctx, OClass clazz) { if (suffix != null && suffix.isBaseIdentifier()) { OProperty prop = clazz.getProperty(suffix.identifier.getStringValue()); if (prop == null) { return false; } Collection<OIndex<?>> allIndexes = prop.getAllIndexes(); return allIndexes != null && allIndexes.stream().anyMatch(idx -> idx.getDefinition().getFields().size() == 1); } return false; } }
public boolean isIndexChain(OCommandContext ctx, OClass clazz) { if (suffix != null && suffix.isBaseIdentifier()) { OProperty prop = clazz.getProperty(suffix.identifier.getStringValue()); if (prop != null && prop.getAllIndexes().stream().anyMatch(idx -> idx.getDefinition().getFields().size() == 1)) { if (next != null) { OClass linkedClazz = prop.getLinkedClass(); return next.isIndexChain(ctx, linkedClazz); } return true; } } return false; } }
private OClass createOrUpdateORoleClass(final ODatabaseDocument database, OClass identityClass) { OClass roleClass = database.getMetadata().getSchema().getClass("ORole"); boolean unsafe = false; if (roleClass == null) { roleClass = database.getMetadata().getSchema().createClass("ORole", identityClass); unsafe = true; } else if (!roleClass.getSuperClasses().contains(identityClass)) // MIGRATE AUTOMATICALLY TO 1.2.0 roleClass.setSuperClasses(Arrays.asList(identityClass)); if (!roleClass.existsProperty("name")) { roleClass.createProperty("name", OType.STRING, (OType) null, unsafe).setMandatory(true).setNotNull(true).setCollate("ci"); roleClass.createIndex("ORole.name", INDEX_TYPE.UNIQUE, ONullOutputListener.INSTANCE, "name"); } else { final OProperty name = roleClass.getProperty("name"); if (name.getAllIndexes().isEmpty()) roleClass.createIndex("ORole.name", INDEX_TYPE.UNIQUE, ONullOutputListener.INSTANCE, "name"); } if (!roleClass.existsProperty("mode")) roleClass.createProperty("mode", OType.BYTE, (OType) null, unsafe); if (!roleClass.existsProperty("rules")) roleClass.createProperty("rules", OType.EMBEDDEDMAP, OType.BYTE, unsafe); if (!roleClass.existsProperty("inheritedRole")) roleClass.createProperty("inheritedRole", OType.LINK, roleClass, unsafe); return roleClass; }
protected void init(final ODatabaseDocument db) { if (db.getMetadata().getSchema().existsClass("OFunction")) { final OClass f = db.getMetadata().getSchema().getClass("OFunction"); OProperty prop = f.getProperty("name"); if (prop.getAllIndexes().isEmpty()) prop.createIndex(OClass.INDEX_TYPE.UNIQUE_HASH_INDEX); return; } final OClass f = db.getMetadata().getSchema().createClass("OFunction"); OProperty prop = f.createProperty("name", OType.STRING, (OType) null, true); prop.createIndex(OClass.INDEX_TYPE.UNIQUE_HASH_INDEX); f.createProperty("code", OType.STRING, (OType) null, true); f.createProperty("language", OType.STRING, (OType) null, true); f.createProperty("idempotent", OType.BOOLEAN, (OType) null, true); f.createProperty("parameters", OType.EMBEDDEDLIST, OType.STRING, true); }
OProperty property = newClass.createProperty("name", OType.STRING); OIndex<?> newIndex = OIndexPrototyper.newPrototype("NewClass", Arrays.asList("name")); assertTrue(property.getAllIndexes().size()==0); PropertyResolver.setValue("type", newIndex, "notunique", null); assertNotNull(newIndex.getDefinition()); assertTrue(newIndex instanceof IPrototype); OIndex<?> realizedNewIndex = ((IPrototype<OIndex<?>>)newIndex).realizePrototype(); assertEquals(1, property.getAllIndexes().size()); assertEquals(1, newClass.getIndexes().size()); newIndex = OIndexPrototyper.newPrototype("NewClass", Arrays.asList("description")); PropertyResolver.setValue("type", newIndex, "notunique", null); assertEquals(0, property.getAllIndexes().size()); PropertyResolver.setValue("algorithm", newIndex, ODefaultIndexFactory.SBTREE_ALGORITHM, null); ODocument metadata = new ODocument(); PropertyResolver.setValue("metadata", newIndex, metadata, null); realizedNewIndex = ((IPrototype<OIndex<?>>)newIndex).realizePrototype(); assertEquals(1, property.getAllIndexes().size()); assertEquals(2, newClass.getIndexes().size()); assertEquals("test123", realizedNewIndex.getMetadata().field("test"));
private void createOrUpdateOUserClass(final ODatabaseDocument database, OClass identityClass, OClass roleClass) { boolean unsafe = false; OClass userClass = database.getMetadata().getSchema().getClass("OUser"); if (userClass == null) { userClass = database.getMetadata().getSchema().createClass("OUser", identityClass); unsafe = true; } else if (!userClass.getSuperClasses().contains(identityClass)) // MIGRATE AUTOMATICALLY TO 1.2.0 userClass.setSuperClasses(Arrays.asList(identityClass)); if (!userClass.existsProperty("name")) { ((OClassImpl) userClass).createProperty("name", OType.STRING, (OType) null, unsafe).setMandatory(true).setNotNull(true) .setCollate("ci").setMin("1").setRegexp("\\S+(.*\\S+)*"); userClass.createIndex("OUser.name", INDEX_TYPE.UNIQUE, ONullOutputListener.INSTANCE, "name"); } else { final OProperty name = userClass.getProperty("name"); if (name.getAllIndexes().isEmpty()) userClass.createIndex("OUser.name", INDEX_TYPE.UNIQUE, ONullOutputListener.INSTANCE, "name"); } if (!userClass.existsProperty(OUser.PASSWORD_FIELD)) userClass.createProperty(OUser.PASSWORD_FIELD, OType.STRING, (OType) null, unsafe).setMandatory(true).setNotNull(true); if (!userClass.existsProperty("roles")) userClass.createProperty("roles", OType.LINKSET, roleClass, unsafe); if (!userClass.existsProperty("status")) userClass.createProperty("status", OType.STRING, (OType) null, unsafe).setMandatory(true).setNotNull(true); }
private static RecordType getRecordType(OClass oClass) { RecordType type = new RecordType(oClass.getName()); for (OProperty oProperty : oClass.properties()) { OType oType = oProperty.getType(); Class javaType = oType.getDefaultJavaType(); if (oType == OType.LINK) { javaType = RecordId.class; } FieldDefinition field = new FieldDefinition(oProperty.getName(), javaType); field.withNotNull(oProperty.isNotNull()); for (OIndex oIndex : oProperty.getAllIndexes()) { OIndexDefinition def = oIndex.getDefinition(); if (def.isAutomatic() && def.getFields().size() == 1) { boolean unique = oIndex.getType().equalsIgnoreCase(INDEX_TYPE.UNIQUE.name()); field.withIndexed(true).withUnique(unique); } } type.withField(field); } type.withStrict(oClass.isStrictMode()); OClass oSuperClass = oClass.getSuperClass(); if (oSuperClass != null) { type.withSuperType(getRecordType(oSuperClass)); } type.withAbstract(oClass.isAbstract()); return type; }
final Collection<OIndex<?>> indexes = prop.getAllIndexes(); if (!indexes.isEmpty()) { message("\n\nINDEXES (" + indexes.size() + " altogether)");