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"); }
private static String constructNotifier(PropertyWrapper propertyWrapper) { return UmlgGenerationUtil.UmlgNotificationManager.getLast() + ".INSTANCE.notify(\n\t" + propertyWrapper.getTumlRuntimePropertyEnum() + ",\n\tChangeHolder.of(\n\t\tthis." + PropertyWrapper.from(propertyWrapper.getOtherEnd()).getter() + "()" + ",\n\t\t" + propertyWrapper.getTumlRuntimePropertyEnum() + ",\n\t\t" + "ChangeHolder.ChangeType.DELETE,\n\t\t" + "this.toJson()" + "\n\t)\n)"; }