Search in sources :

Example 46 with EEnum

use of org.eclipse.emf.ecore.EEnum in project BIMserver by opensourceBIM.

the class ByteBufferVirtualObject method setAttribute.

public void setAttribute(EStructuralFeature feature, Object value) throws BimserverDatabaseException {
    if (feature.isMany()) {
        throw new UnsupportedOperationException("Feature isMany not supported by setAttribute");
    } else {
        if (feature.getEType() instanceof EEnum) {
            writeEnum(feature, value);
        } else if (feature.getEType() instanceof EClass) {
            if (value == null) {
                ensureCapacity(buffer.position(), 2);
                buffer.order(ByteOrder.LITTLE_ENDIAN);
                buffer.putShort((short) -1);
                buffer.order(ByteOrder.BIG_ENDIAN);
            } else if (value instanceof WrappedVirtualObject) {
                ByteBuffer otherBuffer = ((WrappedVirtualObject) value).write();
                ensureCapacity(buffer.position(), otherBuffer.position());
                buffer.put(otherBuffer.array(), 0, otherBuffer.position());
            // writeWrappedValue(getPid(), getRid(), (WrappedVirtualObject) value, getPackageMetaData());
            } else {
                throw new UnsupportedOperationException("??");
            }
        } else if (feature.getEType() instanceof EDataType) {
            writePrimitiveValue(feature, value);
        }
    }
    incrementFeatureCounter(feature);
}
Also used : EClass(org.eclipse.emf.ecore.EClass) EDataType(org.eclipse.emf.ecore.EDataType) EEnum(org.eclipse.emf.ecore.EEnum) ByteBuffer(java.nio.ByteBuffer)

Example 47 with EEnum

use of org.eclipse.emf.ecore.EEnum in project BIMserver by opensourceBIM.

the class ByteBufferVirtualObject method writeEnum.

private void writeEnum(EStructuralFeature feature, Object value) {
    if (value == null) {
        ensureCapacity(buffer.position(), 4);
        buffer.putInt(-1);
    } else {
        EEnum eEnum = (EEnum) feature.getEType();
        EEnumLiteral eEnumLiteral = eEnum.getEEnumLiteralByLiteral(((Enum<?>) value).toString());
        ensureCapacity(buffer.position(), 4);
        if (eEnumLiteral != null) {
            buffer.putInt(eEnumLiteral.getValue());
        } else {
            LOGGER.error(((Enum<?>) value).toString() + " not found");
            buffer.putInt(-1);
        }
    }
}
Also used : EEnum(org.eclipse.emf.ecore.EEnum) EEnumLiteral(org.eclipse.emf.ecore.EEnumLiteral) EEnum(org.eclipse.emf.ecore.EEnum)

Example 48 with EEnum

use of org.eclipse.emf.ecore.EEnum in project BIMserver by opensourceBIM.

the class IfcSchemaToJson method convert.

private void convert(OutputStream outputStream, File docs, EPackage ePackage) throws IOException {
    IfcDoc ifcDoc = new IfcDoc(docs);
    JsonWriter jsonWriter = new JsonWriter(new OutputStreamWriter(outputStream));
    jsonWriter.setIndent("  ");
    try {
        jsonWriter.beginObject();
        jsonWriter.name("classes");
        jsonWriter.beginObject();
        for (EClassifier eClassifier : ePackage.getEClassifiers()) {
            jsonWriter.name(eClassifier.getName());
            jsonWriter.beginObject();
            if (eClassifier instanceof EEnum) {
            } else if (eClassifier instanceof EClass) {
                EClass eClass = (EClass) eClassifier;
                String domain = ifcDoc.getDomain(eClass.getName());
                jsonWriter.name("domain");
                jsonWriter.value(domain);
                jsonWriter.name("superclasses");
                jsonWriter.beginArray();
                for (EClass superClass : eClass.getESuperTypes()) {
                    jsonWriter.value(superClass.getName());
                }
                jsonWriter.endArray();
                jsonWriter.name("fields");
                jsonWriter.beginObject();
                if (eClass.getName().equals("IfcCartesianPointList3D")) {
                    System.out.println();
                }
                for (EStructuralFeature eStructuralFeature : eClass.getEStructuralFeatures()) {
                    jsonWriter.name(eStructuralFeature.getName());
                    jsonWriter.beginObject();
                    jsonWriter.name("type");
                    jsonWriter.value(convertType(eStructuralFeature.getEType()));
                    jsonWriter.name("reference");
                    jsonWriter.value(eStructuralFeature instanceof EReference);
                    jsonWriter.name("many");
                    jsonWriter.value(eStructuralFeature.isMany());
                    jsonWriter.name("inverse");
                    jsonWriter.value(eStructuralFeature.getEAnnotation("inverse") != null);
                    jsonWriter.endObject();
                }
                jsonWriter.endObject();
            }
            jsonWriter.endObject();
        }
        jsonWriter.endObject();
        jsonWriter.endObject();
    } finally {
        jsonWriter.close();
    }
}
Also used : EClass(org.eclipse.emf.ecore.EClass) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) EClassifier(org.eclipse.emf.ecore.EClassifier) OutputStreamWriter(java.io.OutputStreamWriter) EEnum(org.eclipse.emf.ecore.EEnum) JsonWriter(com.google.gson.stream.JsonWriter) EReference(org.eclipse.emf.ecore.EReference) IfcDoc(org.bimserver.shared.IfcDoc)

Example 49 with EEnum

use of org.eclipse.emf.ecore.EEnum in project xtext-eclipse by eclipse.

the class EnumTemplateVariableResolver method resolveValues.

@Override
public List<String> resolveValues(TemplateVariable variable, XtextTemplateContext castedContext) {
    String enumerationName = (String) variable.getVariableType().getParams().iterator().next();
    Grammar grammar = getGrammar(castedContext);
    if (grammar == null)
        return Collections.emptyList();
    EEnum enumeration = (EEnum) getEClassifierForGrammar(enumerationName, grammar);
    if (enumeration == null) {
        return Collections.emptyList();
    }
    return Lists.transform(enumeration.getELiterals(), new Function<EEnumLiteral, String>() {

        @Override
        public String apply(EEnumLiteral enumLiteral) {
            return enumLiteral.getLiteral();
        }
    });
}
Also used : EEnumLiteral(org.eclipse.emf.ecore.EEnumLiteral) Grammar(org.eclipse.xtext.Grammar) EEnum(org.eclipse.emf.ecore.EEnum)

Example 50 with EEnum

use of org.eclipse.emf.ecore.EEnum in project InformationSystem by ObeoNetwork.

the class EcorebindingModelWizardSpec method explore.

/**
 * Expore the EPackage and init the BPackage.
 * @param ePackage The ecore Package input to read
 * @param bPackage The Binding Package to build
 */
private static void explore(EPackage ePackage, BPackage bPackage) {
    EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
    for (EClassifier eClassifier : eClassifiers) {
        if (eClassifier instanceof EClass) {
            EClass eClass = (EClass) eClassifier;
            // Create BClass
            BClass bClass = EcorebindingFactory.eINSTANCE.createBClass();
            bClass.setEcoreClass(eClass);
            bPackage.getBClasses().add(bClass);
            bPackage.getBClassifiers().add(bClass);
            explore(eClass, bClass);
        } else if (eClassifier instanceof EEnum) {
            EEnum eEnum = (EEnum) eClassifier;
            // Create BEnum
            BEnum bEnum = EcorebindingFactory.eINSTANCE.createBEnum();
            bEnum.setEcoreEnum(eEnum);
            bEnum.setEcoreDataType(eEnum);
            bPackage.getBEnums().add(bEnum);
            bPackage.getBClassifiers().add(bEnum);
            List<EEnumLiteral> eLiterals = eEnum.getELiterals();
            for (EEnumLiteral eLiteral : eLiterals) {
                // Create BEnumLiteral
                BEnumLiteral bEnumLiteral = EcorebindingFactory.eINSTANCE.createBEnumLiteral();
                bEnumLiteral.setBEnum(bEnum);
                bEnumLiteral.setEcoreEnumLiteral(eLiteral);
            }
        } else if (eClassifier instanceof EDataType) {
            EDataType eDataType = (EDataType) eClassifier;
            // Create BDataType
            BDataType bDataType = EcorebindingFactory.eINSTANCE.createBDataType();
            bDataType.setEcoreDataType(eDataType);
            bPackage.getBDataTypes().add(bDataType);
            bPackage.getBClassifiers().add(bDataType);
        }
    }
    List<EPackage> eSubpackages = ePackage.getESubpackages();
    for (EPackage subEPackage : eSubpackages) {
        // Create BPackage
        BPackage subBPackage = EcorebindingFactory.eINSTANCE.createBPackage();
        subBPackage.setEcorePackage(subEPackage);
        bPackage.getNestedBPackages().add(subBPackage);
        explore(subEPackage, subBPackage);
    }
}
Also used : BEnum(org.obeonetwork.dsl.ecorebinding.BEnum) BDataType(org.obeonetwork.dsl.ecorebinding.BDataType) EDataType(org.eclipse.emf.ecore.EDataType) EClassifier(org.eclipse.emf.ecore.EClassifier) EEnum(org.eclipse.emf.ecore.EEnum) EPackage(org.eclipse.emf.ecore.EPackage) BPackage(org.obeonetwork.dsl.ecorebinding.BPackage) EClass(org.eclipse.emf.ecore.EClass) BEnumLiteral(org.obeonetwork.dsl.ecorebinding.BEnumLiteral) BClass(org.obeonetwork.dsl.ecorebinding.BClass) EList(org.eclipse.emf.common.util.EList) List(java.util.List) EEnumLiteral(org.eclipse.emf.ecore.EEnumLiteral)

Aggregations

EEnum (org.eclipse.emf.ecore.EEnum)50 EClass (org.eclipse.emf.ecore.EClass)28 EEnumLiteral (org.eclipse.emf.ecore.EEnumLiteral)22 EDataType (org.eclipse.emf.ecore.EDataType)13 EPackage (org.eclipse.emf.ecore.EPackage)13 EStructuralFeature (org.eclipse.emf.ecore.EStructuralFeature)11 Grammar (org.eclipse.xtext.Grammar)10 HashMapVirtualObject (org.bimserver.shared.HashMapVirtualObject)9 Test (org.junit.Test)9 EClassifier (org.eclipse.emf.ecore.EClassifier)8 EReference (org.eclipse.emf.ecore.EReference)7 BimserverDatabaseException (org.bimserver.BimserverDatabaseException)6 IdEObject (org.bimserver.emf.IdEObject)6 EObject (org.eclipse.emf.ecore.EObject)6 EnumRule (org.eclipse.xtext.EnumRule)6 List (java.util.List)5 EnumLiteralDeclaration (org.eclipse.xtext.EnumLiteralDeclaration)5 IdEObjectImpl (org.bimserver.emf.IdEObjectImpl)4 VirtualObject (org.bimserver.shared.VirtualObject)4 EAttribute (org.eclipse.emf.ecore.EAttribute)4