@Override public Collection<OProperty> properties() { return delegate.properties(); }
@Override public Collection<OProperty> load(OClass key) throws Exception { return Collections2.filter(key.properties(), new Predicate<OProperty>() { @Override public boolean apply(OProperty property) { return property.getType().isLink() && CustomAttribute.PROP_INVERSE.getValue(property)!=null; } }); } });
@Override public List<OProperty> listProperties(OClass oClass, Predicate<OProperty>... predicates) { if(oClass==null) return Collections.EMPTY_LIST; Collection<OProperty> properties = oClass.properties(); Predicate<OProperty> predicate = predicates==null || predicates.length==0? null :(predicates.length==1? predicates[0] :Predicates.and(predicates)); Collection<OProperty> filteredProperties = predicate!=null?Collections2.filter(properties, predicate):properties; return ORDER_PROPERTIES_BY_ORDER.sortedCopy(filteredProperties); }
public int findMaxOrder(OClass oClass) { int ret = 0; for(OProperty property: oClass.properties()) { Integer order = CustomAttribute.ORDER.getValue(property); if(order!=null && order > ret) ret = order; } return ret; }
@Override public Collection<OProperty> getData() { OClass oClass = oClassModel.getObject(); if(oClass==null) { return null; } else if(allPropertiesModel==null||Boolean.TRUE.equals(allPropertiesModel.getObject())) { return oClass.properties(); } else { return oClass.declaredProperties(); } }
@Override public Collection<OProperty> getData() { OClass oClass = oClassModel.getObject(); if(oClass==null) { return null; } else if(allPropertiesModel==null||Boolean.TRUE.equals(allPropertiesModel.getObject())) { return oClass.properties(); } else { return oClass.declaredProperties(); } }
@Override public List<OProperty> getDisplayableProperties(OClass oClass) { Collection<OProperty> properties = oClass.properties(); IFilterPredicateFactory factory = OrienteerWebApplication.get().getServiceInstance(IFilterPredicateFactory.class); Collection<OProperty> filteredProperties = Collections2.filter(properties, factory.getGuicePredicateForTableProperties()); if(filteredProperties==null || filteredProperties.isEmpty()) filteredProperties = properties; return ORDER_PROPERTIES_BY_ORDER.sortedCopy(filteredProperties); }
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)); } }
@Override public List<String> listTabs(OClass oClass) { IFilterPredicateFactory factory = OrienteerWebApplication.get().getServiceInstance(IFilterPredicateFactory.class); SerializablePredicate<OProperty> predicate = factory.getPredicateForListProperties(); Set<String> tabs = new HashSet<>(); for (OProperty prop : oClass.properties()) { if (predicate.test(prop)) { String tab = CustomAttribute.TAB.getValue(prop); if (tab == null) tab = DEFAULT_TAB; tabs.add(tab); } } return new ArrayList<>(tabs); }
private static List<OArchitectOProperty> toOArchitectProperties(OClass oClass, List<OClass> superClasses) { Collection<OProperty> properties = oClass.properties(); List<OArchitectOProperty> architectProperties = new ArrayList<>(properties.size()); ExtendedOPropertiesDataProvider provider = new ExtendedOPropertiesDataProvider(new CollectionModel<>(properties)); provider.setSort(CustomAttribute.ORDER.getName(), SortOrder.ASCENDING); Iterator<? extends OProperty> iterator = provider.iterator(0, provider.size()); while (iterator.hasNext()){ OProperty property = iterator.next(); OArchitectOProperty architectOProperty = OArchitectOProperty.toArchitectOProperty(oClass, property); architectOProperty.setSubClassProperty(isSubClassProperty(property, superClasses)); architectProperties.add(architectOProperty); } return architectProperties; }
protected void checkParametersConflict(final OClass baseClass) { final Collection<OProperty> baseClassProperties = baseClass.properties(); for (OProperty property : baseClassProperties) { OProperty thisProperty = getProperty(property.getName()); if (thisProperty != null && !thisProperty.getType().equals(property.getType())) { throw new OSchemaException( "Cannot add base class '" + baseClass.getName() + "', because of property conflict: '" + thisProperty + "' vs '" + property + "'"); } } }
/** * 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 OProperty getNameProperty(OClass oClass) { if(oClass==null) return null; OProperty ret = CustomAttribute.PROP_NAME.getValue(oClass); if(ret!=null) return ret; ret = oClass.getProperty("name"); if(ret!=null) return ret; for(OProperty p: oClass.properties()) { if(!p.getType().isMultiValue()) { ret = p; if(OType.STRING.equals(p.getType())) break; } } return ret; }
protected void initMapping(OPersistenceSession session) { mappingFromDocToEntity = new HashMap<>(); mappingFromEntityToDoc = new HashMap<>(); OClass oClass = session.getClass(getSchemaClass()); Class<T> entityClass = getEntityClass(); for(OProperty property : oClass.properties()) { String propertyName = property.getName(); String beanPropertyName = propertyName; boolean isLink = property.getType().isLink(); if(isLink) beanPropertyName+="Id"; IGetAndSet getAndSet = getGetAndSetter(entityClass, beanPropertyName); if(getAndSet!=null) { if(isLink) { IEntityHandler<?> targetHandler = HandlersManager.get().getHandlerBySchemaClass(property.getLinkedClass().getName()); if(targetHandler==null || targetHandler.getPkField()==null) continue; propertyName+="."+targetHandler.getPkField(); } if(getAndSet.getSetter()!=null) mappingFromDocToEntity.put(propertyName, beanPropertyName); if(getAndSet.getGetter()!=null) mappingFromEntityToDoc.put(beanPropertyName, propertyName); } } }
public static void realizeMandatory(ODocument doc) { OClass oClass = doc.getSchemaClass(); if(oClass!=null) { for(OProperty property : oClass.properties()) { if(property.isMandatory() && Strings.isEmpty(property.getDefaultValue()) && !doc.containsField(property.getName())) { doc.field(property.getName(), (Object) null); } } } }
@Override protected String getDefaultSql() { ODocument doc = getModelObject(); OClass oClass = doc.getSchemaClass(); OProperty multiProperty = null; for(OProperty property : oClass.properties()) { if(property.getType().isLink() && property.getType().isMultiValue()) { multiProperty = property; break; } } if(multiProperty!=null) { return "select expand("+multiProperty.getName()+") from :doc"; } else { return "select from :doc"; } }
@Override protected String getDefaultSql() { ODocument doc = getModelObject(); OClass oClass = doc.getSchemaClass(); OProperty multiProperty = null; for(OProperty property : oClass.properties()) { if(property.getType().isLink() && property.getType().isMultiValue()) { multiProperty = property; break; } } if(multiProperty!=null) { return "select expand("+multiProperty.getName()+") from :doc"; } else { return "select from :doc"; } } };
@Test public void testOPropertiesDataProvider() { OSchema schema = wicket.getTester().getSchema(); OClass oClass = schema.getClass("ClassA"); OPropertiesDataProvider provider = new OPropertiesDataProvider(oClass, true); provider.setSort("name", SortOrder.ASCENDING); Iterator<? extends OProperty> it = provider.iterator(0, -1); List<OProperty> allProperties = new ArrayList<OProperty>(oClass.properties()); while(it.hasNext()) { OProperty oProperty = it.next(); assertTrue(allProperties.remove(provider.model(oProperty).getObject())); } assertTrue(allProperties.size()==0); provider.detach(); }
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; }
@Override public ResultSet getColumns(final String catalog, final String schemaPattern, final String tableNamePattern, final String columnNamePattern) throws SQLException { database.activateOnCurrentThread(); final OInternalResultSet resultSet = new OInternalResultSet(); final OSchema schema = database.getMetadata().getSchema(); for (OClass clazz : schema.getClasses()) { if (OrientJdbcUtils.like(clazz.getName(), tableNamePattern)) { for (OProperty prop : clazz.properties()) { if (columnNamePattern == null) { resultSet.add(getPropertyAsDocument(clazz, prop)); } else { if (OrientJdbcUtils.like(prop.getName(), columnNamePattern)) { resultSet.add(getPropertyAsDocument(clazz, prop)); } } } } } return new OrientJdbcResultSet(new OrientJdbcStatement(connection), resultSet, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT); }