@Override public void migrate(Schema schema, DatabaseSession databaseSession) { EClass serviceDescriptor = schema.getEClass("store", "ServiceDescriptor"); schema.createEAttribute(serviceDescriptor, "companyUrl", EcorePackage.eINSTANCE.getEString()); schema.createEAttribute(serviceDescriptor, "tokenUrl", EcorePackage.eINSTANCE.getEString()); schema.createEAttribute(serviceDescriptor, "newProfileUrl", EcorePackage.eINSTANCE.getEString()); schema.createEAttribute(serviceDescriptor, "registerUrl", EcorePackage.eINSTANCE.getEString()); schema.createEAttribute(serviceDescriptor, "authorizeUrl", EcorePackage.eINSTANCE.getEString()); }
@Override public void migrate(Schema schema, DatabaseSession databaseSession) { EClass geometryInfo = schema.getEClass("geometry", "GeometryInfo"); schema.createEAttribute(geometryInfo, "additionalData", EcorePackage.eINSTANCE.getEString()); }
@Override public void migrate(Schema schema, DatabaseSession databaseSession) { schema.createEAttribute(schema.getEClass("store", "NewService"), "stateJson", EcorePackage.eINSTANCE.getEString()); }
@Override public void migrate(Schema schema, DatabaseSession databaseSession) { schema.loadEcore("ifc2x3_tc1.ecore", getClass().getResourceAsStream("IFC2X3_TC1.ecore")); for (EClassifier eClassifier : schema.getEPackage("ifc2x3tc1").getEClassifiers()) { if (eClassifier instanceof EClass) { EClass eClass = (EClass)eClassifier; for (EStructuralFeature eStructuralFeature : eClass.getEStructuralFeatures()) { if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEString()) { // A hack because unfortunately not every "Name" field inherits from IfcRoot.Name, same could be true for GlobalId if (eStructuralFeature.getName().equals("Name") || eStructuralFeature.getName().equals("GlobalId")) { // System.out.println(eClass.getName() + "." + eStructuralFeature.getName()); schema.addIndex(eStructuralFeature); } } } } } }
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); } }
private int comparePrimitives(IdEObject o1, IdEObject o2) { EClass eClass = o1.eClass(); EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature("wrappedValue"); Object val1 = o1.eGet(eStructuralFeature); Object val2 = o2.eGet(eStructuralFeature); if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEString()) { return ((String) val1).compareTo((String) val2); } else if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEInt()) { return ((Integer) val1).compareTo((Integer) val2); } else { throw new RuntimeException("ni"); } }
@Override public void migrate(Schema schema, DatabaseSession databaseSession) { EAttribute projectUuid = schema.createEAttribute(schema.getEClass("store", "Project"), "uuid", EcorePackage.eINSTANCE.getEString()); projectUuid.getEAnnotations().add(createUniqueAnnotation()); schema.addIndex(projectUuid); EAttribute userUuid = schema.createEAttribute(schema.getEClass("store", "User"), "uuid", EcorePackage.eINSTANCE.getEString()); userUuid.getEAnnotations().add(createUniqueAnnotation()); schema.addIndex(userUuid); // Disabled for revisions for now, caused weird error // EAttribute revisionUuid = schema.createEAttribute(schema.getEClass("store", "Revision"), "uuid", EcorePackage.eINSTANCE.getEString()); // revisionUuid.getEAnnotations().add(createUniqueAnnotation()); // schema.addIndex(revisionUuid); }
private void createServerSettingsClass() { schema.createEAttribute(serverSettings, "sendConfirmationEmailAfterRegistration", ecorePackage.getEBoolean(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "allowSelfRegistration", ecorePackage.getEBooleanObject(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "allowUsersToCreateTopLevelProjects", ecorePackage.getEBoolean(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "checkinMergingEnabled", ecorePackage.getEBooleanObject(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "smtpServer", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "emailSenderAddress", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "emailSenderName", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "siteAddress", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "generateGeometryOnCheckin", ecorePackage.getEBoolean(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "allowOnlyWhitelisted", ecorePackage.getEBoolean(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "whitelistedDomains", ecorePackage.getEString(), Multiplicity.MANY); schema.createEAttribute(serverSettings, "hideUserListForNonAdmin", ecorePackage.getEBooleanObject(), Multiplicity.SINGLE); schema.createEAttribute(serverSettings, "protocolBuffersPort", ecorePackage.getEIntegerObject(), Multiplicity.SINGLE); }
@Override public void migrate(Schema schema, DatabaseSession databaseSession) { EEnum smtpProtocol = schema.createEEnum("store", "SmtpProtocol"); schema.createEEnumLiteral(smtpProtocol, "SMTP"); schema.createEEnumLiteral(smtpProtocol, "SMTPS"); EClass serverSettings = schema.getEClass("store", "ServerSettings"); schema.createEAttribute(serverSettings, "smtpUsername", EcorePackage.eINSTANCE.getEString()); schema.createEAttribute(serverSettings, "smtpPassword", EcorePackage.eINSTANCE.getEString()); schema.createEAttribute(serverSettings, "smtpPort", EcorePackage.eINSTANCE.getEInt()).setDefaultValue(25); schema.createEAttribute(serverSettings, "smtpProtocol", smtpProtocol).setDefaultValue("SMTP"); }
private void createRevisionClass() { schema.createEAttribute(revisionClass, "id", ecorePackage.getEIntegerObject(), Multiplicity.SINGLE); schema.createEReference(revisionClass, "user", user, Multiplicity.SINGLE); schema.createEAttribute(revisionClass, "date", ecorePackage.getEDate(), Multiplicity.SINGLE); schema.createEAttribute(revisionClass, "comment", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(revisionClass, "size", ecorePackage.getELongObject(), Multiplicity.SINGLE); revisionConcreteRevisions = schema.createEReference(revisionClass, "concreteRevisions", concreteRevisionClass, Multiplicity.MANY); schema.createEReference(revisionClass, "lastConcreteRevision", concreteRevisionClass, Multiplicity.SINGLE); revisionCheckouts = schema.createEReference(revisionClass, "checkouts", checkoutClass, Multiplicity.MANY); revisionProject = schema.createEReference(revisionClass, "project", project, Multiplicity.SINGLE); schema.createEAttribute(revisionClass, "tag", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(revisionClass, "lastError", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(revisionClass, "bmi", ecorePackage.getEIntegerObject(), Multiplicity.SINGLE); }
private void createUserClass() { schema.createEAttribute(user, "name", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(user, "passwordHash", ecorePackage.getEByteArray(), Multiplicity.SINGLE); schema.createEAttribute(user, "passwordSalt", ecorePackage.getEByteArray(), Multiplicity.SINGLE); userHasRightsOn = schema.createEReference(user, "hasRightsOn", project, Multiplicity.MANY); schema.createEAttribute(user, "state", objectStateEnum, Multiplicity.SINGLE); schema.createEAttribute(user, "createdOn", ecorePackage.getEDate(), Multiplicity.SINGLE); schema.createEReference(user, "createdBy", user, Multiplicity.SINGLE); schema.createEAttribute(user, "userType", userTypeEnum, Multiplicity.SINGLE); schema.createEAttribute(user, "username", ecorePackage.getEString(), Multiplicity.SINGLE).getEAnnotations().add(createUniqueAnnotation()); schema.createEAttribute(user, "lastSeen", ecorePackage.getEDate(), Multiplicity.SINGLE); schema.createEAttribute(user, "token", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(user, "validationToken", ecorePackage.getEByteArray(), Multiplicity.SINGLE); schema.createEAttribute(user, "validationTokenCreated", ecorePackage.getEDate(), Multiplicity.SINGLE); schema.createEReference(user, "userSettings", userSettings, Multiplicity.SINGLE); }
@Override public void migrate(Schema schema, DatabaseSession databaseSession) { EClass metricsClass = schema.createEClass("store", "Metrics"); EClass interfaceMetricClass = schema.createEClass("store", "InterfaceMetric"); EClass methodMetricClass = schema.createEClass("store", "MethodMetric"); schema.createEReference(metricsClass, "interfaces", interfaceMetricClass, Multiplicity.MANY).getEAnnotations().add(createEmbedsReferenceAnnotation()); schema.createEReference(interfaceMetricClass, "methods", methodMetricClass, Multiplicity.MANY).getEAnnotations().add(createEmbedsReferenceAnnotation()); schema.createEAttribute(interfaceMetricClass, "name", EcorePackage.eINSTANCE.getEString()); schema.createEAttribute(methodMetricClass, "name", EcorePackage.eINSTANCE.getEString()); schema.createEAttribute(methodMetricClass, "nrCalls", EcorePackage.eINSTANCE.getELongObject()); schema.createEAttribute(methodMetricClass, "lastCall", EcorePackage.eINSTANCE.getEDate()); schema.createEAttribute(methodMetricClass, "averageMs", EcorePackage.eINSTANCE.getELongObject()); schema.createEAttribute(methodMetricClass, "shortestMs", EcorePackage.eINSTANCE.getELongObject()); schema.createEAttribute(methodMetricClass, "longestMs", EcorePackage.eINSTANCE.getELongObject()); }
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); }
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); }
private void createProjectClass() { schema.createEAttribute(project, "id", ecorePackage.getEIntegerObject(), Multiplicity.SINGLE); EAttribute projectName = schema.createEAttribute(project, "name", ecorePackage.getEString(), Multiplicity.SINGLE); schema.addIndex(projectName); projectHasAuthorizedUsers = schema.createEReference(project, "hasAuthorizedUsers", user, Multiplicity.MANY); projectConcreteRevisions = schema.createEReference(project, "concreteRevisions", concreteRevisionClass, Multiplicity.MANY); projectRevisions = schema.createEReference(project, "revisions", revisionClass, Multiplicity.MANY); schema.createEReference(project, "lastConcreteRevision", concreteRevisionClass, Multiplicity.SINGLE); schema.createEReference(project, "lastRevision", revisionClass, Multiplicity.SINGLE); projectCheckouts = schema.createEReference(project, "checkouts", checkoutClass, Multiplicity.MANY); schema.createEAttribute(project, "state", objectStateEnum, Multiplicity.SINGLE); schema.createEAttribute(project, "createdDate", ecorePackage.getEDate(), Multiplicity.SINGLE); schema.createEReference(project, "createdBy", user, Multiplicity.SINGLE); projectGeoTag = schema.createEReference(project, "geoTag", geoTagClass, Multiplicity.SINGLE); projectSubProjects = schema.createEReference(project, "subProjects", project, Multiplicity.MANY); projectParentProject = schema.createEReference(project, "parent", project, Multiplicity.SINGLE); schema.createEAttribute(project, "description", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(project, "exportLengthMeasurePrefix", siPrefixEnum, Multiplicity.SINGLE); }
@Override public void migrate(Schema schema, DatabaseSession databaseSession) { EClass userClass = schema.getEClass("store", "User"); schema.addIndex(userClass.getEStructuralFeature("username")); EClass projectClass = schema.getEClass("store", "Project"); schema.addIndex(projectClass.getEStructuralFeature("id")); EClass pluginDescriptor = schema.getEClass("store", "PluginDescriptor"); schema.createEAttribute(pluginDescriptor, "identifier", EcorePackage.eINSTANCE.getEString()); schema.addIndex(pluginDescriptor.getEStructuralFeature("pluginClassName")); schema.addIndex(pluginDescriptor.getEStructuralFeature("identifier")); }
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; }
private void createConcreteRevisionClass() { schema.createEAttribute(concreteRevisionClass, "id", ecorePackage.getEIntegerObject(), Multiplicity.SINGLE); concreteRevisionProject = schema.createEReference(concreteRevisionClass, "project", project, Multiplicity.SINGLE); schema.createEAttribute(concreteRevisionClass, "checksum", ecorePackage.getEByteArray(), Multiplicity.SINGLE); concreteRevisionRevisions = schema.createEReference(concreteRevisionClass, "revisions", revisionClass, Multiplicity.MANY); schema.createEAttribute(concreteRevisionClass, "size", ecorePackage.getELongObject(), Multiplicity.SINGLE); schema.createEAttribute(concreteRevisionClass, "date", ecorePackage.getEDate(), Multiplicity.SINGLE); schema.createEAttribute(concreteRevisionClass, "lastError", ecorePackage.getEString(), Multiplicity.SINGLE); schema.createEAttribute(concreteRevisionClass, "clear", ecorePackage.getEBoolean(), Multiplicity.SINGLE); }
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 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(); } }