public static void setRestricted(ODatabaseDocument db, OClass oClass) { OClass restricted = db.getMetadata().getSchema().getClass("ORestricted"); if (!oClass.isSubClassOf(restricted)) { oClass.addSuperClass(restricted); Collection<OProperty> properties = restricted.properties(); oClass.properties().stream() .filter(p -> !properties.contains(p)) .filter(p -> !(boolean) CustomAttribute.HIDDEN.getValue(p)) .forEach(p -> CustomAttribute.DISPLAYABLE.setValue(p, true)); } }
private void createSignatureType(OSchema schema) { OClass signatures = schema.createClass("Signatures"); signatures.createProperty(String.valueOf(DocumentAttributes.SHA1), OType.STRING).setNotNull(true); signatures.createIndex("sha1Idx", OClass.INDEX_TYPE.UNIQUE, DocumentAttributes.SHA1.toString()); }
public final void updateSchema() { if (db.isClosed()) { db.create(); } OSchema schema = db.getMetadata().getSchema(); for (String docType : DocumentTypes.getDocumentTypes()) { if (!schema.existsClass(docType)) { createDocType(schema, docType); } } if (!schema.existsClass("Signatures")) { createSignatureType(schema); } }
private void addSuperClassesToOClass(OSchema schema, OClass oClass, List<String> superClassNames) { if (superClassNames != null && !superClassNames.isEmpty()) { List<OClass> superClasses = Lists.newArrayList(); for (String architectSuperClass : superClassNames) { if (schema.existsClass(architectSuperClass)) { OClass superClass = schema.getClass(architectSuperClass); superClasses.add(superClass); } } oClass.setSuperClasses(superClasses); } }
protected void checkClass(ODatabaseDocumentInternal database) { if (_className == null) fetchClassName(); final OSchema immutableSchema = database.getMetadata().getImmutableSchemaSnapshot(); if (immutableSchema == null) return; if (_immutableClazz == null) { _immutableSchemaVersion = immutableSchema.getVersion(); _immutableClazz = (OImmutableClass) immutableSchema.getClass(_className); } else { if (_immutableSchemaVersion < immutableSchema.getVersion()) { _immutableSchemaVersion = immutableSchema.getVersion(); _immutableClazz = (OImmutableClass) immutableSchema.getClass(_className); } } }
@Override public void onUninstall(OrienteerWebApplication app, ODatabaseDocument db) { OSchema schema = app.getDatabase().getMetadata().getSchema(); if(schema.existsClass(OCLASS_LOCALIZATION)) schema.dropClass(OCLASS_LOCALIZATION); }
@Before public void init() { doc = DBClosure.sudo(db -> { OSchema schema = db.getMetadata().getSchema(); OClass test = schema.createClass("Customer"); test.createProperty("name", OType.STRING); test.createProperty("phone", OType.STRING); ODocument document = new ODocument("Customer"); document.field("name", "Test Name"); document.save(); return document; }); }
@Ignore //TODO: Uncomment when OrientDB issue will be fixed: https://github.com/orientechnologies/orientdb/issues/8067 @Test public void testLinkToOUser() { ODatabaseDocument db = wicket.getTester().getDatabase(); OSchema schema = db.getMetadata().getSchema(); final OClass classA = schema.createClass("TestLinkToOUser"); classA.createProperty("name", OType.STRING); classA.createProperty("user", OType.LINK).setLinkedClass(schema.getClass("OUser")); ORID userRid = new ORecordId("#5:0"); ODocument doc = new ODocument(classA); wicket.getTester().signIn("writer", "writer"); db = wicket.getTester().getDatabase(); db.begin(); ODocument userDoc = userRid.getRecord(); userDoc.field("roles"); doc.field("Admin"); doc.field("user", userDoc); doc.save(); db.commit(); } }
private void convertNameProperty(OrienteerWebApplication app, ODatabaseDocument db, String className) { boolean wasInTransacton = db.getTransaction().isActive(); db.commit(); for(ODocument doc : db.browseClass(className)) { Object value = doc.field("name"); if(value instanceof String) { doc.field("temp", (Object) doc.field("name")); doc.field("name", (String) null); doc.save(); } } OClass oClass = db.getMetadata().getSchema().getClass(className); oClass.dropProperty("name"); OProperty nameProperty = oClass.createProperty("name", OType.EMBEDDEDMAP); CustomAttribute.VISUALIZATION_TYPE.setValue(nameProperty, "localization"); for(ODocument doc : db.browseClass(className)) { if(doc.containsField("temp")) { doc.field("name", CommonUtils.toMap("en", doc.field("temp"))); doc.removeField("temp"); doc.save(); } } if(wasInTransacton) db.begin(); }
@Test @Sudo public void testCallbackHook() throws Exception { ODatabaseDocument db = OrientDbWebSession.get().getDatabase(); OSchema schema = db.getMetadata().getSchema(); OClass oClass = schema.createClass(TEST_CLASS_CALLBACK); oClass.createProperty("name", OType.STRING); try { ODocument doc = new ODocument(oClass); doc.field("name", "testname"); TestCallback callback = new TestCallback(); CallbackHook.registerCallback(doc, TYPE.AFTER_CREATE, callback); CallbackHook.registerCallback(doc, TYPE.BEFORE_CREATE, callback); doc.save(); assertEquals("executed", doc.field("callback"+TYPE.AFTER_CREATE)); assertEquals("executed", doc.field("callback"+TYPE.BEFORE_CREATE)); assertFalse(doc.containsField("__callbacks__")); doc.reload(); assertFalse(doc.containsField("__callbacks__")); assertFalse(doc.containsField("callback"+TYPE.AFTER_READ)); CallbackHook.registerCallback(doc, TYPE.AFTER_READ, callback); doc.reload(); assertEquals("executed", doc.field("callback"+TYPE.AFTER_READ)); } finally { schema.dropClass(TEST_CLASS_CALLBACK); } } }
@Test @Ignore public void testClassChange() { ODatabaseDocument db = wicket.getTester().getDatabase(); OSchema schema = db.getMetadata().getSchema(); OClass classA = schema.createClass("TestClassChangeA"); OClass classB = schema.createClass("TestClassChangeB"); ODocument doc = new ODocument(classA); doc.save(); doc = doc.getIdentity().getRecord(); doc.setClassName(classB.getName()); assertEquals(classB.getName(), doc.getClassName()); doc = doc.getIdentity().getRecord(); assertEquals(classB.getName(), doc.getClassName()); ORID id = doc.getIdentity(); db.commit(true); db.close(); db = wicket.getTester().getDatabase(); doc = id.getRecord(); assertEquals(classB.getName(), doc.getClassName()); }
else if (p.getKey().toString().startsWith("metadata.")) { if (metadata == null) metadata = new ODocument(); metadata.field(p.getKey().toString().substring("metadata.".length()), p.getValue()); final OSchema schema = db.getMetadata().getSchema(); final OClass cls = schema.getOrCreateClass(className, schema.getClass(ancestorClassName)); final OProperty property = cls.getProperty(key); if (property != null) keyType = property.getType(); if (collate != null) indexDefinition.setCollate(collate); db.getMetadata().getIndexManager() .createIndex(className + "." + key, indexType, indexDefinition, cls.getPolymorphicClusterIds(), null, metadata); return null;
public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) throws SQLException { database.activateOnCurrentThread(); final Collection<OClass> classes = database.getMetadata().getSchema().getClasses(); OInternalResultSet resultSet = new OInternalResultSet(); for (OClass cls : classes) { final OResultInternal res = new OResultInternal(); res.setProperty("TYPE_CAT", (Object) null); res.setProperty("TYPE_SCHEM", (Object) null); res.setProperty("TYPE_NAME", cls.getName()); res.setProperty("CLASS_NAME", cls.getName()); res.setProperty("DATA_TYPE", java.sql.Types.STRUCT); res.setProperty("REMARKS", (Object) null); resultSet.add(res); } return new OrientJdbcResultSet(new OrientJdbcStatement(connection), resultSet, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT); }
@Test public void testGettingFields() { OSchema schema = wicket.getTester().getSchema(); OClass classA = schema.createClass("GettingFields"); classA.createProperty("title", OType.STRING); classA.createProperty("link", OType.LINK).setLinkedClass(classA); classA.createProperty("multi", OType.LINKLIST).setLinkedClass(classA); ODocument doc = new ODocument(classA); doc.field("title", "test"); doc.save(); doc.field("link", doc); doc.field("multi", Arrays.asList(doc)); doc.save(); doc.reload(); String title = doc.field("title"); ODocument link = doc.field("link"); Collection<ODocument> multi = doc.field("multi"); }
@Override public ODocument createWidgetDocument(IWidgetType<?> widgetType) { String oClassName = widgetType.getOClassName(); if(oClassName==null) oClassName = OCLASS_WIDGET; OClass oClass = getDatabase().getMetadata().getSchema().getClass(oClassName); if(oClass==null || !oClass.isSubClassOf(OCLASS_WIDGET)) throw new WicketRuntimeException("Wrong OClass specified for widget settings: "+oClassName); ODocument widgetDoc = new ODocument(oClass); widgetDoc.field(OPROPERTY_TYPE_ID, widgetType.getId()); return widgetDoc; }
@Test public void testDeletionOfDependentClass2() { ODatabaseDocument db = wicket.getTester().getDatabase(); OSchema schema = db.getMetadata().getSchema(); OClass classAbs = schema.createAbstractClass("TestDeletionAbst"); OClass classA = schema.createClass("TestDeletionA", classAbs); ODocument doc = new ODocument(classA); doc.save(); assertEquals(1, classA.count()); OClass classB = schema.createClass("TestDeletionB", classA); doc = new ODocument(classB); doc.save(); assertEquals(1, classB.count()); assertEquals(2, classA.count()); schema.dropClass(classB.getName()); assertEquals(1, classA.count()); }
/** * Register schema. */ public OClass register(final ODatabaseDocumentTx db) { checkNotNull(db); OSchema schema = db.getMetadata().getSchema(); OClass type = schema.getClass(DB_CLASS); if (type == null) { type = schema.createClass(DB_CLASS); type.createProperty(P_PATH, OType.STRING).setNotNull(true); type.createIndex(P_PATH + "idx", INDEX_TYPE.UNIQUE, P_PATH); type.createProperty(P_BLOBID, OType.STRING).setNotNull(true); type.createProperty(P_MIMETYPE, OType.STRING).setNotNull(true); log.info("Created schema: {}, properties: {}", type, type.properties()); } return type; }
@Override public void initClazz(ODatabaseInternal db) { OSchema schema = db.getMetadata().getSchema(); OClass polygon = schema.createAbstractClass(getName(), superClass(db)); polygon.createProperty("coordinates", OType.EMBEDDEDLIST, OType.EMBEDDEDLIST); }
@Test public void testOQueryModelDBTouch() { OClass classA = wicket.getTester().getSchema().getClass("ClassA"); ODocument doc = new ODocument(classA); doc.field("other", Arrays.asList(doc)); OQueryModel<ODocument> queryModel = new OQueryModel<ODocument>("select from ClassA where :doc in other"); queryModel.setParameter("doc", new ODocumentModel(doc)); long was = classA.count(); assertTrue(doc.getIdentity().isNew()); assertEquals(0, queryModel.size()); assertTrue(doc.getIdentity().isNew()); assertEquals(was, classA.count()); }
protected void checkForGraphSchema(final ODatabaseDocumentTx iDatabase) { final OSchema schema = iDatabase.getMetadata().getSchema(); schema.getOrCreateClass(OMVRBTreeRIDProvider.PERSISTENT_CLASS_NAME); final OClass vertexBaseClass = schema.getClass(OrientVertex.CLASS_NAME); final OClass edgeBaseClass = schema.getClass(OrientEdge.CLASS_NAME); schema.createClass(OrientVertex.CLASS_NAME).setOverSize(2); schema.createClass(OrientEdge.CLASS_NAME); if (!vertexBaseClass.getName().equals(OrientVertex.CLASS_NAME)) { OLogManager.instance().warn(this, "Found Vertex class %s" + MSG_SUFFIX, vertexBaseClass.getName()); warn = true;