@Override public OProperty setLinkedClass(OClass oClass) { delegate.setLinkedClass(oClass); return this; }
public OSchemaHelper setupRelationship(String class1Name, String property1Name, String class2Name, String property2Name) { OClass class1 = schema.getClass(class1Name); OProperty property1 = class1.getProperty(property1Name); OClass class2 = schema.getClass(class2Name); OProperty property2 = class2.getProperty(property2Name); if(!Objects.equals(property1.getLinkedClass(), class2)) property1.setLinkedClass(class2); if(!Objects.equals(property2.getLinkedClass(), class1)) property2.setLinkedClass(class1); CustomAttribute.PROP_INVERSE.setValue(property1, property2); CustomAttribute.PROP_INVERSE.setValue(property2, property1); return this; }
public OSchemaHelper setupRelationship(String class1Name, String propertyName, String class2Name) { OClass class1 = schema.getClass(class1Name); OProperty property = class1.getProperty(propertyName); OClass class2 = schema.getClass(class2Name); if (!Objects.equals(property.getLinkedClass(), class2)) property.setLinkedClass(class2); return this; }
/** * Set linked class to a current property * @param className class name to set as a linked class * @return this helper */ public OSchemaHelper linkedClass(String className) { checkOProperty(); OClass linkedToClass = schema.getClass(className); if(linkedToClass==null) throw new IllegalArgumentException("Target OClass '"+className+"' to link to not found"); if(!Objects.equal(linkedToClass, lastProperty.getLinkedClass())) { lastProperty.setLinkedClass(linkedToClass); } return this; }
/** * Set linked class to a current property * @param className class name to set as a linked class * @return this helper */ public OSchemaHelper linkedClass(String className) { checkOProperty(); OClass linkedToClass = schema.getClass(className); if(linkedToClass==null) throw new IllegalArgumentException("Target OClass '"+className+"' to link to not found"); if(!Objects.equal(linkedToClass, lastProperty.getLinkedClass())) { lastProperty.setLinkedClass(linkedToClass); } return this; }
case LINK: OIdentifiable link = doc.field(field); if(link!=null && link instanceof ODocument) property.setLinkedClass(((ODocument)link).getSchemaClass()); break; case LINKBAG: OIdentifiable linkIdentifiable = bag.iterator().next(); ORecord record = linkIdentifiable!=null?linkIdentifiable.getRecord():null; if(record!=null && record instanceof ODocument) property.setLinkedClass(((ODocument)record).getSchemaClass()); if(collection!=null && !collection.isEmpty()) { link = collection.iterator().next(); if(link!=null && link instanceof ODocument) property.setLinkedClass(((ODocument)link).getSchemaClass()); if(map!=null && !map.isEmpty()) { link = map.values().iterator().next(); if(link!=null && link instanceof ODocument) property.setLinkedClass(((ODocument)link).getSchemaClass()); Object value = doc.field(field); OType linkedType = OType.getTypeByValue(value); if(OType.EMBEDDED.equals(linkedType)) property.setLinkedClass(((ODocument)value).getSchemaClass()); else property.setLinkedType(linkedType); break;
private void setLinkedClassForProperty(OArchitectOProperty architectProperty, OProperty property, OSchema schema) { OClass linkedClass = schema.getOrCreateClass(architectProperty.getLinkedClass()); property.setLinkedClass(linkedClass); if (architectProperty.getInverseProperty() != null) { OArchitectOProperty p = architectProperty.getInverseProperty(); if (!Strings.isNullOrEmpty(p.getName()) && p.getType() != null) { OProperty inverseProp = linkedClass.getProperty(p.getName()); if (inverseProp == null) { inverseProp = linkedClass.createProperty(p.getName(), p.getType()); } CustomAttribute.PROP_INVERSE.setValue(property, inverseProp); } } }
@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"); }
classA.createProperty("name", OType.STRING); classA.createProperty("description", OType.STRING); classA.createProperty("other", OType.LINKLIST).setLinkedClass(classA); classA.createProperty("empty", OType.LINKLIST).setLinkedClass(classA); OClass classB = schema.createClass("ClassB"); classB.createProperty("name", OType.STRING);
@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(); } }
final OClass classB = schema.createClass("TestCreationInHookReflect"); classA.createProperty("name", OType.STRING); classA.createProperty("mirror", OType.LINK).setLinkedClass(classB); classB.createProperty("name", OType.STRING); db.registerHook(new ODocumentHookAbstract(db) {
OClass embeddedClass = schema.createClass("LEmbeddedClass"); mainClass.createProperty("name", OType.STRING); mainClass.createProperty("embedded", OType.EMBEDDED).setLinkedClass(embeddedClass); embeddedClass.createProperty("name", OType.STRING);