miduo_server/jieling-dbgen/src/main/java/com/dbgen/MethodVarGetter.java

110 lines
2.3 KiB
Java

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);
}
}