@Override public void migrate(Schema schema, DatabaseSession databaseSession) { EClass geometryInfoClass = schema.getEClass("geometry", "GeometryInfo"); schema.createEAttribute(geometryInfoClass, "area", EcorePackage.eINSTANCE.getEDouble()); schema.createEAttribute(geometryInfoClass, "volume", EcorePackage.eINSTANCE.getEDouble()); }
private void fakePrimitiveRead(EClassifier classifier, ByteBuffer buffer) throws BimserverDatabaseException { if (classifier == EcorePackage.eINSTANCE.getEString()) { int length = buffer.getInt(); if (length != -1) { buffer.position(buffer.position() + length); } } else if (classifier == EcorePackage.eINSTANCE.getEInt() || classifier == EcorePackage.eINSTANCE.getEIntegerObject()) { buffer.position(buffer.position() + 4); } else if (classifier == EcorePackage.eINSTANCE.getELong() || classifier == EcorePackage.eINSTANCE.getELongObject()) { buffer.position(buffer.position() + 8); } else if (classifier == EcorePackage.eINSTANCE.getEFloat() || classifier == EcorePackage.eINSTANCE.getEFloatObject()) { buffer.position(buffer.position() + 4); } else if (classifier == EcorePackage.eINSTANCE.getEDouble() || classifier == EcorePackage.eINSTANCE.getEDoubleObject()) { buffer.position(buffer.position() + 8); } else if (classifier == EcorePackage.eINSTANCE.getEBoolean() || classifier == EcorePackage.eINSTANCE.getEBooleanObject()) { buffer.position(buffer.position() + 1); } else if (classifier == EcorePackage.eINSTANCE.getEDate()) { buffer.position(buffer.position() + 8); } else if (classifier == EcorePackage.eINSTANCE.getEByteArray()) { int length = buffer.getInt(); if (length != -1) { buffer.position(buffer.position() + length); } } else { throw new BimserverDatabaseException("Unimplemented " + classifier); } }
buffer.get(result, 0, 4); return result; } else if (classifier == EcorePackage.eINSTANCE.getEDouble() || classifier == EcorePackage.eINSTANCE.getEDoubleObject()) { byte[] result = new byte[8]; buffer.get(result, 0, 8);
finalType = EcorePackage.eINSTANCE.getELong(); } else if (entityName.equals("IfcRationalBSplineSurfaceWithKnots") && attribName.equals("WeightsData")) { finalType = EcorePackage.eINSTANCE.getEDouble(); } else if (entityName.equals("IfcStructuralLoadConfiguration") && attribName.equals("Locations")) { finalType = schemaPack.getEClassifier("IfcLengthMeasure"); containerClass.getEAttributes().add(finalAttribute); if (finalType == EcorePackage.eINSTANCE.getEDouble()) { EAttribute stringAttribute = EcoreFactory.eINSTANCE.createEAttribute(); stringAttribute.setName("ListAsString");
private HashMapWrappedVirtualObject readWrappedValue(EStructuralFeature feature, ByteBuffer buffer, EClass eClass) throws BimserverDatabaseException { EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature("wrappedValue"); Object primitiveValue = readPrimitiveValue(eStructuralFeature.getEType(), buffer); HashMapWrappedVirtualObject eObject = new HashMapWrappedVirtualObject(eClass); eObject.setAttribute(eStructuralFeature, primitiveValue); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject()) { EStructuralFeature strFeature = eClass.getEStructuralFeature("wrappedValueAsString"); Object stringVal = readPrimitiveValue(EcorePackage.eINSTANCE.getEString(), buffer); eObject.setAttribute(strFeature, stringVal); } return eObject; }
@SuppressWarnings({ "rawtypes", "unchecked" }) private void setDoubleAsStringValues(IdEObject idEObject) { for (EAttribute eAttribute : idEObject.eClass().getEAllAttributes()) { if (eAttribute.getEType() == EcorePackage.eINSTANCE.getEDouble()) { EStructuralFeature asStringFeature = idEObject.eClass().getEStructuralFeature(eAttribute.getName() + "AsString"); if (asStringFeature != null) { if (eAttribute.isMany()) { List list = (List) idEObject.eGet(eAttribute); List listAsString = (List) idEObject.eGet(asStringFeature); for (int i = 0; i < list.size(); i++) { listAsString.set(i, "" + list.get(i)); } } else { idEObject.eSet(asStringFeature, "" + idEObject.eGet(eAttribute)); } } } } }
} else if (classifier == EcorePackage.eINSTANCE.getEFloat() || classifier == EcorePackage.eINSTANCE.getEFloatObject()) { return buffer.getFloat(); } else if (classifier == EcorePackage.eINSTANCE.getEDouble() || classifier == EcorePackage.eINSTANCE.getEDoubleObject()) { return buffer.getDouble(); } else if (classifier == EcorePackage.eINSTANCE.getEBoolean() || classifier == EcorePackage.eINSTANCE.getEBooleanObject()) {
wrapperAttrib.setEType(ePackage.getELong()); } else if (type.getDomain() instanceof RealType) { wrapperAttrib.setEType(ePackage.getEDouble()); } else if (type.getDomain() instanceof StringType) { wrapperAttrib.setEType(ePackage.getEString()); wrapperAttrib.setEType(schemaPack.getEClassifier("Tristate")); } else if (type.getDomain() instanceof NumberType) { wrapperAttrib.setEType(ePackage.getEDouble()); } else if (type.getDomain() instanceof BinaryType) { wrapperAttrib.setEType(ePackage.getEByteArray()); if (wrapperAttrib.getEType() == ePackage.getEDouble()) { EAttribute doubleStringAttribute = eFactory.createEAttribute(); doubleStringAttribute.setEType(ePackage.getEString());
} else if (classifier == EcorePackage.eINSTANCE.getEFloat() || classifier == EcorePackage.eINSTANCE.getEFloatObject()) { return buffer.getFloat(); } else if (classifier == EcorePackage.eINSTANCE.getEDouble() || classifier == EcorePackage.eINSTANCE.getEDoubleObject()) { return buffer.getDouble(); } else if (classifier == EcorePackage.eINSTANCE.getEShort() || classifier == EcorePackage.eINSTANCE.getEShortObject()) {
if (eClassifier == EcorePackage.eINSTANCE.getEString()) { return jsonReader.nextString(); } else if (eClassifier == EcorePackage.eINSTANCE.getEDouble()) { return jsonReader.nextDouble(); } else if (eClassifier == EcorePackage.eINSTANCE.getEBoolean()) {
public int getPrimitiveSize(EDataType eDataType) { if (eDataType == EcorePackage.eINSTANCE.getEInt() || eDataType == EcorePackage.eINSTANCE.getEIntegerObject()) { return 4; } else if (eDataType == EcorePackage.eINSTANCE.getEFloat() || eDataType == EcorePackage.eINSTANCE.getEFloatObject()) { return 4; } else if (eDataType == EcorePackage.eINSTANCE.getEBoolean() || eDataType == EcorePackage.eINSTANCE.getEBooleanObject()) { return 1; } else if (eDataType == EcorePackage.eINSTANCE.getEDate()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getELong() || eDataType == EcorePackage.eINSTANCE.getELongObject()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getEString()) { return AVERAGE_STRING_SIZE; } else if (eDataType == EcorePackage.eINSTANCE.getEDouble() || eDataType == EcorePackage.eINSTANCE.getEDoubleObject()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getEByteArray() || eDataType.getName().equals("DataHandler")) { return AVERAGE_BYTE_ARRAY_SIZE; } else if (eDataType instanceof EEnum) { return 4; } throw new RuntimeException("Unimplemented: " + eDataType); }
list.clear(); List asStringList = null; if (eAttribute.getEType() == EcorePackage.eINSTANCE.getEDouble()) { asStringList = (List)object.eGet(object.eClass().getEStructuralFeature(attributeName + "AsString")); asStringList.clear(); if (eAttribute.getEType() == EcorePackage.eINSTANCE.getEDouble()) { asStringList.add(String.valueOf(o));
private void writeWrappedValue(int pid, int rid, Object value, ByteBuffer buffer, PackageMetaData packageMetaData) throws BimserverDatabaseException { IdEObject wrappedValue = (IdEObject) value; EStructuralFeature eStructuralFeature = wrappedValue.eClass().getEStructuralFeature("wrappedValue"); Short cid = database.getCidOfEClass(wrappedValue.eClass()); buffer.order(ByteOrder.LITTLE_ENDIAN); buffer.putShort((short) -cid); buffer.order(ByteOrder.BIG_ENDIAN); writePrimitiveValue(eStructuralFeature, wrappedValue.eGet(eStructuralFeature), buffer); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject()) { EStructuralFeature fe = wrappedValue.eClass().getEStructuralFeature("wrappedValueAsString"); writePrimitiveValue(fe, wrappedValue.eGet(fe), buffer); } if (wrappedValue.eClass().getName().equals("IfcGloballyUniqueId")) { EClass eClass = packageMetaData.getEClass("IfcGloballyUniqueId"); if (wrappedValue.getOid() == -1) { ((IdEObjectImpl) wrappedValue).setOid(newOid(eClass)); } ByteBuffer valueBuffer = convertObjectToByteArray(wrappedValue, ByteBuffer.allocate(getExactSize(wrappedValue, packageMetaData, true)), packageMetaData); ByteBuffer keyBuffer = createKeyBuffer(pid, wrappedValue.getOid(), rid); try { database.getKeyValueStore().storeNoOverwrite(eClass.getEPackage().getName() + "_" + eClass.getName(), keyBuffer.array(), valueBuffer.array(), this); database.incrementCommittedWrites(1); } catch (BimserverLockConflictException e) { LOGGER.error("", e); } } }
private IdEObject readWrappedValue(EStructuralFeature feature, ByteBuffer buffer, EClass eClass, QueryInterface query) { EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature("wrappedValue"); Object primitiveValue = readPrimitiveValue(eStructuralFeature.getEType(), buffer, query); IdEObject eObject = createInternal(eClass, query); ((IdEObjectImpl) eObject).setLoaded(); // We don't want to go lazy load // this eObject.eSet(eStructuralFeature, primitiveValue); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject()) { EStructuralFeature strFeature = eClass.getEStructuralFeature("wrappedValueAsString"); Object stringVal = readPrimitiveValue(EcorePackage.eINSTANCE.getEString(), buffer, query); eObject.eSet(strFeature, stringVal); } return eObject; }
private int getPrimitiveSize(EDataType eDataType, Object val) { if (eDataType == EcorePackage.eINSTANCE.getEInt() || eDataType == EcorePackage.eINSTANCE.getEIntegerObject()) { return 4; } else if (eDataType == EcorePackage.eINSTANCE.getEFloat() || eDataType == EcorePackage.eINSTANCE.getEFloatObject()) { return 4; } else if (eDataType == EcorePackage.eINSTANCE.getEBoolean() || eDataType == EcorePackage.eINSTANCE.getEBooleanObject()) { return 1; } else if (eDataType == EcorePackage.eINSTANCE.getEDate()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getEShort()) { return 2; } else if (eDataType == EcorePackage.eINSTANCE.getELong() || eDataType == EcorePackage.eINSTANCE.getELongObject()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getEDouble() || eDataType == EcorePackage.eINSTANCE.getEDoubleObject()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getEString()) { if (val != null) { return 4 + ((String) val).getBytes(Charsets.UTF_8).length; } return 4; } else if (eDataType == EcorePackage.eINSTANCE.getEByteArray()) { if (val != null) { return 4 + ((byte[]) val).length; } return 4; } else if (eDataType instanceof EEnum) { return 4; } throw new RuntimeException("Unimplemented: " + eDataType); }
public int getPrimitiveSize(EDataType eDataType, Object val) { if (eDataType == EcorePackage.eINSTANCE.getEInt() || eDataType == EcorePackage.eINSTANCE.getEIntegerObject()) { return 4; } else if (eDataType == EcorePackage.eINSTANCE.getEShort() || eDataType == EcorePackage.eINSTANCE.getEShortObject()) { return 2; } else if (eDataType == EcorePackage.eINSTANCE.getEFloat() || eDataType == EcorePackage.eINSTANCE.getEFloatObject()) { return 4; } else if (eDataType == EcorePackage.eINSTANCE.getEBoolean() || eDataType == EcorePackage.eINSTANCE.getEBooleanObject()) { return 1; } else if (eDataType == EcorePackage.eINSTANCE.getEDate()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getELong() || eDataType == EcorePackage.eINSTANCE.getELongObject()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getEDouble() || eDataType == EcorePackage.eINSTANCE.getEDoubleObject()) { return 8; } else if (eDataType == EcorePackage.eINSTANCE.getEString()) { if (val != null) { return 4 + ((String) val).getBytes(Charsets.UTF_8).length; } return 4; } else if (eDataType == EcorePackage.eINSTANCE.getEByteArray()) { if (val != null) { return 4 + ((byte[]) val).length; } return 4; } else if (eDataType instanceof EEnum) { return 4; } throw new RuntimeException("Unimplemented: " + eDataType); }
private String convertType(EClassifier type) { if (type == EcorePackage.eINSTANCE.getEDouble() || type == EcorePackage.eINSTANCE.getEDoubleObject()) { return "double"; } else if (type == EcorePackage.eINSTANCE.getEInt() || type == EcorePackage.eINSTANCE.getEIntegerObject()) { return "int"; } else if (type == EcorePackage.eINSTANCE.getEShort() || type == EcorePackage.eINSTANCE.getEShortObject()) { return "short"; } else if (type == EcorePackage.eINSTANCE.getEBoolean() || type == EcorePackage.eINSTANCE.getEBooleanObject()) { return "boolean"; } else if (type == EcorePackage.eINSTANCE.getEByteArray()) { return "bytearray"; } else if (type == EcorePackage.eINSTANCE.getELong() || type == EcorePackage.eINSTANCE.getELongObject()) { return "long"; } else if (type == EcorePackage.eINSTANCE.getEString()) { return "string"; } else if (type instanceof EEnum) { return "enum"; } return type.getName(); } }
} else if (eType == EcorePackage.eINSTANCE.getELong() || eType == EcorePackage.eINSTANCE.getELongObject()) { return "List<Long>"; } else if (eType == EcorePackage.eINSTANCE.getEDouble() || eType == EcorePackage.eINSTANCE.getEDoubleObject()) { return "List<Double>"; } else if (eType == EcorePackage.eINSTANCE.getEBoolean() || eType == EcorePackage.eINSTANCE.getEBooleanObject()) { } else if (eType == EcorePackage.eINSTANCE.getEShort() || eType == EcorePackage.eINSTANCE.getEShortObject()) { return "Short"; } else if (eType == EcorePackage.eINSTANCE.getEDouble() || eType == EcorePackage.eINSTANCE.getEDoubleObject()) { return "Double"; } else if (eType == EcorePackage.eINSTANCE.getEBoolean() || eType == EcorePackage.eINSTANCE.getEBooleanObject()) {
Object wrappedVal = eObject.eGet(wrappedValueFeature); int refSize = 2 + getPrimitiveSize((EDataType) wrappedValueFeature.getEType(), wrappedVal); if (wrappedValueFeature.getEType() == EcorePackage.eINSTANCE.getEDouble() || wrappedValueFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject()) { EStructuralFeature wrappedStringFeature = wrappedValue.eClass().getEStructuralFeature("wrappedValueAsString"); String str = (String) eObject.eGet(wrappedStringFeature);
} else if (eFeature.getEType() == EcorePackage.eINSTANCE.getELong() || eFeature.getEType() == EcorePackage.eINSTANCE.getELongObject()) { throw new UnsupportedOperationException(); } else if (eFeature.getEType() == EcorePackage.eINSTANCE.getEDouble() || eFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject()) { bimServerClient.getLowLevelInterface().addDoubleAttribute(getTransactionId(), idEObject.getOid(), eFeature.getName(), (Double) notification.getNewValue()); } else if (eFeature.getEType() == EcorePackage.eINSTANCE.getEBoolean() || eFeature.getEType() == EcorePackage.eINSTANCE.getEBooleanObject()) {