/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package joliex.java.impl; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; import jolie.lang.parse.ast.InputPortInfo; import jolie.lang.parse.ast.InterfaceDefinition; import jolie.lang.parse.ast.OperationDeclaration; import jolie.lang.parse.ast.OutputPortInfo; import jolie.lang.parse.ast.types.TypeDefinition; import jolie.lang.parse.ast.types.TypeDefinitionLink; import jolie.lang.parse.ast.types.TypeInlineDefinition; import joliex.java.support.GeneralDocumentCreator; import joliex.java.support.GeneralProgramVisitor; import joliex.java.support.treeOLObject; /** * * @author balint */ public class JavaGWTWebInterfaceCreator extends GeneralDocumentCreator { private Vector<TypeDefinition> subclass; private boolean subtypePresent = false; public JavaGWTWebInterfaceCreator( GeneralProgramVisitor visitor ) { super( visitor ); } @Override public void ConvertDocument() { List<treeOLObject> olTree = GetOlTree(); for( treeOLObject treeObject : olTree ) { //for (int countrerInterftreeObject.GetLinkedObjetSize(); } subclass = new Vector<TypeDefinition>(); List<Map<String, TypeDefinition>> typesList = this.GetTypesSet(); int counterSubClass; for( Map<String, TypeDefinition> typeDefinitionMap : typesList ) { subclass = new Vector<TypeDefinition>(); subtypePresent=false; String nameFile = typeDefinitionMap.entrySet().iterator().next().getValue().id() + "WebInteface.java"; Writer writer; try { writer = new BufferedWriter( new FileWriter( nameFile ) ); ConvertTypes( typeDefinitionMap.entrySet().iterator().next().getValue(), writer ); counterSubClass = 0; while( counterSubClass < subclass.size() ) { System.out.print( "sono dentro al sub "+subclass.size()+"\n"); ConvertTypes( subclass.get( counterSubClass ), writer ); counterSubClass++; } if ( subtypePresent ) { closeClass( writer ); } writer.flush(); writer.close(); } catch( IOException ex ) { Logger.getLogger( JavaGWTWebInterfaceCreator.class.getName() ).log( Level.SEVERE, null, ex ); } } } @Override public void ConvertInterface( InterfaceDefinition interfaceDefinition, Writer writer ) throws IOException { throw new UnsupportedOperationException( "Not supported yet." ); } @Override public void ConvertOutputPorts( OutputPortInfo outputPortInfo, Writer writer ) throws IOException { throw new UnsupportedOperationException( "Not supported yet." ); } @Override public void ConvertInputPorts( InputPortInfo inputPortInfo, Writer writer ) throws IOException { throw new UnsupportedOperationException( "Not supported yet." ); } @Override public void ConvertOperations( OperationDeclaration operationDeclaration, Writer writer ) throws IOException { throw new UnsupportedOperationException( "Not supported yet." ); } @Override public void ConvertTypes( TypeDefinition typesDefinition, Writer writer ) throws IOException { StringBuilder builderHeaderclass = new StringBuilder(); if ( subtypePresent == false ) { //System.out.print( "sto creado il header " + subtypePresent + "\n" ); ImportCreate( builderHeaderclass, typesDefinition ); } builderHeaderclass.append( "public class " + typesDefinition.id() + "WebInterface extends Composite"+ "{" + "\n" ); VariableCreate( builderHeaderclass, typesDefinition ); ConstructorCreate( builderHeaderclass, typesDefinition ); //MethodsCreate( builderHeaderclass, typesDefinition ); if ( subtypePresent == false ) { builderHeaderclass.append( " }\n" ); } writer.append( builderHeaderclass.toString() ); } private void closeClass( Writer writer ) { StringBuilder builderHeaderclass = new StringBuilder(); builderHeaderclass.append( " }\n" ); try { writer.append( builderHeaderclass.toString() ); } catch( IOException ex ) { Logger.getLogger( JavaGWTWebInterfaceCreator.class.getName() ).log( Level.SEVERE, null, ex ); } } private void ImportCreate( StringBuilder stringBuilder, TypeDefinition type ) { String nameFile = type.context().sourceName(); TypeDefinition supportType = type; stringBuilder.append( "import com.google.gwt.user.client.ui.Button;\nimport com.google.gwt.user.client.ui.HorizontalPanel;\nimport com.google.gwt.user.client.ui.Label;\nimport com.google.gwt.user.client.ui.ListBox;\nimport com.google.gwt.user.client.ui.TextBox;\nimport com.google.gwt.user.client.ui.VerticalPanel;\nimport com.google.gwt.user.client.ui.Composite;\n" ); stringBuilder.append( "import java.util.LinkedList;\n" ); stringBuilder.append( "import joliex.gwt.client.Value;\n" ); stringBuilder.append( "\n" ); } private void VariableCreate( StringBuilder stringBuilder, TypeDefinition type ) { String nameFile = type.context().sourceName(); TypeDefinition supportType = type; //System.out.print( "element of the list Oltree " + supportType.id() + "\n" ); System.out.print( " the type under Observation is : "+type.id()+"\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(); System.out.print( ((TypeDefinition) me.getValue()).id()+"\n"); if ( ((TypeDefinition) me.getValue()) instanceof TypeDefinitionLink ) { if ( ((TypeDefinitionLink) me.getValue()).cardinality().max() > 1 ) { stringBuilder.append( "private "+ ((TypeDefinitionLink) me.getValue()).linkedType().id() +"WebInterface"+ " " + ((TypeDefinitionLink) me.getValue()).id() + "\n" ); } else { stringBuilder.append( "private "+ ((TypeDefinitionLink) me.getValue()).linkedType().id() +"WebInterface"+ " " + ((TypeDefinitionLink) me.getValue()).id() + "\n" ); } } else if ( (((TypeDefinition) me.getValue()) instanceof TypeInlineDefinition) && (((TypeDefinition) me.getValue()).hasSubTypes()) ) { System.out.print( "tipo in line "+((TypeDefinition) me.getValue()).id()+"\n"); StringBuilder supBuffer = new StringBuilder(); System.out.print( "ho inserito un type in line " + ((TypeDefinition) me.getValue()).id() + "\n" ); this.subclass.add( ((TypeInlineDefinition) me.getValue()) ); if ( ((TypeInlineDefinition) me.getValue()).cardinality().max() > 1 ) { //stringBuilder.append( "private List< " + ((TypeDefinition) me.getValue()).id() + "> " + ((TypeDefinition) me.getValue()).id() + "\n" ); stringBuilder.append( "private "+ ((TypeDefinitionLink) me.getValue()).linkedType().id() +"WebInteface"+ " " + ((TypeDefinitionLink) me.getValue()).id() + "\n" ); } else { //stringBuilder.append( "private " + ((TypeDefinition) me.getValue()).id() + " " + ((TypeDefinition) me.getValue()).id() + "\n" ); stringBuilder.append( "private "+ ((TypeDefinition) me.getValue()).id() +"WebInteface"+" " + ((TypeDefinition) me.getValue()).id() + "\n" ); } subtypePresent = true; } else { stringBuilder.append( "private TextBox " + " " + ((TypeDefinition) me.getValue()).id() + "\n" ); } } stringBuilder.append( "private Value v \n" ); stringBuilder.append( "\n" ); } } private void ConstructorCreate( StringBuilder stringBuilder, TypeDefinition type ) { TypeDefinition supportType = type; // System.out.print( "element of the list Oltree " + supportType.id() + "\n" ); stringBuilder.append( "public " + supportType.id() + "WebInterface(){\n" ); stringBuilder.append( "\n" ); stringBuilder.append( "VerticalPanel mainPanel=new VerticalPanel();\n"); //stringBuilder.append(); String nameVariable; 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( ((TypeDefinitionLink) me.getValue()).linkedType().id()+ "= new "+ ((TypeDefinitionLink) me.getValue()).linkedType().id()+"WebInterface();\n"); stringBuilder.append("Button ArrayAdd"+((TypeDefinitionLink) me.getValue()).linkedType().id()+ "new Button(\" add "+((TypeDefinitionLink) me.getValue()).linkedType().id()+"\");\n");//stringBuilder.append( nameVariable + "= new LinkedList<" + ((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();" + "\n" ); stringBuilder.append("mainPanel.add("+nameVariable+");\n"); stringBuilder.append("mainPanel.add(Button ArrayAdd"+nameVariable+");\n"); } else { stringBuilder.append( ((TypeDefinitionLink) me.getValue()).linkedType().id()+ "= new "+ ((TypeDefinitionLink) me.getValue()).linkedType().id()+"WebInterface();\n"); } } else { nameVariable = ((TypeDefinition) me.getValue()).id(); if ( ((TypeDefinition) me.getValue()).cardinality().max() > 1 ) { String typeName = ((TypeDefinition) me.getValue()).nativeType().id(); stringBuilder.append( nameVariable + "=new TextBox();\n "); stringBuilder.append("Button ArrayAdd"+((TypeDefinition) me.getValue()).id()+ "new Button(\" add "+((TypeDefinition) me.getValue()).id()+"\");\n");//stringBuilder.append( nameVariable + "= new LinkedList<" + ((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();" + "\n" ); stringBuilder.append("mainPanel.add("+nameVariable+");\n"); stringBuilder.append("mainPanel.add(Button ArrayAdd"+nameVariable+");\n"); //stringBuilder.append( nameVariable + "= new LinkedList<Integer>();" + "\n" ); } else { stringBuilder.append( nameVariable + "=new TextBox();\n "); //stringBuilder.append("Button ArrayAdd"+((TypeDefinitionLink) me.getValue()).linkedType().id()+ "new Button(\" add "+((TypeDefinitionLink) me.getValue()).linkedType().id()+"\");\n");//stringBuilder.append( nameVariable + "= new LinkedList<" + ((TypeDefinitionLink) me.getValue()).linkedType().id() + ">();" + "\n" ); stringBuilder.append("mainPanel.add("+nameVariable+");\n"); //stringBuilder.append("mainPanel.add(Button ArrayAdd"+nameVariable+");\n"); //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 ) { 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() + " set" + nameVariableOp + "Value(int index){\n" ); stringBuilder.append( "\n\treturn " + nameVariable + ".get(index);\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 { 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 + "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 " + "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 " + "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 { 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 + ";\n" ); stringBuilder.append( "}\n" ); stringBuilder.append( "public " + "void set" + nameVariableOp + "Value(int value ){\n" ); stringBuilder.append( "\n\t" + nameVariable + "=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 + ";\n" ); stringBuilder.append( "}\n" ); stringBuilder.append( "public " + "void set" + nameVariableOp + "Value( double value ){\n" ); stringBuilder.append( "\n\t\t" + nameVariable + "=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" ); } } } } } //// getVALUE stringBuilder.append( "public " + "Value get" + "Value(){\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 (v.hasChildren(" + nameVariable + ")" + "{\n" ); stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); stringBuilder.append( "\t\tv.getChildren(\"" + nameVariable + "\")" + ".set(counter" + nameVariable + "," + nameVariable + ".get(counter" + nameVariable + ").getValue());\n" ); stringBuilder.append( "\t}\n}else{\n" ); stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<" + nameVariable + ".size();counter" + nameVariable + "++){\n" ); stringBuilder.append( "\t\tv.getNewChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".get(counter" + nameVariable + ").getValue()));\n" ); stringBuilder.append( "\t}" ); stringBuilder.append( "\n}\n" ); //a.intValue(); } else { 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( "v.getChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".getValue());\n" ); stringBuilder.append( "\t}else{\n" ); //stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); stringBuilder.append( "v.getNewChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".getValue());\n" ); //stringBuilder.append("\t}"); stringBuilder.append( "}\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( "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.getChildren(\"" + nameVariable + "\")" + ".set(counter" + nameVariable + "," + 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\tv.getNewChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".get(counter" + nameVariable + ").intValue());\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\tv.getChildren(\"" + nameVariable + "\")" + ".set(counter" + nameVariable + "," + 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\tv.getNewChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".get(counter" + nameVariable + ").doubleValue());\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.getChildren(\"" + 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\tv.getNewChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".get(counter" + nameVariable + ").strValue());\n" ); stringBuilder.append( "\t}" ); stringBuilder.append( "\n}\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( "if (v.hasChildren(" + nameVariable + ")" + "{\n" ); //stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); stringBuilder.append( "v.getChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".intValue());\n" ); stringBuilder.append( "\t}else{\n" ); //stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); stringBuilder.append( "v.getNewChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".intValue());\n" ); //stringBuilder.append("\t}"); stringBuilder.append( "}\n" ); } else if ( typeName.equals( "double" ) ) { //stringBuilder.append(nameVariable +"= new LinkedList<Double>();"+ "\n" ); 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( "v.getChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".doubleValue()));\n" ); stringBuilder.append( "\t}else{\n" ); //stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); stringBuilder.append( "v.getNewChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".doubleValue());\n" ); //stringBuilder.append("\t}"); stringBuilder.append( "}\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( "v.getChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ");\n" ); stringBuilder.append( "\t}else{\n" ); //stringBuilder.append( "\tfor(int counter" + nameVariable + "=0;" + "counter" + nameVariable + "<v.getChildren(\"" + nameVariable + "\").size();counter" + nameVariable + "++){\n" ); stringBuilder.append( "v.getNewChildren(\"" + nameVariable + "\")" + ".deepCopy(" + nameVariable + ".intValue());\n" ); //stringBuilder.append("\t}"); stringBuilder.append( "}\n" ); } } } } stringBuilder.append( "return v ;\n" ); stringBuilder.append( "}\n" ); } }