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