@Override public boolean filter(Element e) { return e instanceof Class && !((Class) e).isAbstract() && !(e instanceof Behavior); } });
@Override public boolean evaluateOn(Element e) { if (!(e instanceof Class)) { return false; } Class clazz = (Class) e; return !clazz.isAbstract() && !UmlgClassOperations.hasCompositeOwner(clazz); } });
@Override public boolean evaluateOn(Element e) { if (!(e instanceof Class)) { return false; } if ((e instanceof OpaqueBehavior)) { return false; } Class clazz = (Class) e; return !clazz.isAbstract() && !UmlgClassOperations.hasCompositeOwner(clazz) && !(clazz instanceof AssociationClass); } });
@Override public boolean evaluateOn(Element e) { if (!(e instanceof Class)) { return false; } Class clazz = (Class) e; return !clazz.isAbstract() && !UmlgClassOperations.hasCompositeOwner(clazz) && !(clazz instanceof AssociationClass); } });
@Override public boolean evaluateOn(Element e) { if (!(e instanceof Class)) { return false; } Class clazz = (Class) e; return !clazz.isAbstract() && !UmlgClassOperations.hasCompositeOwner(clazz); } });
@Override @VisitSubclasses({Class.class, AssociationClass.class}) public void visitBefore(Class clazz) { OJAnnotatedClass annotatedClass = findOJClass(clazz); if (clazz.getGenerals().isEmpty()) { addImplementsTumlRestletNode(annotatedClass); } if (!clazz.isAbstract()) { addGetUmlName(annotatedClass, clazz); } }
private void addAndImplementUmlgLibNodeOnOriginalClass(OJAnnotatedClass annotatedClass, Class clazz, OJPathName metaClassPathName) { OJAnnotatedOperation getMetaNode = new OJAnnotatedOperation("getMetaNode"); getMetaNode.setReturnType(UmlgGenerationUtil.UmlgMetaNode); annotatedClass.addToOperations(getMetaNode); getMetaNode.setAbstract(clazz.isAbstract()); if (!clazz.isAbstract()) { annotatedClass.addToImports(metaClassPathName); getMetaNode.getBody().addToStatements("return " + UmlgClassOperations.getMetaClassName(clazz) + ".getInstance()"); } }
@Override @VisitSubclasses({Class.class, AssociationClass.class}) public void visitBefore(Class clazz) { if (!UmlgClassOperations.hasCompositeOwner(clazz) && !clazz.isAbstract()) { OJAnnotatedClass root = this.workspace.findOJClass(UmlgGenerationUtil.UmlgRootPackage.toJavaString() + "." + StringUtils.capitalize(ModelLoader.INSTANCE.getModel().getName())); addGetterToAppRootForRootEntity(clazz, root); } // if (!clazz.isAbstract()) { // addGetterToMetaClassForRootEntity(clazz); // } }
@Override public Object caseClass(org.eclipse.uml2.uml.Class class_) { if (!isEGenericType(class_) && !class_.isTemplateParameter()) { org.eclipse.uml2.uml.Package package_ = class_ .getNearestPackage(); if (package_ != null) { EClass eClass = EcoreFactory.eINSTANCE.createEClass(); elementToEModelElementMap.put(class_, eClass); EPackage ePackage = (EPackage) doSwitch(package_); ePackage.getEClassifiers().add(eClass); setName(eClass, class_); eClass.setAbstract(class_.isAbstract()); defaultCase(class_); return eClass; } } return super.caseClass(class_); }
@Override @VisitSubclasses({Class.class, AssociationClass.class}) public void visitBefore(Class clazz) { OJAnnotatedClass annotatedClass = findOJClass(clazz); if (UmlgClassOperations.hasCompositeOwner(clazz)) { addConstructorWithOwnerAsParameter(annotatedClass, clazz); } else { if (UmlgClassOperations.getSpecializations(clazz).isEmpty() && !(clazz instanceof AssociationClass)) { addImplementRootNodeInterface(annotatedClass); // addEdgeToRoot(annotatedClass, clazz); } if (!clazz.isAbstract()) { // implementRootNode(clazz, annotatedClass); } } //This adds a constructor for every composite owner addGetOwningObject(annotatedClass, clazz); addHasOnlyOneCompositeParent(annotatedClass, clazz); addCompositeChildrenToDelete(annotatedClass, clazz); }
@Override @VisitSubclasses({Class.class, AssociationClass.class}) public void visitBefore(Class clazz) { if (!clazz.isAbstract()) { OJPackage ojPackage = new OJPackage(Namer.name(clazz.getNearestPackage())); OJAnnotatedClass annotatedClass = new OJAnnotatedClass(getLookupServerResourceImplName(clazz)); annotatedClass.setSuperclass(UmlgRestletGenerationUtil.ServerResource); annotatedClass.setMyPackage(ojPackage); annotatedClass.setVisibility(UmlgClassOperations.getVisibility(clazz.getVisibility())); addToSource(annotatedClass); addPrivateIdVariable(clazz, annotatedClass); addDefaultConstructor(annotatedClass); if (!clazz.isAbstract()) { addPutRepresentation(clazz, annotatedClass); } addToRouterEnum(clazz, annotatedClass); } }
private void addVertexEntries(OJAnnotatedClass globalMap, Class clazz) { OJAnnotatedOperation addAllEntries = globalMap.findOperation("addAllVertexEntries"); List<Classifier> generals = UmlgClassOperations.getGeneralizationHierarchy(clazz); List<String> generalsQualifiedNames = convertClassifierHierarchy(generals); if (UmlgBehavioredClassifierOperations.hasBehavior(clazz)) { generalsQualifiedNames.add(UmlgGenerationUtil.BASE_BEHAVIORED_CLASSIFIER_QUALIFIEDNAME); } else { generalsQualifiedNames.add(UmlgGenerationUtil.BaseUmlgCompositionNodeQualifiedName); } Collections.reverse(generalsQualifiedNames); addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameVertexSchemaSet + ".add(Arrays.asList(" + convertToCommaSeparatedList(generalsQualifiedNames) + "))"); //Add in the meta classes if (!clazz.isAbstract()) { OJAnnotatedClass metaClass = new OJAnnotatedClass(UmlgClassOperations.getMetaClassName(clazz)); OJPackage ojPackage = new OJPackage(Namer.name(clazz.getNearestPackage()) + ".meta"); metaClass.setMyPackage(ojPackage); String qualifiedName = metaClass.getQualifiedName(); addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameVertexSchemaSet + ".add(Arrays.asList(\"" + qualifiedName + "\"))"); } //Special entry for the root vertex and deletion vertex addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameVertexSchemaSet + ".add(Arrays.asList(\"rootVertex\"))"); addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameVertexSchemaSet + ".add(Arrays.asList(\"deletionVertex\"))"); globalMap.addToImports(UmlgClassOperations.getPathName(clazz)); globalMap.addToImports("java.util.Arrays"); }
private void add_getUriToObject_to_ToJson(Class clazz, OJAnnotatedClass annotatedClass) { if (clazz.getGeneralizations().isEmpty()) { OJAnnotatedOperation toJson = annotatedClass.findOperation("toJson", new OJPathName("Boolean")); OJSimpleStatement s = (OJSimpleStatement) toJson.getBody().findStatement(ToFromJsonCreator.URI_FOR_RESTFULL); s.setExpression("sb.append(\"\\\"uri\\\": \" + getUri())"); OJAnnotatedOperation toJsonWithoutCompositeParent = annotatedClass.findOperation("toJsonWithoutCompositeParent", new OJPathName("Boolean")); s = (OJSimpleStatement) toJsonWithoutCompositeParent.getBody().findStatement("uri"); s.setExpression("sb.append(\"\\\"uri\\\": \" + getUri())"); } if (!clazz.isAbstract()) { OJAnnotatedOperation getUri = new OJAnnotatedOperation("getUri"); UmlgGenerationUtil.addOverrideAnnotation(getUri); getUri.setReturnType(new OJPathName("String")); getUri.setVisibility(OJVisibilityKind.PUBLIC); getUri.getBody().addToStatements("return (\"\\\"\" + " + UmlgClassOperations.propertyEnumName(clazz) + ".getUriToObject() + \"\\\"\")"); annotatedClass.addToOperations(getUri); } }
@Override @VisitSubclasses({Class.class, AssociationClass.class}) public void visitBefore(org.eclipse.uml2.uml.Class clazz) { OJAnnotatedClass annotatedClass = new OJAnnotatedClass(UmlgClassOperations.className(clazz)); OJPackage ojPackage = new OJPackage(Namer.name(clazz.getNearestPackage())); annotatedClass.setMyPackage(ojPackage); annotatedClass.setVisibility(UmlgClassOperations.getVisibility(clazz.getVisibility())); annotatedClass.setAbstract(clazz.isAbstract()); annotatedClass.getDefaultConstructor(); // The super class will be set later after all classes have been created if (UmlgBehavioredClassifierOperations.hasBehavior(clazz)) { annotatedClass.setSuperclass(UmlgGenerationUtil.BASE_BEHAVIORED_CLASSIFIER); } else { annotatedClass.setSuperclass(UmlgGenerationUtil.BaseUmlgCompositionNode); } addToSource(annotatedClass); }
@Override @VisitSubclasses({Class.class, AssociationClass.class}) public void visitBefore(Class clazz) { if (!clazz.isAbstract() && !UmlgClassOperations.hasCompositeOwner(clazz) && !(clazz instanceof AssociationClass)) { OJPackage ojPackage = new OJPackage(Namer.name(clazz.getNearestPackage())); OJAnnotatedClass annotatedClass = new OJAnnotatedClass(UmlgClassOperations.className(clazz) + "s_ServerResourceImpl"); annotatedClass.setSuperclass(UmlgRestletGenerationUtil.ServerResource); annotatedClass.setMyPackage(ojPackage); annotatedClass.setVisibility(UmlgClassOperations.getVisibility(clazz.getVisibility())); addToSource(annotatedClass); addDefaultConstructor(annotatedClass); addGetRootObjectRepresentation(clazz, annotatedClass); addOptionsRootObjectRepresentation(clazz, annotatedClass); addPostObjectRepresentation(clazz, annotatedClass); addToRouterEnum(clazz, annotatedClass); } }
private void addAllInstances(OJAnnotatedClass annotatedClass, Class clazz) { OJAnnotatedOperation allInstances = new OJAnnotatedOperation("allInstances"); allInstances.setStatic(true); if (UmlgClassOperations.getConcreteImplementations(clazz).isEmpty()) { allInstances.setReturnType(UmlgGenerationUtil.umlgSet.getCopy().addToGenerics(UmlgClassOperations.getPathName(clazz))); } else { String pathName = "? extends " + UmlgClassOperations.getPathName(clazz).getLast(); allInstances.setReturnType(UmlgGenerationUtil.umlgSet.getCopy().addToGenerics(pathName)); } OJField result = new OJField("result", UmlgGenerationUtil.umlgSet.getCopy().addToGenerics(UmlgClassOperations.getPathName(clazz))); result.setInitExp("new " + UmlgGenerationUtil.umlgMemorySet.getCopy().addToGenerics(UmlgClassOperations.getPathName(clazz)).getLast() + "()"); allInstances.getBody().addToLocals(result); Set<Classifier> specializations = UmlgClassOperations.getConcreteImplementations(clazz); if (!clazz.isAbstract()) { specializations.add(clazz); } for (Classifier c : specializations) { annotatedClass.addToImports(UmlgClassOperations.getPathName(c)); allInstances.getBody().addToStatements("result.addAll(" + UmlgGenerationUtil.UMLGPathName.getLast() + ".get().allInstances(" + UmlgClassOperations.getPathName(c).getLast() + ".class.getName()))"); annotatedClass.addToImports(UmlgClassOperations.getPathName(c)); } annotatedClass.addToImports(UmlgGenerationUtil.UMLGPathName); allInstances.getBody().addToStatements("return result"); annotatedClass.addToImports(UmlgGenerationUtil.umlgMemorySet); annotatedClass.addToOperations(allInstances); }
private void addAllInstancesWithFilter(OJAnnotatedClass annotatedClass, Class clazz) { OJAnnotatedOperation allInstances = new OJAnnotatedOperation("allInstances"); allInstances.addToParameters(new OJParameter("filter", UmlgGenerationUtil.Filter)); allInstances.setStatic(true); if (UmlgClassOperations.getConcreteImplementations(clazz).isEmpty()) { allInstances.setReturnType(UmlgGenerationUtil.umlgSet.getCopy().addToGenerics(UmlgClassOperations.getPathName(clazz))); } else { String pathName = "? extends " + UmlgClassOperations.getPathName(clazz).getLast(); allInstances.setReturnType(UmlgGenerationUtil.umlgSet.getCopy().addToGenerics(pathName)); } OJField result = new OJField("result", UmlgGenerationUtil.umlgSet.getCopy().addToGenerics(UmlgClassOperations.getPathName(clazz))); result.setInitExp("new " + UmlgGenerationUtil.umlgMemorySet.getCopy().addToGenerics(UmlgClassOperations.getPathName(clazz)).getLast() + "()"); allInstances.getBody().addToLocals(result); Set<Classifier> specializations = UmlgClassOperations.getConcreteImplementations(clazz); if (!clazz.isAbstract()) { specializations.add(clazz); } for (Classifier c : specializations) { annotatedClass.addToImports(UmlgClassOperations.getPathName(c)); allInstances.getBody().addToStatements("result.addAll(UMLG.get().allInstances(" + UmlgClassOperations.getPathName(c).getLast() + ".class.getName(), filter))"); annotatedClass.addToImports(UmlgClassOperations.getPathName(c)); } allInstances.getBody().addToStatements("return result"); annotatedClass.addToImports(UmlgGenerationUtil.umlgMemorySet); // annotatedClass.addToImports(UmlgGenerationUtil.Root); annotatedClass.addToOperations(allInstances); }
@Override @VisitSubclasses({Class.class, AssociationClass.class}) public void visitBefore(Class clazz) { if (!clazz.isAbstract() && !UmlgClassOperations.hasCompositeOwner(clazz) && !(clazz instanceof AssociationClass)) { OJAnnotatedInterface annotatedInf = new OJAnnotatedInterface(UmlgClassOperations.className(clazz) + "s_LookupServerResource"); OJPackage ojPackage = new OJPackage(Namer.name(clazz.getNearestPackage())); annotatedInf.setMyPackage(ojPackage); addToSource(annotatedInf); OJAnnotatedClass annotatedClass = new OJAnnotatedClass(UmlgClassOperations.className(clazz) + "s_LookupServerResourceImpl"); annotatedClass.setSuperclass(UmlgRestletGenerationUtil.ServerResource); annotatedClass.setMyPackage(ojPackage); annotatedClass.addToImplementedInterfaces(annotatedInf.getPathName()); annotatedClass.setVisibility(UmlgClassOperations.getVisibility(clazz.getVisibility())); addToSource(annotatedClass); addDefaultConstructor(annotatedClass); addPostObjectRepresentation(clazz, annotatedInf, annotatedClass); addToRouterEnum(clazz, annotatedClass); } }
private void addEdgeEntries(OJAnnotatedClass globalMap, Class clazz) { OJAnnotatedOperation addAllEntries = globalMap.findOperation("addAllEdgeEntries"); Set<Property> properties = UmlgClassOperations.getPropertiesThatHaveAndEdge(clazz); for (Property p : properties) { PropertyWrapper pWrap = new PropertyWrapper(p); String edgeName; if (!(clazz instanceof AssociationClass)) { edgeName = UmlgGenerationUtil.getEdgeName(pWrap.getProperty()); } else { edgeName = UmlgGenerationUtil.getEdgeName(pWrap.getProperty()) + "_" + pWrap.getName() + "_AC"; } addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameEdgeSchemaSet + ".add(\"" + edgeName + "\")"); } //Add in the class and meta class's edge to root if (!clazz.isAbstract()) { addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameEdgeSchemaSet + ".add(\"" + UmlgGenerationUtil.getEdgeToRootLabelStrategyMeta(clazz) + "\")"); addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameEdgeSchemaSet + ".add(\"" + UmlgGenerationUtil.getEdgeToRootLabelStrategy(clazz) + "\")"); } //Special edges for deletion and all instances node addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameEdgeSchemaSet + ".add(\"deletedVertexEdgeToRoot\")"); addAllEntries.getBody().addToStatements("this." + UmlgGenerationUtil.QualifiedNameEdgeSchemaSet + ".add(\"allinstances\")"); globalMap.addToImports(UmlgGenerationUtil.UmlgLabelConverterFactoryPathName); }
addMetaClassGetterToRoot(clazz, metaClass); addDefaultCreate(metaClass); if (!clazz.isAbstract()) { addAndImplementUmlgLibNodeOnOriginalClass(annotatedClass, clazz, metaClass.getPathName());