package com.dbgen; import java.io.PrintStream; class MethodVarGetter implements Visitor { static void make(Variable var, PrintStream ps, String prefix) { var.getType().accept(new MethodVarGetter(var, ps, prefix)); } private Variable var; private PrintStream ps; private String prefix; private String varname; private String Varname; private String this_varname; private MethodVarGetter(Variable var, PrintStream ps, String prefix) { this.var = var; this.ps = ps; this.prefix = prefix; this.varname = var.getName(); this.this_varname = "this." + this.varname; this.Varname = StringUtils.upper1(this.varname); } private void simple(Type type) { simple(type, this_varname); } private void simple(Type type, String ret) { String gettername = TypeName.getGetterName(type); ps.println(prefix + "public " + gettername + " get" + Varname + "() { " + var.getComment()); if( var.getType() instanceof TypeMap){ ps.println(prefix + " if( null == " + varname + "Log && "+varname +" != null)"); ps.println(prefix + " " +varname + "Log = new LogHashMap( this,"+StringUtils.quote(varname)+","+varname+");"); ps.println(prefix + " return " + ret + "Log;"); }else if(var.getType() instanceof TypeSet || var.getType() instanceof TypeList){ ps.println(prefix + " if( null == " + varname + "Log && "+varname +" != null)"); ps.println(prefix + " " +varname + "Log = new Log"+TypeName.getName(type)+"( this,"+StringUtils.quote(varname)+","+varname+");"); ps.println(prefix + " return " + ret + "Log;"); }else { ps.println(prefix + " return " + ret + ";"); } ps.println(prefix + "}"); ps.println(""); } @Override public void visit(TypeString type) { simple(type); } @Override public void visit(TypeBoolean type) { simple(type); } @Override public void visit(TypeShort type) { simple(type); } @Override public void visit(TypeInt type) { simple(type); } @Override public void visit(TypeLong type) { simple(type); } @Override public void visit(TypeFloat type) { simple(type); } @Override public void visit(TypeDouble type) { simple(type); } @Override public void visit(Jbean type) { simple(type); } @Override public void visit(TypeList type) { simple(type); } @Override public void visit(TypeSet type) { simple(type); } @Override public void visit(TypeMap type) { simple(type); } }