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;
}
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);
}
}
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);
}
}
}
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));
}
}
}
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);
}
}
}
}
Aggregations