Search in sources :

Example 1 with IfcDoc

use of org.bimserver.shared.IfcDoc 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)

Aggregations

JsonWriter (com.google.gson.stream.JsonWriter)1 OutputStreamWriter (java.io.OutputStreamWriter)1 IfcDoc (org.bimserver.shared.IfcDoc)1 EClass (org.eclipse.emf.ecore.EClass)1 EClassifier (org.eclipse.emf.ecore.EClassifier)1 EEnum (org.eclipse.emf.ecore.EEnum)1 EReference (org.eclipse.emf.ecore.EReference)1 EStructuralFeature (org.eclipse.emf.ecore.EStructuralFeature)1