public OJForStatement getDeepCopy() { OJForStatement copy = new OJForStatement(); copyDeepInfoInto(copy); return copy; }
/** Returns a copy of this instance. True parts, i.e. associations marked 'aggregate' or 'composite', and attributes, are copied as well. References to other objects, i.e. associations not marked 'aggregate' or 'composite', will not be copied. The returned copy will refer to the same objects as the original (this) instance. */ public OJElement getCopy() { OJForStatement result = new OJForStatement(); this.copyInfoInto(result); return result; }
private void addCreateEdgeSchemas(OJAnnotatedClass globalMap) { OJAnnotatedOperation createEdgeSchemas = new OJAnnotatedOperation("createEdgeSchemas"); UmlgGenerationUtil.addOverrideAnnotation(createEdgeSchemas); createEdgeSchemas.addParam("edgeSchemaCreator", UmlgGenerationUtil.EdgeSchemaCreator); OJForStatement ojForStatement = new OJForStatement("label", new OJPathName("String"), UmlgGenerationUtil.QualifiedNameEdgeSchemaSet); ojForStatement.getBody().addToStatements("edgeSchemaCreator.create(label)"); createEdgeSchemas.getBody().addToStatements(ojForStatement); globalMap.addToOperations(createEdgeSchemas); }
private void addCreateVertexSchemas(OJAnnotatedClass globalMap) { OJAnnotatedOperation createVertexSchemas = new OJAnnotatedOperation("createVertexSchemas"); UmlgGenerationUtil.addOverrideAnnotation(createVertexSchemas); createVertexSchemas.addParam("vertexSchemaCreator", UmlgGenerationUtil.VertexSchemaCreator); OJForStatement ojForStatement = new OJForStatement("hierarchy", new OJPathName("List").addToGenerics("String"), UmlgGenerationUtil.QualifiedNameVertexSchemaSet); ojForStatement.getBody().addToStatements("vertexSchemaCreator.create(hierarchy)"); createVertexSchemas.getBody().addToStatements(ojForStatement); globalMap.addToOperations(createVertexSchemas); }
private static void buildGetAssociationClassForPropertyInstance(OJAnnotatedClass owner, PropertyWrapper propertyWrapper) { OJAnnotatedOperation getAC = new OJAnnotatedOperation(propertyWrapper.associationClassGetterForProperty(), propertyWrapper.getAssociationClassPathName()); getAC.addParam(propertyWrapper.fieldname(), propertyWrapper.javaBaseTypePath()); OJForStatement forAC = new OJForStatement("ac", propertyWrapper.getAssociationClassPathName(), "this." + propertyWrapper.getAssociationClassFakePropertyName()); OJIfStatement ifStatement = new OJIfStatement("ac." + propertyWrapper.getter() + "().equals(" + propertyWrapper.fieldname() + ")", "return ac"); forAC.getBody().addToStatements(ifStatement); getAC.getBody().addToStatements(forAC); getAC.getBody().addToStatements("return null"); owner.addToOperations(getAC); }
OJForStatement ojForStatement = new OJForStatement("row", new OJPathName("Map<String,Integer>"), pWrap.fieldname() + "Map"); ifNotNull.addToThenPart(ojForStatement); OJSimpleStatement ojSimpleStatementConstructor = new OJSimpleStatement(pWrap.javaBaseTypePath().getLast() + " " + pWrap.fieldname() + " = " + UmlgGenerationUtil.UMLGAccess
public static void buildDeleteNotification(OJAnnotatedClass owner, OJAnnotatedOperation delete, PropertyWrapper propertyWrapper) { OJIfStatement ifChanged = new OJIfStatement(); ifChanged.setCondition("true"); PropertyWrapper otherEnd = PropertyWrapper.from(propertyWrapper.getOtherEnd()); if (otherEnd.isMany()) { OJForStatement forStatement = new OJForStatement(otherEnd.getName(), otherEnd.javaBaseTypePath(), "this." + otherEnd.getter() + "()"); forStatement.getBody().addToStatements(constructNotifierForOtherEndMany(propertyWrapper, otherEnd)); delete.getBody().addToStatements(0, forStatement); } else { ifChanged.addToThenPart( constructNotifier(propertyWrapper) ); delete.getBody().addToStatements(0, ifChanged); } owner.addToImports(UmlgClassOperations.getPathName(propertyWrapper.getOwningType()).append(UmlgClassOperations.propertyEnumName(propertyWrapper.getOwningType()))); owner.addToImports(UmlgGenerationUtil.UmlgNotificationManager); owner.addToImports(UmlgGenerationUtil.ChangeHolder); owner.addToImports(UmlgGenerationUtil.ChangeHolder); owner.addToImports("java.util.Optional"); }
if (!pWrap.isDataType()) { if (pWrap.isMany()) { OJForStatement forChildToDelete = new OJForStatement("child", pWrap.javaBaseTypePath(), pWrap.getter() + "()"); forChildToDelete.getBody().addToStatements("child.delete()"); delete.getBody().addToStatements(forChildToDelete);
} else if (pWrap.isMany() && !pWrap.isDataType() && pWrap.isComponent()) { OJForStatement ojForStatement = new OJForStatement("row", new OJPathName("Map<String,Object>"), pWrap.fieldname() + "Map"); ifNotNull.addToThenPart(ojForStatement);
if (pWrap.isDataType()) { if (pWrap.isEnumeration()) { ojForStatement = new OJForStatement("s", new OJPathName("String"), "(String[])umlgNode"); } else if (pWrap.isPrimitive()) { ojForStatement = new OJForStatement("s", new OJPathName(pWrap.asJavaPrimiteType()), "(" + pWrap.asJavaPrimiteType() + "[])umlgNode"); } else { ojForStatement = new OJForStatement("s", new OJPathName(pWrap.getDataTypeEnum().getPersistentType()), "(" + pWrap.getDataTypeEnum().getPersistentType() + "[])umlgNode"); ojForStatement = new OJForStatement("s", pWrap.javaBaseTypePath(), "(" + pWrap.javaBaseTypePath().getLast() + "[])umlgNode");
OJForStatement forArray = new OJForStatement("overloadedJsonMap", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForInsert.addToThenPart(forArray); ifDelete.addToThenPart(ifArrayForDelete); ojTryStatement.getTryPart().addToStatements(ifDelete); forArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForDelete.addToThenPart(forArray); ojTryStatement.getTryPart().addToStatements(ifUpdate); forArray = new OJForStatement("overloadedJsonMap", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForUpdate.addToThenPart(forArray); jsonResultBlock.addToLocals(count); OJForStatement forConcreteClassifiers = new OJForStatement("baseClass", new OJPathName("Class").addToGenerics("? extends " + pWrap.javaBaseTypePath().getLast()), "resultMap.keySet()"); jsonResultBlock.addToStatements(forConcreteClassifiers); if (pWrap.isOne()) { forConcreteClassifiers.getBody().addToLocals(objectListCount); OJForStatement forObjectList = new OJForStatement("object", UmlgRestletGenerationUtil.UmlgNodeJsonHolder, "objectList"); forObjectList.getBody().addToStatements("result.append(object.toJson())"); OJIfStatement ifObjectListCountSmallerThanSize = new OJIfStatement("objectListCount++ < objectList.size()", "result.append(\",\")");
OJForStatement forArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForInsert.addToThenPart(forArray); ifDelete.addToThenPart(ifArrayForDelete); ojTryStatement.getTryPart().addToStatements(ifDelete); forArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForDelete.addToThenPart(forArray); ojTryStatement.getTryPart().addToStatements(ifUpdate); forArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForUpdate.addToThenPart(forArray);
} else { OJForStatement associationClassPairs = new OJForStatement("pair", propertyWrapper.getAssociationClassPair(), propertyWrapper.getAssociationClassFakePropertyName()); associationClassPairs.getBody().addToStatements(propertyWrapper.adder() + "(pair.getFirst(), pair.getSecond())"); adder.getBody().addToStatements(associationClassPairs); OJForStatement forAll = new OJForStatement(elementName, propertyWrapper.javaBaseTypePath(), propertyWrapper.fieldname()); forAll.getBody().addToStatements("this." + propertyWrapper.adder() + "(" + elementName + ")"); adder.getBody().addToStatements(forAll);
OJForStatement insertForArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForInsert.addToThenPart(insertForArray); OJForStatement updateForArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForUpdate.addToThenPart(updateForArray); OJForStatement deleteForArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForDelete.addToThenPart(deleteForArray); ojTryStatement.getTryPart().addToStatements("json.append(\"{\\\"data\\\": [\")"); OJForStatement forObjectList = new OJForStatement("umlgNode", UmlgGenerationUtil.UMLG_NODE, "objectList"); forObjectList.getBody().addToStatements("json.append(umlgNode.toJsonWithoutCompositeParent(true))"); OJIfStatement ifCountSize = new OJIfStatement("++count < objectList.size()", "json.append(\",\")");
ojForStatement = new OJForStatement("s", pWrap.javaBaseTypePath(), "(" + pWrap.javaBaseTypePath().getLast() + "[])umlgNode");
} else if (pWrap.isMany() && !pWrap.isDataType() && !pWrap.isComponent()) { ifNotNull.addToThenPart(pWrap.clearer() + "()"); OJForStatement ojForStatement = new OJForStatement("row", new OJPathName("Map<String,Integer>"), pWrap.fieldname() + "Map"); ifNotNull.addToThenPart(ojForStatement); OJSimpleStatement ojSimpleStatementConstructor = new OJSimpleStatement(pWrap.javaBaseTypePath().getLast() + " " + pWrap.fieldname() + " = " + UmlgGenerationUtil.UMLGAccess ifNotNull.addToThenPart(pWrap.clearer() + "()"); OJForStatement ojForStatement = new OJForStatement("row", new OJPathName("Map<String,Object>"), pWrap.fieldname() + "Map"); ifNotNull.addToThenPart(ojForStatement); } else if (pWrap.isMany() && pWrap.isEnumeration()) { ifNotNull.addToThenPart(pWrap.clearer() + "()"); OJForStatement ojForStatement = new OJForStatement("enumLiteral", new OJPathName("String"), pWrap.fieldname()); ojForStatement.getBody().addToStatements(pWrap.adder() + "(" + pWrap.javaBaseTypePath().getLast() + ".valueOf(enumLiteral))"); ifNotNull.addToThenPart(ojForStatement); } else if (pWrap.isMany() && pWrap.getDataTypeEnum() != null) { ifNotNull.addToThenPart(pWrap.clearer() + "()"); OJForStatement ojForStatement = new OJForStatement("value", new OJPathName("String"), pWrap.fieldname()); OJForStatement ojForStatement; if (pWrap.isNumber()) { ojForStatement = new OJForStatement("value", new OJPathName("Number"), pWrap.fieldname()); ojForStatement = new OJForStatement("value", pWrap.javaBaseTypePath(), pWrap.fieldname()); ojForStatement.getBody().addToStatements(pWrap.adder() + "(" + pWrap.javaBaseTypePath().getLast() + ".valueOf(value))");
} else if (pWrap.isMany() && !pWrap.isDataType() && !pWrap.isComponent()) { ifNotNull.addToThenPart(pWrap.clearer() + "()"); OJForStatement ojForStatement = new OJForStatement("row", new OJPathName("Map<String,Integer>"), pWrap.fieldname() + "Map"); ifNotNull.addToThenPart(ojForStatement); OJSimpleStatement ojSimpleStatementConstructor = new OJSimpleStatement(pWrap.javaBaseTypePath().getLast() + " " + pWrap.fieldname() + " = " + UmlgGenerationUtil.UMLGAccess ifNotNull.addToThenPart(pWrap.clearer() + "()"); OJForStatement ojForStatement = new OJForStatement("row", new OJPathName("Map<String,Object>"), pWrap.fieldname() + "Map"); ifNotNull.addToThenPart(ojForStatement); } else if (pWrap.isMany() && pWrap.isEnumeration()) { ifNotNull.addToThenPart(pWrap.clearer() + "()"); OJForStatement ojForStatement = new OJForStatement("enumLiteral", new OJPathName("String"), pWrap.fieldname()); ojForStatement.getBody().addToStatements(pWrap.adder() + "(" + pWrap.javaBaseTypePath().getLast() + ".valueOf(enumLiteral))"); ifNotNull.addToThenPart(ojForStatement); } else if (pWrap.isMany() && pWrap.isDataType()) { ifNotNull.addToThenPart(pWrap.clearer() + "()"); OJForStatement ojForStatement = new OJForStatement("value", pWrap.javaBaseTypePath(), pWrap.fieldname()); ojForStatement.getBody().addToStatements(pWrap.adder() + "(" + pWrap.javaBaseTypePath().getLast() + ".valueOf(value))"); ifNotNull.addToThenPart(ojForStatement);
ifArrayForInsert.getThenPart().addToLocals(insertArray); ifInsert.getThenPart().addToStatements(ifArrayForInsert); OJForStatement insertForArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForInsert.addToThenPart(insertForArray); ifArrayForUpdate.getThenPart().addToLocals(updateArray); ifUpdate.getThenPart().addToStatements(ifArrayForUpdate); OJForStatement updateForArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForUpdate.addToThenPart(updateForArray); ifArrayForDelete.getThenPart().addToLocals(deleteArray); ifDelete.getThenPart().addToStatements(ifArrayForDelete); OJForStatement deleteForArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForDelete.addToThenPart(deleteForArray);
ojTryStatement.getTryPart().addToStatements(ifUpdate); OJForStatement forArray = new OJForStatement("map", new OJPathName("java.util.Map").addToGenerics(new OJPathName("String")).addToGenerics( new OJPathName("Object")), "array"); ifArrayForUpdate.addToThenPart(forArray); jsonResultBlock.addToLocals(count); OJForStatement forConcreteClassifiers = new OJForStatement("baseClass", new OJPathName("Class").addToGenerics("? extends " + pWrap.getAssociationClassPathName().getLast()), "resultMap.keySet()"); jsonResultBlock.addToStatements(forConcreteClassifiers); if (pWrap.isOne()) {
asJson.getBody().addToLocals(count); OJForStatement forLiterals = new OJForStatement("l", new OJPathName(enumName), ojEnum.getName() + ".values()"); forLiterals.getBody().addToStatements("sb.append(l.toJson())"); OJIfStatement ifCountSize = new OJIfStatement("count < " + ojEnum.getName() + ".values().length");