package name;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import util.UtilObj;
public class NameObj {
private static Log logger=LogFactory.getLog(NameObj.class);
private String className;//空:default -:private /:protected *:public
private String paraNames;//空:default -:private /:protected =:public
private String construction;//构造方法,默认为空,y为空构造庐江,yy为参数构造方法
private String getset;//getset方法,默认为空,g全部get方法,s全部set方法,gs全部getset方法,指定在参数列表逗号前面加g或s
private String toString;//toString方法,默认为空,y为生成toString方法
public NameObj(String className,String paraNames,String construction,String getset,String toString) {
if("".equals(className.trim())){
logger.info("类名不能为空!");
}else {
this.paraNames = paraNames;
this.className=className;
this.construction=construction;
this.getset=getset;
this.toString=toString;
}
}
public Object getObject(){
UtilObj utilObj=new UtilObj();
String[] nameOb=getParaNames().split(",");
StringBuilder nameOa =new StringBuilder();
StringBuilder nameOc =new StringBuilder();
StringBuilder nameOd =new StringBuilder();
StringBuilder nameOe =new StringBuilder();
StringBuilder nameOf =new StringBuilder();
nameOc.append(nameOa);
char[] cs=className.toCharArray();
cs[0]-=32;
String namestr= String.valueOf(cs);
nameOa.append("public class "+namestr+"{\n\n");
if("y".equalsIgnoreCase(construction.trim())){
nameOa.append("public "+namestr+"(){}\n\n");
}
nameOd.append("@Override\npublic String toString() {"+"\n"+"return \""+namestr+" [");
nameOe.append("public "+namestr+"(");
for(int i=0;i<nameOb.length;i++){
String nameObi = null;
String strToStr=null;
if("gs".equals(nameOb[i].trim().substring(nameOb[i].length()-2))||"sg".equals(nameOb[i].trim().substring(nameOb[i].length()-2))){
nameObi=nameOb[i].substring(0, nameOb[i].length()-2);
strToStr=nameOb[i].substring(nameOb[i].length()-2);
}else if("s".equals(nameOb[i].trim().substring(nameOb[i].length()-1))||"g".equals(nameOb[i].trim().substring(nameOb[i].length()-1))){
nameObi=nameOb[i].substring(0, nameOb[i].length()-1);
strToStr=nameOb[i].substring(nameOb[i].length()-1);
}else{
nameObi=nameOb[i];
strToStr="";
}
if(!utilObj.integerObj(nameObi, nameOa)&&!utilObj.longObj(nameObi, nameOa)&&!utilObj.booleanObj(nameObi, nameOa)
&&!utilObj.charObj(nameObi, nameOa)&&!utilObj.byteObj(nameObi, nameOa)&&!utilObj.doubleObj(nameObi, nameOa)
&&!utilObj.floatObj(nameObi, nameOa)&&!utilObj.shortObj(nameObi, nameOa)){
utilObj.stringObj(nameObi, nameOa);
}
gSet(nameObi, nameOc,utilObj,strToStr);
toStr(nameObi, nameOd,utilObj,i,nameOb.length);
toCons(nameObi, nameOe,utilObj,i,nameOb.length,construction,nameOf);
}
nameOa.append(nameOe);
nameOa.append(nameOf);
nameOa.append(nameOc);
nameOa.append(nameOd);
if("".equals(paraNames.trim())){
nameOa.delete(nameOa.indexOf("String"), nameOa.indexOf("String")+16);
}
nameOa.append("}");
return nameOa;
}
public void gSet(String nameOb, StringBuilder nameOc,UtilObj utilObj,String strToStr) {
if("gs".equalsIgnoreCase(getset.trim())||"sg".equalsIgnoreCase(getset.trim())
||"gs".equalsIgnoreCase(strToStr)||"sg".equalsIgnoreCase(strToStr)
&&!"".equals(paraNames.trim())){
String nameObNew=utilObj.engLishCase(utilObj.engLish(nameOb),nameOb);
char[] ch=nameObNew.trim().toCharArray();
ch[0]-=32;
String str=String.valueOf(ch);
String replace=utilObj.getGetSet().replaceAll("public ", "").replaceAll("private ", "").replaceAll("protected ", "");
nameOc.append("public "+replace+"get"+str+"() {"+"\n"+"return "+nameObNew+";\n}\n\n");
nameOc.append("public void set"+str+"("+replace+nameObNew+") {"+"\n"+"this."+nameObNew+"="+nameObNew+";\n}\n\n");
}
if(!"gs".equalsIgnoreCase(getset.trim())&&!"sg".equalsIgnoreCase(getset.trim())){
if("g".equalsIgnoreCase(getset.trim())&&!"".equals(paraNames.trim())
&&!"gs".equalsIgnoreCase(strToStr)&&!"sg".equalsIgnoreCase(strToStr)
||"g".equalsIgnoreCase(strToStr)){
String nameObNew=utilObj.engLishCase(utilObj.engLish(nameOb),nameOb);
char[] ch=nameObNew.trim().toCharArray();
ch[0]-=32;
String str=String.valueOf(ch);
String replace=utilObj.getGetSet().replaceAll("public ", "").replaceAll("private ", "").replaceAll("protected ", "");
nameOc.append("public "+replace+"get"+str+"() {"+"\n"+"return "+nameObNew+";\n}\n\n");
}
if("s".equalsIgnoreCase(getset.trim())&&!"".equals(paraNames.trim())
&&!"gs".equalsIgnoreCase(strToStr)&&!"sg".equalsIgnoreCase(strToStr)
||"s".equalsIgnoreCase(strToStr)){
String nameObNew=utilObj.engLishCase(utilObj.engLish(nameOb),nameOb);
char[] ch=nameObNew.trim().toCharArray();
ch[0]-=32;
String str=String.valueOf(ch);
String replace=utilObj.getGetSet().replaceAll("public ", "").replaceAll("private ", "").replaceAll("protected ", "");
nameOc.append("public void set"+str+"("+replace+nameObNew+") {"+"\n"+"this."+nameObNew+"="+nameObNew+";\n}\n\n");
}
}
}
public void toStr(String nameOb, StringBuilder nameOd,UtilObj utilObj,int i,int j) {
if("y".equalsIgnoreCase(toString.trim())){
String nameObNew=utilObj.engLishCase(utilObj.engLish(nameOb),nameOb);
char[] ch=nameObNew.trim().toCharArray();
ch[0]-=32;
if(i==j-1){
nameOd.append(nameObNew+"=\""+"+"+nameObNew+"+\"]\";"+"\n}\n\n");
}else if(i+1>=5&&(i+1)%5==0){
nameOd.append(nameObNew+"=\""+"+"+nameObNew+"+\n\",");
}else{
nameOd.append(nameObNew+"=\""+"+"+nameObNew+"+\",");
}
}
}
public void toCons(String nameOb, StringBuilder nameOe,UtilObj utilObj,int i,int j,String cons,StringBuilder nameOf) {
if("yy".equalsIgnoreCase(cons.trim())){
String nameObNew=utilObj.engLishCase(utilObj.engLish(nameOb),nameOb);
String replace=utilObj.getGetSet().replaceAll("public ", "").replaceAll("private ", "").replaceAll("protected ", "");
if(i==j-1){
nameOe.append(replace+nameObNew+") {\n");
nameOf.append("this."+nameObNew+"="+nameObNew+";\n}\n\n");
}else if(i+1>=5&&(i+1)%5==0){
nameOe.append(replace+nameObNew+",\n");
nameOf.append("this."+nameObNew+"="+nameObNew+";\n");
}else{
nameOe.append(replace+nameObNew+",");
nameOf.append("this."+nameObNew+"="+nameObNew+";\n");
}
}
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getParaNames() {
return paraNames;
}
public void setParaNames(String paraNames) {
this.paraNames = paraNames;
}
@Override
public String toString() {
return "NameObj [className=" + className + ", paraNames=" + paraNames + ", construction=" + construction
+ ", getset=" + getset + ", toString=" + toString + "]";
}
}