Search in sources :

Example 1 with EntityDefinition

use of nl.tue.buildingsmart.schema.EntityDefinition in project BIMserver by opensourceBIM.

the class PackageMetaData method isInverse.

public boolean isInverse(EReference eReference) {
    if (isInverseCache.containsKey(eReference)) {
        return isInverseCache.get(eReference);
    }
    EntityDefinition entityBN = schemaDefinition.getEntityBNNoCaseConvert(upperCases.get(eReference.getEContainingClass()));
    if (entityBN == null) {
        return false;
    }
    Attribute attributeBNWithSuper = entityBN.getAttributeBNWithSuper(eReference.getName());
    boolean isInverse = entityBN != null && attributeBNWithSuper instanceof InverseAttribute;
    if (!isInverse) {
        if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcElement_ContainedInStructure()) {
            isInverse = true;
        } else if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcAnnotation_ContainedInStructure()) {
            isInverse = true;
        } else if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcGrid_ContainedInStructure()) {
            isInverse = true;
        }
        if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcRepresentation_LayerAssignments()) {
            isInverse = true;
        } else if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcRepresentationItem_LayerAssignments()) {
            isInverse = true;
        }
        if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcObjectDefinition_HasAssociations()) {
            isInverse = true;
        } else if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcPropertyDefinition_HasAssociations()) {
            isInverse = true;
        }
        if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcDimensionCurve_AnnotatedBySymbols()) {
            isInverse = true;
        }
        if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcElement_ReferencedInStructures()) {
            isInverse = true;
        }
        if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcProductDefinitionShape_ShapeOfProduct()) {
            isInverse = true;
        }
        if (eReference == Ifc2x3tc1Package.eINSTANCE.getIfcStructuralItem_AssignedStructuralActivity()) {
            isInverse = true;
        }
    }
    isInverseCache.put(eReference, isInverse);
    return isInverse;
}
Also used : EntityDefinition(nl.tue.buildingsmart.schema.EntityDefinition) EAttribute(org.eclipse.emf.ecore.EAttribute) Attribute(nl.tue.buildingsmart.schema.Attribute) InverseAttribute(nl.tue.buildingsmart.schema.InverseAttribute) ExplicitAttribute(nl.tue.buildingsmart.schema.ExplicitAttribute) InverseAttribute(nl.tue.buildingsmart.schema.InverseAttribute)

Example 2 with EntityDefinition

use of nl.tue.buildingsmart.schema.EntityDefinition in project BIMserver by opensourceBIM.

the class PackageMetaData method buildUseForDatabaseStorage.

private void buildUseForDatabaseStorage(EClass eClass) {
    if (this.getSchemaDefinition() != null) {
        HashSet<EStructuralFeature> set = new HashSet<>();
        for (EStructuralFeature eStructuralFeature : eClass.getEAllStructuralFeatures()) {
            EntityDefinition entityBN = this.getSchemaDefinition().getEntityBN(eClass.getName());
            if (entityBN == null) {
                set.add(eStructuralFeature);
            } else {
                if (!entityBN.isDerived(eStructuralFeature.getName())) {
                    boolean derived = false;
                    if (eStructuralFeature.getEAnnotation("hidden") != null) {
                        if (eStructuralFeature.getEAnnotation("asstring") == null) {
                        } else {
                            if (entityBN.isDerived(eStructuralFeature.getName().substring(0, eStructuralFeature.getName().length() - 8))) {
                                derived = true;
                            } else {
                                set.add(eStructuralFeature);
                            }
                        }
                    }
                    Attribute attribute = entityBN.getAttributeBNWithSuper(eStructuralFeature.getName());
                    if (attribute == null) {
                        // geometry, *AsString
                        if (!derived) {
                            set.add(eStructuralFeature);
                        }
                    } else {
                        if (attribute instanceof ExplicitAttribute || attribute instanceof InverseAttribute) {
                            if (!entityBN.isDerived(attribute.getName())) {
                                set.add(eStructuralFeature);
                            }
                        }
                    }
                }
            }
        }
        useForDatabaseStorage.put(eClass, set);
    }
}
Also used : EntityDefinition(nl.tue.buildingsmart.schema.EntityDefinition) EAttribute(org.eclipse.emf.ecore.EAttribute) Attribute(nl.tue.buildingsmart.schema.Attribute) InverseAttribute(nl.tue.buildingsmart.schema.InverseAttribute) ExplicitAttribute(nl.tue.buildingsmart.schema.ExplicitAttribute) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) InverseAttribute(nl.tue.buildingsmart.schema.InverseAttribute) HashSet(java.util.HashSet) ExplicitAttribute(nl.tue.buildingsmart.schema.ExplicitAttribute)

Example 3 with EntityDefinition

use of nl.tue.buildingsmart.schema.EntityDefinition in project BIMserver by opensourceBIM.

the class PackageMetaData method buildUseForSerializationSet.

private void buildUseForSerializationSet(EClass eClass) {
    if (this.getSchemaDefinition() != null) {
        if (!useForSerialization.containsKey(eClass)) {
            HashSet<EStructuralFeature> set = new HashSet<>();
            for (EStructuralFeature eStructuralFeature : eClass.getEAllStructuralFeatures()) {
                EntityDefinition entityBN = this.getSchemaDefinition().getEntityBN(eClass.getName());
                // }
                if (entityBN != null) {
                    Attribute attribute = entityBN.getAttributeBNWithSuper(eStructuralFeature.getName());
                    if (attribute != null && attribute instanceof ExplicitAttribute) {
                        if (!entityBN.isDerived(eStructuralFeature.getName()) || entityBN.isDerivedOverride(eStructuralFeature.getName())) {
                            set.add(eStructuralFeature);
                        }
                    }
                }
            }
            useForSerialization.put(eClass, set);
        }
    }
}
Also used : EntityDefinition(nl.tue.buildingsmart.schema.EntityDefinition) EAttribute(org.eclipse.emf.ecore.EAttribute) Attribute(nl.tue.buildingsmart.schema.Attribute) InverseAttribute(nl.tue.buildingsmart.schema.InverseAttribute) ExplicitAttribute(nl.tue.buildingsmart.schema.ExplicitAttribute) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) HashSet(java.util.HashSet) ExplicitAttribute(nl.tue.buildingsmart.schema.ExplicitAttribute)

Example 4 with EntityDefinition

use of nl.tue.buildingsmart.schema.EntityDefinition in project BIMserver by opensourceBIM.

the class SharedJsonDeserializer method processRef.

@SuppressWarnings({ "unchecked", "rawtypes" })
private void processRef(IfcModelInterface model, WaitingList<Long> waitingList, IdEObjectImpl object, EStructuralFeature eStructuralFeature, int index, AbstractEList list, long refOid) throws DeserializeException {
    EntityDefinition entityBN = model.getPackageMetaData().getSchemaDefinition().getEntityBN(object.eClass().getName());
    Attribute attributeBN = entityBN.getAttributeBNWithSuper(eStructuralFeature.getName());
    if (skipInverses && attributeBN instanceof InverseAttribute && ((EReference) eStructuralFeature).getEOpposite() != null) {
    // skip
    } else {
        if (model.contains(refOid)) {
            EObject referencedObject = model.get(refOid);
            if (referencedObject != null) {
                addToList(eStructuralFeature, index, list, referencedObject);
            }
        } else {
            waitingList.add(refOid, new ListWaitingObject(-1, object, (EReference) eStructuralFeature, index));
        }
    }
}
Also used : EntityDefinition(nl.tue.buildingsmart.schema.EntityDefinition) EAttribute(org.eclipse.emf.ecore.EAttribute) Attribute(nl.tue.buildingsmart.schema.Attribute) InverseAttribute(nl.tue.buildingsmart.schema.InverseAttribute) EObject(org.eclipse.emf.ecore.EObject) ListWaitingObject(org.bimserver.shared.ListWaitingObject) InverseAttribute(nl.tue.buildingsmart.schema.InverseAttribute) EReference(org.eclipse.emf.ecore.EReference)

Example 5 with EntityDefinition

use of nl.tue.buildingsmart.schema.EntityDefinition in project BIMserver by opensourceBIM.

the class Express2EMF method addSupertypes.

private void addSupertypes() {
    Iterator<EntityDefinition> entIter = schema.getEntities().iterator();
    while (entIter.hasNext()) {
        EntityDefinition ent = entIter.next();
        if (ent.getSupertypes().size() > 0) {
            EClass cls = getOrCreateEClass(ent.getName());
            if (ent.getSupertypes().size() > 0) {
                EClass parent = getOrCreateEClass(ent.getSupertypes().get(0).getName());
                if (!directSubTypes.containsKey(parent)) {
                    directSubTypes.put(parent, new HashSet<EClass>());
                }
                directSubTypes.get(parent).add(cls);
                cls.getESuperTypes().add(parent);
            }
        }
    }
}
Also used : EntityDefinition(nl.tue.buildingsmart.schema.EntityDefinition) EClass(org.eclipse.emf.ecore.EClass)

Aggregations

EntityDefinition (nl.tue.buildingsmart.schema.EntityDefinition)12 Attribute (nl.tue.buildingsmart.schema.Attribute)9 InverseAttribute (nl.tue.buildingsmart.schema.InverseAttribute)9 EAttribute (org.eclipse.emf.ecore.EAttribute)8 ExplicitAttribute (nl.tue.buildingsmart.schema.ExplicitAttribute)5 EClass (org.eclipse.emf.ecore.EClass)5 EReference (org.eclipse.emf.ecore.EReference)5 EStructuralFeature (org.eclipse.emf.ecore.EStructuralFeature)3 HashSet (java.util.HashSet)2 List (java.util.List)2 DefinedType (nl.tue.buildingsmart.schema.DefinedType)2 ListWaitingObject (org.bimserver.shared.ListWaitingObject)2 EObject (org.eclipse.emf.ecore.EObject)2 JsonToken (com.google.gson.stream.JsonToken)1 DerivedAttribute2 (nl.tue.buildingsmart.schema.DerivedAttribute2)1 IntegerType (nl.tue.buildingsmart.schema.IntegerType)1 LogicalType (nl.tue.buildingsmart.schema.LogicalType)1 NamedType (nl.tue.buildingsmart.schema.NamedType)1 NumberType (nl.tue.buildingsmart.schema.NumberType)1 RealType (nl.tue.buildingsmart.schema.RealType)1