/*************************************************************************** * Copyright (C) 2011 by Balint Maschio <bmaschio@italianasoftware.com> * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU Library General Public License as * * published by the Free Software Foundation; either version 2 of the * * License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU Library General Public * * License along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * * * For details about the authors of this software, see the AUTHORS file. * ***************************************************************************/ package joliex.java.impl; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; import jolie.lang.NativeType; import jolie.lang.parse.ast.InputPortInfo; import jolie.lang.parse.ast.InterfaceDefinition; import jolie.lang.parse.ast.OneWayOperationDeclaration; import jolie.lang.parse.ast.OperationDeclaration; import jolie.lang.parse.ast.OutputPortInfo; import jolie.lang.parse.ast.RequestResponseOperationDeclaration; import jolie.lang.parse.ast.types.TypeDefinition; import jolie.lang.parse.ast.types.TypeDefinitionLink; import jolie.lang.parse.ast.types.TypeInlineDefinition; import jolie.lang.parse.util.ProgramInspector; import joliex.java.support.GeneralDocumentCreator; import joliex.java.support.GeneralProgramVisitor; import joliex.java.support.treeOLObject; import jolie.runtime.Value; /** * * @author balint maschio & michele morgagni */ public class JavaDocumentCreator { private Vector<TypeDefinition> subclass; private boolean subtypePresent = false; private String namespace; private LinkedHashMap<String, TypeDefinition> typeMap; private LinkedHashMap<String, TypeDefinition> subTypeMap; ProgramInspector inspector; private static HashMap<NativeType,String> javaNativeEquivalent = new HashMap<NativeType,String>(); private static HashMap<NativeType,String> javaNativeMethod = new HashMap<NativeType,String>(); public JavaDocumentCreator(ProgramInspector inspector, String namespace) { this.inspector = inspector; this.namespace = namespace; javaNativeEquivalent.put(NativeType.INT, "Integer"); javaNativeEquivalent.put(NativeType.BOOL, "Boolean"); javaNativeEquivalent.put(NativeType.DOUBLE, "Double"); javaNativeEquivalent.put(NativeType.LONG, "Long"); javaNativeEquivalent.put(NativeType.STRING, "String"); javaNativeEquivalent.put(NativeType.ANY, "Object"); javaNativeEquivalent.put(NativeType.RAW, "ByteArray"); javaNativeMethod.put(NativeType.INT, "intValue()"); javaNativeMethod.put(NativeType.BOOL, "boolValue()"); javaNativeMethod.put(NativeType.DOUBLE, "doubleValue()"); javaNativeMethod.put(NativeType.LONG, "longValue()"); javaNativeMethod.put(NativeType.STRING, "strValue()"); javaNativeMethod.put(NativeType.RAW, "byteArrayValue()"); } public void ConvertDocument() { typeMap = new LinkedHashMap<String, TypeDefinition>(); subTypeMap = new LinkedHashMap<String, TypeDefinition>(); subclass = new Vector<TypeDefinition>(); int counterSubClass; TypeDefinition[] support = inspector.getTypes(); InputPortInfo[] inputPorts = inspector.getInputPorts(); OperationDeclaration operation; RequestResponseOperationDeclaration requestResponseOperation; for (InputPortInfo inputPort : inputPorts) { Collection<OperationDeclaration> operations = inputPort.operations(); String sourceString=inputPort.context().source().toString(); System.out.println("Questo e il path del file:"+sourceString+ " per Porta :"+inputPort.id()); if ((sourceString.contains("/"))||sourceString.contains("\\")){ System.out.println("name input port: " + inputPort.id() + " " + new Integer(inputPorts.length).toString()); Iterator<OperationDeclaration> operatorIterator = operations.iterator(); while (operatorIterator.hasNext()) { operation = operatorIterator.next(); System.out.println(operation.id()); if (operation instanceof RequestResponseOperationDeclaration) { requestResponseOperation = (RequestResponseOperationDeclaration) operation; if (!typeMap.containsKey(requestResponseOperation.requestType().id())) { typeMap.put(requestResponseOperation.requestType().id(), requestResponseOperation.requestType()); } if (!typeMap.containsKey(requestResponseOperation.responseType().id())) { typeMap.put(requestResponseOperation.responseType().id(), requestResponseOperation.responseType()); } } else { OneWayOperationDeclaration oneWayOperationDeclaration = (OneWayOperationDeclaration) operation; if (!typeMap.containsKey(oneWayOperationDeclaration.requestType().id())) { typeMap.put(oneWayOperationDeclaration.requestType().id(), oneWayOperationDeclaration.requestType()); } } } } } Iterator<Entry<String, TypeDefinition>> typeMapIterator = typeMap.entrySet().iterator(); while (typeMapIterator.hasNext()) { Entry<String, TypeDefinition> typeEntry = typeMapIterator.next(); if (!(typeEntry.getKey().equals("undefined"))) { parseSubType(typeEntry.getValue()); } } Iterator<Entry<String, TypeDefinition>> subTypeMapIterator = subTypeMap.entrySet().iterator(); while (subTypeMapIterator.hasNext()) { Entry<String, TypeDefinition> subTypeEntry = subTypeMapIterator.next(); typeMap.put(subTypeEntry.getKey(), subTypeEntry.getValue()); } typeMapIterator = typeMap.entrySet().iterator(); while (typeMapIterator.hasNext()) { Entry<String, TypeDefinition> typeEntry = typeMapIterator.next(); if (!(typeEntry.getKey().equals("undefined"))) { subclass = new Vector<TypeDefinition>(); subtypePresent = false; counterSubClass = 0; String nameFile = typeEntry.getKey() + ".java"; Writer writer; try { writer = new BufferedWriter(new FileWriter(nameFile)); ConvertTypes(typeEntry.getValue(), writer); writer.flush(); writer.close(); } catch (IOException ex) { Logger.getLogger(JavaDocumentCreator.class.getName()).log(Level.SEVERE, null, ex); } } } } public void ConvertInterface(InterfaceDefinition interfaceDefinition, Writer writer) throws IOException { throw new UnsupportedOperationException("Not supported yet."); } public void ConvertOutputPorts(OutputPortInfo outputPortInfo, Writer writer) throws IOException { throw new UnsupportedOperationException("Not supported yet."); } public void ConvertInputPorts(InputPortInfo inputPortInfo, Writer writer) throws IOException { throw new UnsupportedOperationException("Not supported yet."); } public void ConvertOperations(OperationDeclaration operationDeclaration, Writer writer) throws IOException { throw new UnsupportedOperationException("Not supported yet."); } public void ConvertTypes(TypeDefinition typeDefinition, Writer writer) throws IOException { StringBuilder builderHeaderclass = new StringBuilder(); builderHeaderclass.append("package " + namespace + ";\n"); importsCreate(builderHeaderclass, typeDefinition); builderHeaderclass.append("public class " + typeDefinition.id() + " {" + "\n"); if (typeDefinition.hasSubTypes()) { ConvertSubTypes(typeDefinition, builderHeaderclass); } else{ builderHeaderclass.append("}\n"); } writer.append(builderHeaderclass.toString()); } private void ConvertSubTypes(TypeDefinition typeDefinition, StringBuilder builderHeaderclass){ Set<Map.Entry<String, TypeDefinition>> supportSet = typeDefinition.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { Map.Entry me = (Map.Entry) i.next(); System.out.print(((TypeDefinition) me.getValue()).id() + "\n"); /*if (((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink){ typeMap.put(((TypeDefinitionLink) me.getValue()).linkedTypeName(),((TypeDefinitionLink)me.getValue()).linkedType()); }else*/ if ((((TypeDefinition) me.getValue()) instanceof TypeInlineDefinition) && (((TypeDefinition) me.getValue()).hasSubTypes())) { builderHeaderclass.append("public class " + ((TypeDefinition) me.getValue()).id() + " {" + "\n"); ConvertSubTypes((TypeDefinition) me.getValue(), builderHeaderclass); } } variableCreate(builderHeaderclass, typeDefinition); constructorCreate(builderHeaderclass, typeDefinition); methodsCreate(builderHeaderclass, typeDefinition); builderHeaderclass.append("}\n"); } private void closeClass(Writer writer) { StringBuilder builderHeaderclass = new StringBuilder(); builderHeaderclass.append(" }\n"); try { writer.append(builderHeaderclass.toString()); } catch (IOException ex) { Logger.getLogger(JavaDocumentCreator.class.getName()).log(Level.SEVERE, null, ex); } } private void importsCreate(StringBuilder stringBuilder, TypeDefinition type) { String nameFile = type.context().sourceName(); TypeDefinition supportType = type; //System.out.print( "element of the list Oltree " + supportType.id() + "\n" ); List<String> a = new LinkedList<String>(); boolean addListImport = false; if (supportType.hasSubTypes()) { subtypePresent = true; stringBuilder.append("import java.util.List;\n"); stringBuilder.append("import java.util.LinkedList;\n"); stringBuilder.append("import jolie.runtime.Value;\n"); stringBuilder.append("import jolie.runtime.ByteArray;\n"); stringBuilder.append("\n"); } } private void variableCreate(StringBuilder stringBuilder, TypeDefinition type) { if (type.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = type.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { TypeDefinition subType = (TypeDefinition) (((Map.Entry)i.next()).getValue()); if(subType instanceof TypeDefinitionLink){ //link if (((TypeDefinitionLink) subType).cardinality().max() > 1) { stringBuilder.append("private List<" + ((TypeDefinitionLink) subType).linkedType().id() + "> " + "_" + ((TypeDefinitionLink) subType).id() + ";\n"); } else { stringBuilder.append("private " + ((TypeDefinitionLink) subType).linkedType().id() + " " + "_" + ((TypeDefinitionLink) subType).id() + ";\n"); } }else if(subType instanceof TypeInlineDefinition){ if(subType.hasSubTypes()){ /*if(subType.nativeType()==NativeType.VOID){ //manage type with subtypes and a rootValue }else{ //manage type with subtypes without rootValue }*/ if (subType.cardinality().max() > 1) { stringBuilder.append("private List<"+subType.id()+"> " + "_" + subType.id() + ";\n"); }else{ stringBuilder.append("private "+subType.id()+" _" + subType.id() + ";\n"); } }else{ //native type String javaCode = javaNativeEquivalent.get(subType.nativeType()); if (subType.cardinality().max() > 1) { stringBuilder.append("private List<"+javaCode+"> " + "_" + subType.id() + ";\n"); }else{ stringBuilder.append("private "+javaCode+" _" + subType.id() + ";\n"); } } }else{ System.out.println("WARNING: variable is not a Link or an Inline Definition!"); } } } if(type.hasSubTypes() && type.nativeType()!=NativeType.VOID){ stringBuilder.append("private "+javaNativeEquivalent.get(type.nativeType())+" rootValue;\n"); } stringBuilder.append("\n"); } private void constructorCreate(StringBuilder stringBuilder, TypeDefinition type/*, boolean naturalType*/) { //constructor with parameters stringBuilder.append("public " + type.id() + "(Value v){\n"); stringBuilder.append("\n"); //stringBuilder.append("this.v=v;\n"); if (type.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = type.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { TypeDefinition subType = (TypeDefinition) (((Map.Entry)i.next()).getValue()); if(subType instanceof TypeDefinitionLink){ //link if (((TypeDefinitionLink) subType).cardinality().max() > 1) { stringBuilder.append("_" + subType.id() + "= new LinkedList<" + ((TypeDefinitionLink) subType).linkedType().id() + ">();" + "\n"); //stringBuilder.append("}\n"); //to check: stringBuilder.append("if (v.hasChildren(\"").append(subType.id()).append("\")){\n"); stringBuilder.append("for(int counter" + subType.id() + "=0;" + "counter" + subType.id() + "<v.getChildren(\"" + subType.id() + "\").size();counter" + subType.id() + "++){\n"); stringBuilder.append("" + ((TypeDefinitionLink) subType).linkedTypeName() + " support").append(subType.id()).append(" = new " + ((TypeDefinitionLink) subType).linkedTypeName() + "(v.getChildren(\"").append(subType.id()).append("\").get(counter").append(subType.id()).append("));\n"); stringBuilder.append("" + "_" + subType.id() + ".add(support" + subType.id() + ");\n"); stringBuilder.append("}\n"); //stringBuilder.append( nameVariable +"= new LinkedList<" +((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();"+ "\n" ); stringBuilder.append("}\n"); } else { stringBuilder.append("if (v.hasChildren(\"").append(subType.id()).append("\")){\n"); stringBuilder.append("_" + subType.id() + " = new " + ((TypeDefinitionLink) subType).linkedTypeName() + "( v.getFirstChild(\"" + subType.id() + "\"));" + "\n"); stringBuilder.append("}\n"); } }else if(subType instanceof TypeInlineDefinition){ if(subType.hasSubTypes()){ /*if(subType.nativeType()==NativeType.VOID){ //manage type with subtypes and a rootValue }else{ //manage type with subtypes without rootValue }*/ if (((TypeInlineDefinition) subType).cardinality().max() > 1) { stringBuilder.append("_" + subType.id() + "= new LinkedList<" + subType.id() + ">();" + "\n"); //to check: stringBuilder.append("if (v.hasChildren(\"").append(subType.id()).append("\")){\n"); stringBuilder.append("for(int counter" + subType.id() + "=0;" + "counter" + subType.id() + "<v.getChildren(\"" + subType.id() + "\").size();counter" + subType.id() + "++){\n"); stringBuilder.append("" + subType.id() + " support").append(subType.id()).append("=new " + subType.id() + "(v.getChildren(\"").append(subType.id()).append("\").get(counter").append(subType.id()).append("));\n"); stringBuilder.append("" + "_" + subType.id() + ".add(support" + subType.id() + ");\n"); stringBuilder.append("}\n"); //stringBuilder.append( nameVariable +"= new LinkedList<" +((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();"+ "\n" ); stringBuilder.append("}\n"); } else { stringBuilder.append("if (v.hasChildren(\"").append(subType.id()).append("\")){\n"); stringBuilder.append("_" + subType.id() + " = new " + subType.id() + "( v.getFirstChild(\"" + subType.id() + "\"));" + "\n"); stringBuilder.append("}\n"); } }else{ //native type String javaCode = javaNativeEquivalent.get(subType.nativeType()); String javaMethod = javaNativeMethod.get(subType.nativeType()); if (((TypeDefinition) subType).cardinality().max() > 1) { stringBuilder.append("_" + subType.id() + "= new LinkedList<"+javaCode+">();" + "\n"); stringBuilder.append("if (v.hasChildren(\"").append(subType.id()).append("\")){\n"); stringBuilder.append("for(int counter" + subType.id() + "=0; " + "counter" + subType.id() + "<v.getChildren(\"" + subType.id() + "\").size(); counter" + subType.id() + "++){\n"); if(subType.nativeType()!=NativeType.ANY){ stringBuilder.append("" + javaCode + " support").append(subType.id()).append(" = v.getChildren(\"").append(subType.id()).append("\").get(counter").append(subType.id()).append(")."+javaMethod+";\n"); stringBuilder.append("" + "_" + subType.id() + ".add(support" + subType.id() + ");\n"); }else{ stringBuilder.append("if(v.getChildren(\"" + subType.id() + "\").get(counter"+subType.id()+").isDouble()){\n" + "" + javaCode + " support").append(subType.id()).append(" = v.getChildren(\"" + subType.id() + "\").get(counter"+subType.id()+").doubleValue();\n" + "" + "_" + subType.id() + ".add(support" + subType.id() + ");\n" + "}else if(v.getChildren(\"" + subType.id() + "\").get(counter"+subType.id()+").isString()){\n" + "" + javaCode + " support").append(subType.id()).append(" = v.getChildren(\"" + subType.id() + "\").get(counter"+subType.id()+").strValue();\n" + "" + "_" + subType.id() + ".add(support" + subType.id() + ");\n" + "}else if(v.getChildren(\"" + subType.id() + "\").get(counter"+subType.id()+").isInt()){\n" + "" + javaCode + " support").append(subType.id()).append(" = v.getChildren(\"" + subType.id() + "\").get(counter"+subType.id()+").intValue();\n" + "" + "_" + subType.id() + ".add(support" + subType.id() + ");\n" + "}\n"); } stringBuilder.append("}\n"); //stringBuilder.append( nameVariable +"= new LinkedList<" +((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();"+ "\n" ); stringBuilder.append("}\n"); } else { stringBuilder.append("if (v.hasChildren(\"").append(subType.id()).append("\")){\n"); if(subType.nativeType()!=NativeType.ANY){ stringBuilder.append("_" + subType.id() + "= v.getFirstChild(\"" + subType.id() + "\")."+javaMethod+";" + "\n"); }else{ stringBuilder.append("if(v.getFirstChild(\"" + subType.id() + "\").isDouble()){\n" + "_"+subType.id()+" = v.getFirstChild(\"" + subType.id() + "\").doubleValue();\n" + "}else if(v.getFirstChild(\"" + subType.id() + "\").isString()){\n" + "_"+subType.id()+" = v.getFirstChild(\"" + subType.id() + "\").strValue();\n" + "}else if(v.getFirstChild(\"" + subType.id() + "\").isInt()){\n" + "_"+subType.id()+" = v.getFirstChild(\"" + subType.id() + "\").intValue();\n" + "}\n"); } stringBuilder.append("}\n"); } } }else{ System.out.println("WARNING: variable is not a Link or an Inline Definition!"); } } } if(type.hasSubTypes() && type.nativeType()!=NativeType.VOID){ String javaCode = javaNativeEquivalent.get(type.nativeType()); String javaMethod = javaNativeMethod.get(type.nativeType()); if(type.nativeType()!=NativeType.ANY){ stringBuilder.append("rootValue = v."+javaMethod+";" + "\n"); }else{ stringBuilder.append("if(v.isDouble()){\n" + "rootValue = v.doubleValue();\n" + "}else if(v.isString()){\n" + "rootValue = v.strValue();\n" + "}else if(v.isInt()){\n" + "rootValue = v.intValue();\n" + "}\n"); } } stringBuilder.append("}\n"); //constructor without parameters stringBuilder.append("public " + type.id() + "(){\n"); stringBuilder.append("\n"); if (type.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = type.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { TypeDefinition subType = (TypeDefinition) (((Map.Entry)i.next()).getValue()); if(subType instanceof TypeDefinitionLink){ //link if (((TypeDefinitionLink) subType).cardinality().max() > 1) { stringBuilder.append("_" + subType.id() + "= new LinkedList<" + ((TypeDefinitionLink) subType).linkedType().id() + ">();" + "\n"); //stringBuilder.append("}\n"); } }else if(subType instanceof TypeInlineDefinition){ if(subType.hasSubTypes()){ if (((TypeInlineDefinition) subType).cardinality().max() > 1) { stringBuilder.append("_" + subType.id() + "= new LinkedList<" + subType.id() + ">();" + "\n"); } /*if(subType.nativeType()==NativeType.VOID){ //manage type with subtypes and a rootValue }else{ //manage type with subtypes without rootValue }*/ }else{ //native type String javaCode = javaNativeEquivalent.get(subType.nativeType()); //String javaMethod = javaNativeMethod.get(subType.nativeType()); if (((TypeDefinition) subType).cardinality().max() > 1) { stringBuilder.append("_" + subType.id() + "= new LinkedList<"+javaCode+">();" + "\n"); } } }else{ System.out.println("WARNING: variable is not a Link or an Inline Definition!"); } } } stringBuilder.append("}\n"); } private void methodsCreate(StringBuilder stringBuilder, TypeDefinition type/*, boolean naturalType*/) { if (type.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = type.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { TypeDefinition subType = (TypeDefinition) (((Map.Entry)i.next()).getValue()); String nameVariable = subType.id(); String startingChar = nameVariable.substring(0, 1); String remaningStr = nameVariable.substring(1, nameVariable.length()); String nameVariableOp = startingChar.toUpperCase() + remaningStr; if(subType instanceof TypeDefinitionLink){ //link if (subType.cardinality().max() > 1) { stringBuilder.append("public " + ((TypeDefinitionLink) subType).linkedTypeName() + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\nreturn " + "_" + nameVariable + ".get(index);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\nreturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(" + ((TypeDefinitionLink) subType).linkedTypeName() + " value ){\n"); stringBuilder.append("\n" + "_" + nameVariable + ".add(value);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); stringBuilder.append("" + "_" + nameVariable + ".remove(index);\n"); stringBuilder.append("}\n"); } else { stringBuilder.append("public " + ((TypeDefinitionLink) subType).linkedTypeName() + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\nreturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "(" + ((TypeDefinitionLink) subType).linkedTypeName() + " value ){\n"); stringBuilder.append("\n" + "_" + nameVariable + " = value;\n"); stringBuilder.append("}\n"); } }else if(subType instanceof TypeInlineDefinition){ if(subType.hasSubTypes()){ /*if(subType.nativeType()==NativeType.VOID){ //manage type with subtypes and a rootValue }else{ //manage type with subtypes without rootValue }*/ if (subType.cardinality().max() > 1) { stringBuilder.append("public " + subType.id() + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\nreturn " + "_" + nameVariable + ".get(index);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\nreturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(" + subType.id() + " value ){\n"); stringBuilder.append("\n" + "_" + nameVariable + ".add(value);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); stringBuilder.append("" + "_" + nameVariable + ".remove(index);\n"); stringBuilder.append("}\n"); } else { stringBuilder.append("public " + subType.id() + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\nreturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "(" + subType.id() + " value ){\n"); stringBuilder.append("\n" + "_" + nameVariable + " = value;\n"); stringBuilder.append("}\n"); } }else{ //native type String javaCode = javaNativeEquivalent.get(subType.nativeType()); String javaMethod = javaNativeMethod.get(subType.nativeType()); if (subType.nativeType()!=NativeType.VOID) { if (subType.cardinality().max() > 1) { stringBuilder.append("public int get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\nreturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + javaCode + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("return " + "_" + nameVariable + ".get(index);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value("+javaCode+" value ){\n"); stringBuilder.append("" + javaCode+" support").append(nameVariable).append(" = value;\n"); stringBuilder.append("" + "_" + nameVariable + ".add(" + "support" + nameVariable + " );\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); stringBuilder.append("" + "_" + nameVariable + ".remove(index);\n"); stringBuilder.append("}\n"); }else{ stringBuilder.append("public " + javaCode + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\nreturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "(" + javaCode + " value ){\n"); stringBuilder.append("\n" + "_" + nameVariable + " = value;\n"); stringBuilder.append("}\n"); } } } }else{ System.out.println("WARNING: variable is not a Link or an Inline Definition!"); } } if(type.hasSubTypes() && type.nativeType()!=NativeType.VOID){ String javaCode = javaNativeEquivalent.get(type.nativeType()); String javaMethod = javaNativeMethod.get(type.nativeType()); stringBuilder.append("public " + javaCode + " getRootValue(){\n"); stringBuilder.append("\nreturn " + "rootValue;\n"); stringBuilder.append("}\n"); stringBuilder.append("public void setRootValue("+javaCode+" value){\n"); stringBuilder.append("\nrootValue = value;\n"); stringBuilder.append("}\n"); } } //getValue stringBuilder.append("public " + "Value getValue(){\n"); stringBuilder.append("Value vReturn = Value.create();\n"); if (type.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = type.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { TypeDefinition subType = (TypeDefinition) (((Map.Entry)i.next()).getValue()); if(subType instanceof TypeDefinitionLink){ //link if (subType.cardinality().max() > 1) { stringBuilder.append("if(_").append(subType.id()).append("!=null){\n"); stringBuilder.append("for(int counter" + subType.id() + "=0;" + "counter" + subType.id() + "<" + "_" + subType.id() + ".size();counter" + subType.id() + "++){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\").deepCopy(" + "_" + subType.id() + ".get(counter" + subType.id() + ").getValue());\n"); stringBuilder.append("}\n"); stringBuilder.append("}\n"); } else { stringBuilder.append("if((_").append(subType.id()).append("!=null)){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".deepCopy(" + "_" + subType.id() + ".getValue());\n"); stringBuilder.append("}\n"); } }else if(subType instanceof TypeInlineDefinition){ if(subType.hasSubTypes()){ /*if(subType.nativeType()==NativeType.VOID){ //manage type with subtypes and a rootValue }else{ //manage type with subtypes without rootValue }*/ if (subType.cardinality().max() > 1) { stringBuilder.append("if(_").append(subType.id()).append("!=null){\n"); stringBuilder.append("for(int counter" + subType.id() + "=0;" + "counter" + subType.id() + "<" + "_" + subType.id() + ".size();counter" + subType.id() + "++){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\").deepCopy(" + "_" + subType.id() + ".get(counter" + subType.id() + ").getValue());\n"); stringBuilder.append("}\n"); stringBuilder.append("}\n"); } else { stringBuilder.append("if((_").append(subType.id()).append("!=null)){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".deepCopy(" + "_" + subType.id() + ".getValue());\n"); stringBuilder.append("}\n"); } }else{ //native type String javaCode = javaNativeEquivalent.get(type.nativeType()); String javaMethod = javaNativeMethod.get(type.nativeType()); if (subType.cardinality().max() > 1) { stringBuilder.append("if(_").append(subType.id()).append("!=null){\n"); stringBuilder.append("for(int counter" + subType.id() + "=0;" + "counter" + subType.id() + "<" + "_" + subType.id() + ".size();counter" + subType.id() + "++){\n"); if(subType.nativeType()!=NativeType.ANY){ stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\").setValue(" + "_" + subType.id() + ".get(counter" + subType.id() + "));\n"); }else{ stringBuilder.append("if(_" + subType.id() + ".get(counter" + subType.id() + ") instanceof Integer){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".setValue(" + "((Integer)(_" + subType.id() + ".get(counter" + subType.id() + "))).intValue());\n"); stringBuilder.append("}else if(_" + subType.id() + ".get(counter" + subType.id() + ") instanceof Double){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".setValue(" + "((Double)(_" + subType.id() + ".get(counter" + subType.id() + "))).doubleValue());\n"); stringBuilder.append("}else if(_" + subType.id() + ".get(counter" + subType.id() + ") instanceof String){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".setValue(" + "(String)(_" + subType.id() + ".get(counter" + subType.id() + ")));\n"); stringBuilder.append("}"); } stringBuilder.append("}"); stringBuilder.append("}\n"); }else{ stringBuilder.append("if((_").append(subType.id()).append("!=null)){\n"); if(subType.nativeType()!=NativeType.ANY){ stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".setValue(" + "_" + subType.id() + ");\n"); }else{ stringBuilder.append("if(_" + subType.id() + " instanceof Integer){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".setValue(" + "((Integer)(_" + subType.id() + ")).intValue());\n"); stringBuilder.append("}else if(_" + subType.id() + " instanceof Double){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".setValue(" + "((Double)(_" + subType.id() + ")).doubleValue());\n"); stringBuilder.append("}else if(_" + subType.id() + " instanceof String){\n"); stringBuilder.append("vReturn.getNewChild(\"" + subType.id() + "\")" + ".setValue(" + "(String)(_" + subType.id() + "));\n"); stringBuilder.append("}"); } stringBuilder.append("}\n"); } } }else{ System.out.println("WARNING: variable is not a Link or an Inline Definition!"); } } } if(type.hasSubTypes() && type.nativeType()!=NativeType.VOID){ stringBuilder.append("if((rootValue!=null)){\n"); if(type.nativeType()!=NativeType.ANY){ stringBuilder.append("vReturn.setValue(rootValue);\n"); }else{ stringBuilder.append("if(rootValue instanceof Integer){\n"); stringBuilder.append("vReturn.setValue(((Integer)(rootValue)).intValue());\n"); stringBuilder.append("}else if(rootValue instanceof Double){\n"); stringBuilder.append("vReturn.setValue(((Double)(rootValue)).doubleValue());\n"); stringBuilder.append("}else if(rootValue instanceof String){\n"); stringBuilder.append("vReturn.setValue(((String)(rootValue)));\n"); stringBuilder.append("}"); } stringBuilder.append("}\n"); } stringBuilder.append("return vReturn ;\n"); stringBuilder.append("}\n"); } /* private void variableCreate(StringBuilder stringBuilder, TypeDefinition type) { TypeDefinition supportType = type; if (supportType.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = supportType.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { Map.Entry me = (Map.Entry) i.next(); if (((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink) { if (((TypeDefinitionLink) me.getValue()).cardinality().max() > 1) { stringBuilder.append("private List< " + ((TypeDefinitionLink) me.getValue()).linkedType().id() + "> " + "_" + ((TypeDefinitionLink) me.getValue()).id() + ";\n"); } else { stringBuilder.append("private " + ((TypeDefinitionLink) me.getValue()).linkedType().id() + " " + "_" + ((TypeDefinitionLink) me.getValue()).id() + ";\n"); } } else if ((((TypeDefinition) me.getValue()) instanceof TypeInlineDefinition) && (((TypeDefinition) me.getValue()).hasSubTypes())) { StringBuilder supBuffer = new StringBuilder(); this.subclass.add(((TypeInlineDefinition) me.getValue())); if (((TypeInlineDefinition) me.getValue()).cardinality().max() > 1) { stringBuilder.append("private List<").append(((TypeDefinition) me.getValue()).id()).append("> " + "_").append(((TypeDefinition) me.getValue()).id()).append(";\n"); } else { stringBuilder.append("private ").append(((TypeDefinition) me.getValue()).id()).append(" " + "_").append(((TypeDefinition) me.getValue()).id()).append(";\n"); } subtypePresent = true; } else { if (((TypeDefinition) me.getValue()).cardinality().max() > 1) { String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); if (typeName.equals("int")) { stringBuilder.append("private List<Integer> " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if (typeName.equals("double")) { stringBuilder.append("private List<Double> " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if (typeName.equals("string")) { stringBuilder.append("private List<String> " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if(typeName.equals("long")){ stringBuilder.append("private List<Long> " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if(typeName.equals("bool")){ stringBuilder.append("private List<Boolean> " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if(typeName.equals("raw")){ stringBuilder.append("private List<ByteArray> " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if(typeName.equals("any")){ stringBuilder.append("private List<Object> " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } } else { String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); if (typeName.equals("int")) { stringBuilder.append("private Integer " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if (typeName.equals("double")) { stringBuilder.append("private Double " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if (typeName.equals("string")) { stringBuilder.append("private String " + " " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if (typeName.equals("long")) { stringBuilder.append("private Long " + " " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if (typeName.equals("bool")) { stringBuilder.append("private Boolean " + " " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); }else if(typeName.equals("raw")) { //System.out.println("TypeName = raw."); stringBuilder.append("private ByteArray " + " " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } else if(typeName.equals("any")) { //System.out.println("TypeName = raw."); stringBuilder.append("private Object " + " " + "_" + ((TypeDefinition) me.getValue()).id() + ";\n"); } } } } stringBuilder.append("private Value v ;\n"); stringBuilder.append("private Value vReturn= Value.create() ;\n"); stringBuilder.append("\n"); } } private void constructorCreate(StringBuilder stringBuilder, TypeDefinition type, boolean naturalType) { TypeDefinition supportType = type; stringBuilder.append("public " + supportType.id() + "(Value v){\n"); stringBuilder.append("\n"); stringBuilder.append("this.v=v;\n"); String nameVariable; if (supportType.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> subTypesSet = supportType.subTypes(); Iterator supportTypeIterator = subTypesSet.iterator(); while (supportTypeIterator.hasNext()) { Map.Entry me = (Map.Entry) supportTypeIterator.next(); if (((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink) { nameVariable = ((TypeDefinitionLink) me.getValue()).id(); //stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); if (((TypeDefinitionLink) me.getValue()).cardinality().max() > 1) { stringBuilder.append("_" + nameVariable + "= new LinkedList<" + ((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();" + "\n"); //stringBuilder.append("}\n"); } else { stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); stringBuilder.append("_" + nameVariable + "=new " + ((TypeDefinitionLink) me.getValue()).linkedTypeName() + "( v.getFirstChild(\"" + nameVariable + "\"));" + "\n"); stringBuilder.append("}\n"); } } else if ((((TypeDefinition) me.getValue()) instanceof TypeInlineDefinition) && (naturalType) && ((TypeInlineDefinition) me.getValue()).hasSubTypes()) { nameVariable = ((TypeInlineDefinition) me.getValue()).id(); //stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); if (((TypeInlineDefinition) me.getValue()).cardinality().max() > 1) { stringBuilder.append("_" + nameVariable + "= new LinkedList<" + ((TypeInlineDefinition) me.getValue()).id() + ">();" + "\n"); //stringBuilder.append("}\n"); } else { stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); stringBuilder.append("_" + nameVariable + "=new " + ((TypeInlineDefinition) me.getValue()).id() + "( v.getFirstChild(\"" + nameVariable + "\"));" + "\n"); stringBuilder.append("}\n"); } } else { nameVariable = ((TypeDefinition) me.getValue()).id(); //stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); if (((TypeDefinition) me.getValue()).cardinality().max() > 1) { String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); if (typeName.equals("int")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Integer>();" + "\n"); } else if (typeName.equals("double")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Double>();" + "\n"); } else if (typeName.equals("string")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<String>();" + "\n"); }else if (typeName.equals("long")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Long>();" + "\n"); }else if (typeName.equals("bool")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Boolean>();" + "\n"); }else if (typeName.equals("raw")){ stringBuilder.append("_" + nameVariable + "= new LinkedList<ByteArray>();" + "\n"); }else if (typeName.equals("any")){ stringBuilder.append("_" + nameVariable + "= new LinkedList<Object>();" + "\n"); } //stringBuilder.append("}\n"); } else { stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); if (typeName.equals("int")) { stringBuilder.append("_" + nameVariable + "=new Integer(v.getFirstChild(\"" + nameVariable + "\").intValue());" + "\n"); stringBuilder.append("}\n"); } else if (typeName.equals("double")) { stringBuilder.append("_" + nameVariable + "=new Double(v.getFirstChild(\"" + nameVariable + "\").doubleValue());" + "\n"); stringBuilder.append("}\n"); } else if (typeName.equals("string")) { stringBuilder.append("_" + nameVariable + "=v.getFirstChild(\"" + nameVariable + "\").strValue();" + "\n"); stringBuilder.append("}\n"); }else if (typeName.equals("long")) { stringBuilder.append("_" + nameVariable + "=new Long (v.getFirstChild(\"" + nameVariable + "\").longValue());" + "\n"); stringBuilder.append("}\n"); }else if (typeName.equals("bool")) { stringBuilder.append("_" + nameVariable + "=new Boolean (v.getFirstChild(\"" + nameVariable + "\").boolValue());" + "\n"); stringBuilder.append("}\n"); }else if (typeName.equals("raw")) { stringBuilder.append("_" + nameVariable + "= v.getFirstChild(\"" + nameVariable + "\").byteArrayValue();" + "\n"); stringBuilder.append("}\n"); }else if (typeName.equals("any")) { stringBuilder.append("if(v.getFirstChild(\"" + nameVariable + "\").isDouble()){\n" + "\t_"+nameVariable+"=v.getFirstChild(\"" + nameVariable + "\").doubleValue();\n" + "}else if(v.getFirstChild(\"" + nameVariable + "\").isString()){\n" + "\t_"+nameVariable+"=v.getFirstChild(\"" + nameVariable + "\").strValue();\n" + "}else if(v.getFirstChild(\"" + nameVariable + "\").isInt()){\n" + "\t_"+nameVariable+"=v.getFirstChild(\"" + nameVariable + "\").intValue();\n" + "}\n"); stringBuilder.append("}\n"); } } } } supportTypeIterator = subTypesSet.iterator(); while (supportTypeIterator.hasNext()) { Map.Entry me = (Map.Entry) supportTypeIterator.next(); if (((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink) { nameVariable = ((TypeDefinitionLink) me.getValue()).id(); if (((TypeDefinitionLink) me.getValue()).cardinality().max() > 1) { stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\t" + ((TypeDefinitionLink) me.getValue()).linkedType().id() + " support").append(nameVariable).append("=new " + ((TypeDefinitionLink) me.getValue()).linkedType().id() + "(v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append("));\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("\t}\n"); //stringBuilder.append( nameVariable +"= new LinkedList<" +((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();"+ "\n" ); stringBuilder.append("}\n"); } } else if ((((TypeDefinition) me.getValue()) instanceof TypeInlineDefinition) && (naturalType) && ((TypeInlineDefinition) me.getValue()).hasSubTypes()) { if (((TypeInlineDefinition) me.getValue()).cardinality().max() > 1) { nameVariable = ((TypeInlineDefinition) me.getValue()).id(); stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\t" + ((TypeInlineDefinition) me.getValue()).id() + " support").append(nameVariable).append("=new " + ((TypeInlineDefinition) me.getValue()).id() + "(v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append("));\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("\t}\n"); //stringBuilder.append( nameVariable +"= new LinkedList<" +((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();"+ "\n" ); stringBuilder.append("}\n"); } } else { nameVariable = ((TypeDefinition) me.getValue()).id(); if (((TypeDefinition) me.getValue()).cardinality().max() > 1) { stringBuilder.append("if (v.hasChildren(\"").append(nameVariable).append("\")){\n"); String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); if (typeName.equals("int")) { //Value dsadda; //dsadda.getChildren( typeName ). stringBuilder.append("\n"); stringBuilder.append("\t" + "for(int counter").append(nameVariable).append("=0;" + "counter").append(nameVariable).append("<v.getChildren(\"").append(nameVariable).append("\").size();counter").append(nameVariable).append("++){\n"); stringBuilder.append("\t\t" + "Integer support").append(nameVariable).append("=new Integer(v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append(").intValue());\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("\t" + "}\n"); }else if (typeName.equals("double")) { stringBuilder.append(nameVariable + "= new LinkedList<Double>();" + "\n"); stringBuilder.append("\t" + "for(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\t" + "Double support").append(nameVariable).append("=new Double(v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append(").doubleValue());\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("\t}\n"); }else if (typeName.equals("string")) { stringBuilder.append("for(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\t" + "String support").append(nameVariable).append("=new String(v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append(").strValue());\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("}\n"); }else if (typeName.equals("long")) { stringBuilder.append(nameVariable + "= new LinkedList<Long>();" + "\n"); stringBuilder.append("\t" + "for(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\t" + "Long support").append(nameVariable).append("=new Double(v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append(").longValue());\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("\t}\n"); }else if (typeName.equals("bool")) { stringBuilder.append(nameVariable + "= new LinkedList<Boolean>();" + "\n"); stringBuilder.append("\t" + "for(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\t" + "Boolean support").append(nameVariable).append("=new Boolean(v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append(").boolValue());\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("\t}\n"); }else if (typeName.equals("raw")) { stringBuilder.append(nameVariable + "= new LinkedList<ByteArray>();" + "\n"); stringBuilder.append("\t" + "for(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\t" + "ByteArray support").append(nameVariable).append("=v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append(").byteArrayValue();\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("\t}\n"); }else if (typeName.equals("any")) { stringBuilder.append(nameVariable + "= new LinkedList<Object>();" + "\n"); stringBuilder.append("\t" + "for(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n"); //stringBuilder.append("\t\t" + "Object support").append(nameVariable).append("=v.getChildren(\"").append(nameVariable).append("\").get(counter").append(nameVariable).append(").byteArrayValue();\n"); stringBuilder.append("\t\tObject support").append(nameVariable).append("=new Object();\n"); stringBuilder.append("if(v.getChildren(\""+nameVariable+"\").get(counter"+nameVariable+").isDouble()){\n" + "\t_"+nameVariable+"=v.getChildren(\""+nameVariable+"\").get(counter"+nameVariable+").doubleValue();\n" + "}else if(v.getChildren(\""+nameVariable+"\").get(counter"+nameVariable+").isString()){\n" + "\t_"+nameVariable+"=v.getChildren(\""+nameVariable+"\").get(counter"+nameVariable+").strValue();\n" + "}else if(v.getChildren(\""+nameVariable+"\").get(counter"+nameVariable+").isInt()){\n" + "\t_"+nameVariable+"=v.getChildren(\""+nameVariable+"\").get(counter"+nameVariable+").intValue();\n" + "}\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(support" + nameVariable + ");\n"); stringBuilder.append("\t}\n"); } stringBuilder.append("}\n"); } } } stringBuilder.append("}\n"); } ///// constructor with out value stringBuilder.append("public " + supportType.id() + "(){\n"); stringBuilder.append("\n"); if (supportType.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = supportType.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { Map.Entry me = (Map.Entry) i.next(); if (((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink) { nameVariable = ((TypeDefinitionLink) me.getValue()).id(); if (((TypeDefinitionLink) me.getValue()).cardinality().max() > 1) { stringBuilder.append("_" + nameVariable + "= new LinkedList<" + ((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();" + "\n"); } else { //stringBuilder.append( nameVariable + "=new " + ((TypeDefinitionLink) me.getValue()).linkedTypeName() + "( v.getFirstChildren(\"" + nameVariable + "\"));" + "\n" ); } } else { nameVariable = ((TypeDefinition) me.getValue()).id(); if (((TypeDefinition) me.getValue()).cardinality().max() > 1) { String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); if (typeName.equals("int")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Integer>();" + "\n"); } else if (typeName.equals("double")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Double>();" + "\n"); } else if (typeName.equals("string")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<String>();" + "\n"); } else if (typeName.equals("long")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Long>();" + "\n"); }else if (typeName.equals("bool")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Boolean>();" + "\n"); }else if (typeName.equals("raw")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<ByteArray>();" + "\n"); }else if (typeName.equals("any")) { stringBuilder.append("_" + nameVariable + "= new LinkedList<Object>();" + "\n"); } } else { //stringBuilder.append( "private " + ((TypeDefinition) me.getValue()).nativeType().id() + " " + ((TypeDefinition) me.getValue()).id() + "\n" ); //stringBuilder.append( nameVariable + "=v.getFirstChildren(\"" + nameVariable + "\"));" + "\n" ); } } } } stringBuilder.append("}\n"); } private void methodsCreate(StringBuilder stringBuilder, TypeDefinition type, boolean naturalType) { TypeDefinition supportType = type; String nameVariable, nameVariableOp; if (supportType.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = supportType.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { Map.Entry me = (Map.Entry) i.next(); if (((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink) { nameVariable = ((TypeDefinitionLink) me.getValue()).id(); String startingChar = nameVariable.substring(0, 1); String remaningStr = nameVariable.substring(1, nameVariable.length()); nameVariableOp = startingChar.toUpperCase() + remaningStr; Integer maxIndex = new Integer(((TypeDefinitionLink) me.getValue()).cardinality().max()); Integer minIndex = new Integer(((TypeDefinitionLink) me.getValue()).cardinality().min()); if (((TypeDefinitionLink) me.getValue()).cardinality().max() > 1) { stringBuilder.append("public " + ((TypeDefinitionLink) me.getValue()).linkedTypeName() + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".get(index);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(" + ((TypeDefinitionLink) me.getValue()).linkedTypeName() + " value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\n\t\t" + "_" + nameVariable + ".add(value);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } else { stringBuilder.append("public " + ((TypeDefinitionLink) me.getValue()).linkedTypeName() + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "(" + ((TypeDefinitionLink) me.getValue()).linkedTypeName() + " value ){\n"); stringBuilder.append("\n\t" + "_" + nameVariable + "=value;\n"); stringBuilder.append("}\n"); } } else if ((((TypeDefinition) me.getValue()) instanceof TypeInlineDefinition) && (naturalType) && ((TypeInlineDefinition) me.getValue()).hasSubTypes()) { nameVariable = ((TypeInlineDefinition) me.getValue()).id(); String startingChar = nameVariable.substring(0, 1); String remaningStr = nameVariable.substring(1, nameVariable.length()); nameVariableOp = startingChar.toUpperCase() + remaningStr; if (((TypeInlineDefinition) me.getValue()).cardinality().max() > 1) { stringBuilder.append("public " + ((TypeInlineDefinition) me.getValue()).id() + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".get(index);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(" + ((TypeInlineDefinition) me.getValue()).id() + " value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\n\t\t" + "_" + nameVariable + ".add(value);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } else { stringBuilder.append("public " + ((TypeInlineDefinition) me.getValue()).id() + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "(" + ((TypeInlineDefinition) me.getValue()).id() + " value ){\n"); stringBuilder.append("\n\t" + "_" + nameVariable + "=value;\n"); stringBuilder.append("}\n"); } } else { nameVariable = ((TypeDefinition) me.getValue()).id(); if (((TypeDefinition) me.getValue()).cardinality().max() > 1) { Integer maxIndex = new Integer(((TypeDefinition) me.getValue()).cardinality().max()); Integer minIndex = new Integer(((TypeDefinition) me.getValue()).cardinality().min()); String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); String startingChar = nameVariable.substring(0, 1); String remaningStr = nameVariable.substring(1, nameVariable.length()); nameVariableOp = startingChar.toUpperCase() + remaningStr; if (typeName.equals("int")) { stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\treturn " + "_" + nameVariable + ".get(index).intValue();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(int value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "Integer support").append(nameVariable).append("=new Integer(value);\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(" + "support" + nameVariable + " );\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } else if (typeName.equals("double")) { //stringBuilder.append(nameVariable +"= new LinkedList<Double>();"+ "\n" ); stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "double" + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\treturn " + "_" + nameVariable + ".get(index).doubleValue();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value( double value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "Double support").append(nameVariable).append("=new Double(value);\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(" + "support" + nameVariable + " );\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } else if (typeName.equals("string")) { stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "String" + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".get(index);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value( String value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(value);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } else if (typeName.equals("long")) { stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "long" + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\treturn " + "_" + nameVariable + ".get(index).longValue();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(long value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "Long support").append(nameVariable).append("=new Long(value);\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(" + "support" + nameVariable + " );\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } else if (typeName.equals("bool")) { stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "boolean" + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\treturn " + "_" + nameVariable + ".get(index).booleanValue();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(boolean value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "Boolean support").append(nameVariable).append("=new Boolean(value);\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(" + "support" + nameVariable + " );\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } else if (typeName.equals("raw")) { stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "ByteArray" + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\treturn " + "_" + nameVariable + ".get(index);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(ByteArray value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "ByteArray support").append(nameVariable).append("=value;\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(" + "support" + nameVariable + " );\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } else if (typeName.equals("any")) { stringBuilder.append("public " + "int" + " get" + nameVariableOp + "Size(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".size();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "Object" + " get" + nameVariableOp + "Value(int index){\n"); stringBuilder.append("\treturn " + "_" + nameVariable + ".get(index);\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void add" + nameVariableOp + "Value(Object value ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()<" + maxIndex.toString() + "-" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "Object support").append(nameVariable).append("=value;\n"); stringBuilder.append("\t\t" + "_" + nameVariable + ".add(" + "support" + nameVariable + " );\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); stringBuilder.append("public " + "void remove" + nameVariableOp + "Value( int index ){\n"); //stringBuilder.append( "\tif ((" + nameVariable + ".size()>" + minIndex.toString() + ")){\n" ); stringBuilder.append("\t\t" + "_" + nameVariable + ".remove(index);\n"); //stringBuilder.append( "\t}\n" ); stringBuilder.append("}\n"); } } else { String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); String startingChar = nameVariable.substring(0, 1); String remaningStr = nameVariable.substring(1, nameVariable.length()); nameVariableOp = startingChar.toUpperCase() + remaningStr; if (typeName.equals("int")) { stringBuilder.append("public " + "int" + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".intValue();\n"); stringBuilder.append("}\n"); Integer a = new Integer(2); stringBuilder.append("public " + "void set" + nameVariableOp + "Value(int value ){\n"); stringBuilder.append("\n\t" + "_" + nameVariable + "=new Integer(value);\n"); stringBuilder.append("}\n"); } else if (typeName.equals("double")) { //stringBuilder.append(nameVariable +"= new LinkedList<Double>();"+ "\n" ); stringBuilder.append("public " + "double" + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ".doubleValue();\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "Value( double value ){\n"); stringBuilder.append("\n\t\t" + "_" + nameVariable + "=new Double(value);\n"); stringBuilder.append("}\n"); } else if (typeName.equals("string")) { stringBuilder.append("public " + "String" + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "Value( String value ){\n"); stringBuilder.append("\n\t\t" + "_" + nameVariable + "=value;\n"); stringBuilder.append("}\n"); }else if (typeName.equals("long")) { stringBuilder.append("public " + "long" + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "Value( long value ){\n"); stringBuilder.append("\n\t\t" + "_" + nameVariable + "=value;\n"); stringBuilder.append("}\n"); }else if (typeName.equals("bool")) { stringBuilder.append("public " + "boolean" + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "Value( boolean value ){\n"); stringBuilder.append("\n\t\t" + "_" + nameVariable + "=value;\n"); stringBuilder.append("}\n"); }else if (typeName.equals("raw")) { stringBuilder.append("public " + "ByteArray" + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "Value( ByteArray value ){\n"); stringBuilder.append("\n\t\t" + "_" + nameVariable + "=value;\n"); stringBuilder.append("}\n"); }else if (typeName.equals("any")) { stringBuilder.append("public " + "Object" + " get" + nameVariableOp + "(){\n"); stringBuilder.append("\n\treturn " + "_" + nameVariable + ";\n"); stringBuilder.append("}\n"); stringBuilder.append("public " + "void set" + nameVariableOp + "Value( Object value ){\n"); stringBuilder.append("\n\t\t" + "_" + nameVariable + "=value;\n"); stringBuilder.append("}\n"); } } } } } //// getVALUE stringBuilder.append("public " + "Value get" + "Value(){\n"); stringBuilder.append("vReturn=Value.create();\n"); Set<Map.Entry<String, TypeDefinition>> supportSet = supportType.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { Map.Entry me = (Map.Entry) i.next(); //Value v //v.getNewChild( nameVariable ).deepCopy( v ); //v.hasChildren( nameVariable ); if (((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink) { nameVariable = ((TypeDefinitionLink) me.getValue()).id(); if (((TypeDefinitionLink) me.getValue()).cardinality().max() > 1) { // stringBuilder.append("if(_").append(nameVariable).append("!=null && !_").append(nameVariable).append(".isEmpty()){\n"); stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + "_" + nameVariable + ".size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\").deepCopy(" + "_" + nameVariable + ".get(counter" + nameVariable + ").getValue());\n"); stringBuilder.append("\t}\n"); stringBuilder.append("}\n"); } else { // stringBuilder.append("if((_").append(nameVariable).append("!=null)){\n"); stringBuilder.append("vReturn.getNewChild(\"" + nameVariable + "\")" + ".deepCopy(" + "_" + nameVariable + ".getValue());\n"); stringBuilder.append("}\n"); } } else { nameVariable = ((TypeDefinition) me.getValue()).id(); if (((TypeDefinition) me.getValue()).cardinality().max() > 1) { stringBuilder.append("if(_").append(nameVariable).append("!=null && !_").append(nameVariable).append(".isEmpty()){\n"); String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); if (typeName.equals("int")) { // stringBuilder.append( "if (v.hasChildren(\"" + nameVariable + "\"))" + "{\n" ); // stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); // stringBuilder.append( "\t\tv.getChild(\"" + nameVariable + "\")" + ".set(counter" + nameVariable + ";new Value(" + nameVariable + ".get(counter" + nameVariable + ").intValue()));\n" ); // stringBuilder.append( "\t}\n}else{\n" ); stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + "_" + nameVariable + ".size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\").setValue(" + "_" + nameVariable + ".get(counter" + nameVariable + "));\n"); stringBuilder.append("\t}"); // stringBuilder.append( "\n}\n" ); } else if (typeName.equals("double")) { //stringBuilder.append( "if (v.hasChildren(\"" + nameVariable + "\"))" + "{\n" ); //stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); //stringBuilder.append( "\t\tvreturn.getChild(\"" + nameVariable + "\")" + ".set(counter" + nameVariable + ",new Value(" + nameVariable + ".get(counter" + nameVariable + ").doubleValue()));\n" ); //stringBuilder.append( "\t}\n}else{\n" ); stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + "_" + nameVariable + ".size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\").setValue(" + "_" + nameVariable + ".get(counter" + nameVariable + "));\n"); stringBuilder.append("\t}"); //stringBuilder.append( "\n}\n" ); } else if (typeName.equals("string")) { // stringBuilder.append( "if (v.hasChildren(\"" + nameVariable + "\"))" + "{\n" ); // stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); // stringBuilder.append( "\t\tv.getChild(\"" + nameVariable + "\")" + ".set(counter" + nameVariable + "," + nameVariable + ".get(counter" + nameVariable + ").strValue());\n" ); // stringBuilder.append( "\t}\n}else{\n" ); stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + "_" + nameVariable + ".size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ".get(counter" + nameVariable + "));\n"); stringBuilder.append("\t}"); //stringBuilder.append( "\n}\n" ); }else if (typeName.equals("long")) { // stringBuilder.append( "if (v.hasChildren(\"" + nameVariable + "\"))" + "{\n" ); // stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); // stringBuilder.append( "\t\tv.getChild(\"" + nameVariable + "\")" + ".set(counter" + nameVariable + "," + nameVariable + ".get(counter" + nameVariable + ").strValue());\n" ); // stringBuilder.append( "\t}\n}else{\n" ); stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + "_" + nameVariable + ".size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ".get(counter" + nameVariable + "));\n"); stringBuilder.append("\t}"); //stringBuilder.append( "\n}\n" ); } else if (typeName.equals("bool")) { // stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + "_" + nameVariable + ".size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ".get(counter" + nameVariable + "));\n"); stringBuilder.append("\t}"); //stringBuilder.append( "\n}\n" ); } else if (typeName.equals("raw")) { // stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + "_" + nameVariable + ".size();counter" + nameVariable + "++){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ".get(counter" + nameVariable + "));\n"); stringBuilder.append("\t}"); //stringBuilder.append( "\n}\n" ); } else if (typeName.equals("any")) { // stringBuilder.append("\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + "_" + nameVariable + ".size();counter" + nameVariable + "++){\n"); stringBuilder.append("\tif(_" + nameVariable + ".get(counter" + nameVariable + ") instanceof Integer){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "((Integer)(_" + nameVariable + ".get(counter" + nameVariable + "))).intValue());\n"); stringBuilder.append("\t}else if(_" + nameVariable + ".get(counter" + nameVariable + ") instanceof Double){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "((Double)(_" + nameVariable + ".get(counter" + nameVariable + "))).doubleValue());\n"); stringBuilder.append("\t}else if(_" + nameVariable + ".get(counter" + nameVariable + ") instanceof String){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "(String)(_" + nameVariable + ".get(counter" + nameVariable + ")));\n"); stringBuilder.append("\t}"); stringBuilder.append("\t}"); //stringBuilder.append( "\n}\n" ); }else{ stringBuilder.append("\tfor(int counter" + nameVariable +"=0; counter"+nameVariable+"<_"+nameVariable+".size(); counter"+nameVariable+"++){\n"); stringBuilder.append("\tvReturn.getNewChild(\""+nameVariable+"\").deepCopy(_"+nameVariable+".get(counter"+nameVariable+").getValue());\n}\n"); } stringBuilder.append("}\n"); } else { String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); String startingChar = nameVariable.substring(0, 1); String remaningStr = nameVariable.substring(1, nameVariable.length()); nameVariableOp = startingChar.toUpperCase() + remaningStr; stringBuilder.append("if((_").append(nameVariable).append("!=null)){\n"); if (typeName.equals("int")) { // stringBuilder.append("vReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ");\n"); //stringBuilder.append("\t}"); //stringBuilder.append( "}\n" ); } else if (typeName.equals("double")) { stringBuilder.append("vReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ");\n"); // //stringBuilder.append("\t}"); // stringBuilder.append( "}\n" ); } else if (typeName.equals("string")) { // stringBuilder.append("vReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ");\n"); } else if (typeName.equals("long")) { // stringBuilder.append("vReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ");\n"); }else if (typeName.equals("bool")) { // stringBuilder.append("vReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ");\n"); }else if (typeName.equals("raw")) { // stringBuilder.append("vReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "_" + nameVariable + ");\n"); }else if(typeName.equals("any")) { stringBuilder.append("\tif(_" + nameVariable + " instanceof Integer){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "((Integer)(_" + nameVariable + ")).intValue());\n"); stringBuilder.append("\t}else if(_" + nameVariable + " instanceof Double){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "((Double)(_" + nameVariable + ")).doubleValue());\n"); stringBuilder.append("\t}else if(_" + nameVariable + " instanceof String){\n"); stringBuilder.append("\t\tvReturn.getNewChild(\"" + nameVariable + "\")" + ".setValue(" + "(String)(_" + nameVariable + "));\n"); stringBuilder.append("\t}"); } stringBuilder.append("}\n"); } } } stringBuilder.append("return vReturn ;\n"); stringBuilder.append("}\n"); }*/ private void parseSubType(TypeDefinition typeDefinition){ if (typeDefinition.hasSubTypes()) { Set<Map.Entry<String, TypeDefinition>> supportSet = typeDefinition.subTypes(); Iterator i = supportSet.iterator(); while (i.hasNext()) { Map.Entry me = (Map.Entry) i.next(); System.out.print(((TypeDefinition) me.getValue()).id() + "\n"); if (((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink){ if (!subTypeMap.containsKey(((TypeDefinitionLink) me.getValue()).linkedTypeName())){ subTypeMap.put(((TypeDefinitionLink) me.getValue()).linkedTypeName(),((TypeDefinitionLink)me.getValue()).linkedType()); parseSubType(((TypeDefinitionLink)me.getValue()).linkedType()); } } } } } }