static void addFieldTypePropertyToLiteral(OJEnumLiteral literal, String fieldType) { OJField uriAttribute = new OJField(); uriAttribute.setType(UmlgRestletGenerationUtil.FieldType); uriAttribute.setInitExp(fieldType); uriAttribute.setName("fieldType"); literal.addToAttributeValues(uriAttribute); OJField jsonField = literal.findAttributeValue("json"); StringBuilder sb = new StringBuilder(); sb.append(", \\\"fieldType\\\": \\\"\" + " + fieldType + " + \"\\\"}\""); String initExp = jsonField.getInitExp(); int indexOf = initExp.lastIndexOf("}"); initExp = initExp.substring(0, indexOf) + sb.toString(); jsonField.setInitExp(initExp); }
public String toJavaString() { String result = ""; if (this.getOwner() != null) { // field is part of block statement result = result + visToJava(this); } if (result.length() > 0) result = result + " "; result = result + getType().getCollectionTypeName(); result = result + " " + getName(); if (getInitExp() != null && !getInitExp().equals("")) { result = result + " = " + getInitExp(); } result = result + ";"; if (!getComment().equals("")) { result = result + "\t// " + getComment(); } return result; }
private void addQualifiedNameEdgeSet(OJAnnotatedClass globalMap) { OJField set = new OJField(UmlgGenerationUtil.QualifiedNameEdgeSchemaSet, new OJPathName("java.util.Set").addToGenerics("String") ); set.setVisibility(OJVisibilityKind.PRIVATE); set.setInitExp("new HashSet<String>()"); globalMap.addToImports(new OJPathName("java.util.HashSet")); globalMap.addToImports(new OJPathName("java.util.Set")); globalMap.addToFields(set); }
public OJField getDeepCopy() { OJField copy = new OJField(); copyDeepInfoInto(copy); return copy; }
public void renameAll(Set<OJPathName> renamePathNames, String suffix) { getType().renameAll(renamePathNames, suffix); String init = getInitExp(); setInitExp(replaceAll(init, renamePathNames, suffix)); } }
protected void addToRouterEnum(String name, String path) { OJEnum routerEnum = (OJEnum) this.workspace.findOJClass(UmlgRestletGenerationUtil.RestletRouterEnum.toJavaString()); OJEnumLiteral ojLiteral = new OJEnumLiteral(name); OJField uri = new OJField(); uri.setType(new OJPathName("String")); uri.setInitExp(path); ojLiteral.addToAttributeValues(uri); OJField serverResourceClassField = new OJField(); serverResourceClassField.setType(new OJPathName("java.lang.Class")); serverResourceClassField.setInitExp(UmlgRestletGenerationUtil.UmlgDiagramPackageResource.getLast() + ".class"); ojLiteral.addToAttributeValues(serverResourceClassField); // routerEnum.addToImports(UmlgRestletGenerationUtil.UmlgDiagramPackageResource); routerEnum.addToImports(UmlgRestletGenerationUtil.ServerResource); routerEnum.addToLiterals(ojLiteral); OJAnnotatedOperation attachAll = routerEnum.findOperation("attachAll", UmlgRestletGenerationUtil.Router); attachAll.getBody().addToStatements(routerEnum.getName() + "." + ojLiteral.getName() + ".attach(router)"); }
add_getUriToObject_to_ToJson(clazz, annotatedClass); OJField uriPrimitiveField = new OJField(); uriPrimitiveField.setType(new OJPathName("String")); uriPrimitiveField.setName("tumlUri"); ojEnum.addToFields(uriPrimitiveField); OJField overloadedPostUriPrimitiveField = new OJField(); overloadedPostUriPrimitiveField.setType(new OJPathName("String")); overloadedPostUriPrimitiveField.setName("tumlOverloadedPostUri"); ojEnum.addToFields(overloadedPostUriPrimitiveField); OJAnnotatedOperation getter = new OJAnnotatedOperation("getTumlUri", uriPrimitiveField.getType()); getter.getBody().addToStatements("return this." + uriPrimitiveField.getName()); ojEnum.addToOperations(getter); OJAnnotatedOperation overloadedPostUriGetter = new OJAnnotatedOperation("getTumlOverloadedPostUri", overloadedPostUriPrimitiveField.getType()); overloadedPostUriGetter.getBody().addToStatements("return this." + overloadedPostUriPrimitiveField.getName()); ojEnum.addToOperations(overloadedPostUriGetter); constructor.addParam(uriPrimitiveField.getName(), uriPrimitiveField.getType()); constructor.getBody().addToStatements("this." + uriPrimitiveField.getName() + " = " + uriPrimitiveField.getName()); constructor.addParam(overloadedPostUriPrimitiveField.getName(), overloadedPostUriPrimitiveField.getType()); constructor.getBody().addToStatements("this." + overloadedPostUriPrimitiveField.getName() + " = " + overloadedPostUriPrimitiveField.getName());
OJEnum ojEnum = annotatedClass.findEnum(StringUtils.capitalize(model.getName()) + "RuntimePropertyEnum"); OJField uriPrimitiveField = new OJField(); uriPrimitiveField.setType(new OJPathName("String")); uriPrimitiveField.setName("tumlMetaDataUri"); ojEnum.addToFields(uriPrimitiveField); + StringUtils.capitalize(uriPrimitiveField.getName()), uriPrimitiveField.getType()); getter.getBody().addToStatements("return this." + uriPrimitiveField.getName()); ojEnum.addToOperations(getter); constructor.addParam(uriPrimitiveField.getName(), uriPrimitiveField.getType()); constructor.getBody().addToStatements("this." + uriPrimitiveField.getName() + " = " + uriPrimitiveField.getName()); OJField uriAttribute = new OJField(); uriAttribute.setType(new OJPathName("String")); uriAttribute.setInitExp(uri); uriAttribute.setName("tumlMetaDataUri"); literal.addToAttributeValues(uriAttribute); sb.append(", \\\"tumlMetaDataUri\\\": \\"); sb.append(uri.substring(0, uri.length() - 1) + "\\\""); String initExp = jsonField.getInitExp(); int indexOf = initExp.indexOf("}"); initExp = initExp.substring(0, indexOf) + sb.toString() + "}\""; jsonField.setInitExp(initExp);
private void addHasOnlyOneCompositeParent(OJAnnotatedClass annotatedClass, Class clazz) { OJAnnotatedOperation hasOnlyOneCompositeParent = new OJAnnotatedOperation("hasOnlyOneCompositeParent", "boolean"); UmlgGenerationUtil.addOverrideAnnotation(hasOnlyOneCompositeParent); OJField result = new OJField(hasOnlyOneCompositeParent.getBody(), "result", "int"); result.setInitExp("0"); if (UmlgClassOperations.hasCompositeOwner(clazz)) { Set<Property> otherEndsToComposite = UmlgClassOperations.getOtherEndToComposite(clazz); for (Property otherEndToComposite : otherEndsToComposite) { if (!otherEndToComposite.isDerivedUnion()) { hasOnlyOneCompositeParent.getBody().addToStatements("result = result + (" + new PropertyWrapper(otherEndToComposite).getter() + "() != null ? 1 : 0)"); } } } hasOnlyOneCompositeParent.getBody().addToStatements("return result == 1"); annotatedClass.addToOperations(hasOnlyOneCompositeParent); }
private void addINSTANCE(OJAnnotatedClass globalMap) { OJField instance = new OJField("INSTANCE", globalMap.getPathName()); instance.setVisibility(OJVisibilityKind.PUBLIC); instance.setStatic(true); instance.setInitExp("new " + globalMap.getPathName().getLast() + "()"); globalMap.addToFields(instance); }
public void copyDeepInfoInto(OJField copy) { super.copyDeepInfoInto(copy); copy.setInitExp(getInitExp()); if (getType() != null) { copy.setType(getType().getDeepCopy()); } }
@Override public void visitBefore(Model element) { OJEnum restletRouterEnum = new OJEnum(UmlgRestletGenerationUtil.RestletRouterEnum.getLast()); OJPackage ojPackage = new OJPackage(UmlgRestletGenerationUtil.UmlgBasePath.toJavaString()); restletRouterEnum.setMyPackage(ojPackage); addToSource(restletRouterEnum); OJField isOnePrimitiveField = new OJField(); isOnePrimitiveField.setType(new OJPathName("String")); isOnePrimitiveField.setName("uri"); restletRouterEnum.addToFields(isOnePrimitiveField); OJField inverseField = new OJField(); inverseField.setType(new OJPathName("java.lang.Class<? extends ServerResource>")); inverseField.setName("serverResource"); restletRouterEnum.addToFields(inverseField); restletRouterEnum.implementGetter(); restletRouterEnum.createConstructorFromFields(); OJAnnotatedOperation attach = new OJAnnotatedOperation("attach"); attach.addParam("router", UmlgRestletGenerationUtil.Router); attach.getBody().addToStatements("router.attach(uri, serverResource)"); restletRouterEnum.addToOperations(attach); OJAnnotatedOperation attachAll = new OJAnnotatedOperation("attachAll"); attachAll.setStatic(true); attachAll.addParam("router", UmlgRestletGenerationUtil.Router); restletRouterEnum.addToOperations(attachAll); }
if (pWrap.isPrimitive()) { if (pWrap.isNumber()) { field = new OJField(pWrap.fieldname(), pWrap.javaTypePath().replaceGeneric(0, "Number")); field.setInitExp("new " + pWrap.javaTumlMemoryTypePath().replaceGeneric(0, "Number").getLast() + "((Collection<Number>)propertyMap.get(\"" + pWrap.getName() + "\"))"); } else { field = new OJField(pWrap.fieldname(), pWrap.javaTypePath()); field.setInitExp("new " + pWrap.javaTumlMemoryTypePath().getLast() + "((Collection<" + pWrap.javaBaseTypePath() + ">)propertyMap.get(\"" + pWrap.getName() + "\"))"); annotatedClass.addToImports(new OJPathName("java.util.Collection")); } else if (pWrap.isEnumeration()) { field = new OJField(pWrap.fieldname(), "Collection<String>"); field.setInitExp("(Collection<String>)propertyMap.get(\"" + pWrap.getName() + "\")"); annotatedClass.addToImports(pWrap.javaTumlMemoryTypePath()); annotatedClass.addToImports(new OJPathName("java.util.Collection")); } else if (pWrap.isComponent()) { field = new OJField(pWrap.fieldname() + "Map", "List<Map<String, Object>>"); field.setInitExp("(ArrayList<Map<String, Object>>)propertyMap.get(\"" + pWrap.getName() + "\")"); annotatedClass.addToImports(pWrap.javaTumlMemoryTypePath()); annotatedClass.addToImports(new OJPathName("java.util.Collection")); } else if (pWrap.getDataTypeEnum() != null) { field = new OJField(pWrap.fieldname(), new OJPathName("java.util.Collection").addToGenerics("String")); field.setInitExp("(Collection<String>)propertyMap.get(\"" + pWrap.getName() + "\")"); annotatedClass.addToImports(new OJPathName("java.util.Collection")); } else { field = new OJField(pWrap.fieldname() + "Map", "List<Map<String, Integer>>"); field.setInitExp("(ArrayList<Map<String, Integer>>)propertyMap.get(\"" + pWrap.getName() + "\")"); annotatedClass.addToImports(pWrap.javaTumlMemoryTypePath()); annotatedClass.addToImports(new OJPathName("java.util.Collection"));
protected void addPrivateIdVariable(Classifier clazz, OJAnnotatedClass annotatedClass) { OJField privateId = new OJField(getIdFieldName(clazz), new OJPathName("Object")); privateId.setVisibility(OJVisibilityKind.PRIVATE); annotatedClass.addToFields(privateId); }
private void addDefaultSerialization(OJAnnotatedClass annotatedClass) { OJField defaultSerialization = new OJField(annotatedClass, "serialVersionUID", new OJPathName("long")); defaultSerialization.setFinal(true); defaultSerialization.setStatic(true); defaultSerialization.setInitExp("1L"); }
private void addINSTANCE(OJAnnotatedClass root, Model model) { OJField INSTANCE = new OJField("INSTANCE", root.getPathName()); INSTANCE.setStatic(true); INSTANCE.setInitExp("new " + StringUtils.capitalize(model.getName()) + "()"); root.addToFields(INSTANCE); }
private void addTmpIdField(OJAnnotatedClass annotatedClass) { OJField tmpId = new OJField("tmpId", "String"); tmpId.setComment("tmpId is only used the umlg restlet gui. It is never persisted. Its value is generated by the gui."); tmpId.setVisibility(OJVisibilityKindGEN.PRIVATE); annotatedClass.addToFields(tmpId); }
public void implementGetter() { for (OJField field : getFields()) { String name = field.getName(); if (name.startsWith("_")) { name = name.substring(1); } OJAnnotatedOperation getter = new OJAnnotatedOperation((field.getType().getLast().equals("boolean") ? "is" : "get") + StringUtils.capitalize(name), field.getType()); getter.getBody().addToStatements("return this." + field.getName()); addToOperations(getter); } }