JAVA装饰类自动生成_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JAVA装饰类自动生成

JAVA装饰类自动生成

 2012/2/28 18:01:30  numen06  程序员俱乐部  我要评论(0)
  • 摘要:packagecom.wesley.framework.decoration;/***@authorit.zl封装解析Object之后的一些参数*/publicclassDecoratorParam{privateClass<?>cls;privateStringBufferclsString=newStringBuffer();publicDecoratorParam(Class<?>cls){super();this.cls=cls;
  • 标签:Java
package com.wesley.framework.decoration;

/**
 * @author it.zl 封装解析Object之后的一些参数
 */
public class DecoratorParam {
	private Class<?> cls;

	private StringBuffer clsString = new StringBuffer();

	public DecoratorParam(Class<?> cls) {
		super();
		this.cls = cls;
	}

	public DecoratorParam(Class<?> cls, StringBuffer clsString) {
		super();
		this.cls = cls;
		this.clsString = clsString;
	}

	public Class<?> getCls() {
		return cls;
	}

	public void setCls(Class<?> cls) {
		this.cls = cls;
	}

	public StringBuffer getClsString() {
		return clsString;
	}

	public void setClsString(StringBuffer clsString) {
		this.clsString = clsString;
	}

}

package com.wesley.framework.decoration;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

import com.meadville.entity.Tlog;

public class DecoratorUtil {
	private final static String PACKAGE = "com.XXX.entity.decoration";
	private final static String LINE = "\n";
	private final static String NULL = "\t";

	public static void main(String[] args) {
		DecoratorUtil.outputDecoratorBuffer(DecoratorUtil
				.getDecoratorBuffer(new Tlog()));
	}

	/**
	 * @param param
	 *            输出通过解析Object的信息
	 */
	public synchronized static void outputDecoratorBuffer(DecoratorParam param) {
		FileWriter fw = null;
		String packageDirName = System.getProperty("user.dir") + "/src/"
				+ PACKAGE.replace('.', '/');
		try {
			File file = new File(packageDirName + "\\"
					+ param.getCls().getSimpleName() + "Dec.java");
			file.createNewFile();
			fw = new FileWriter(file);
			fw.getEncoding().getBytes("utf-8");
			fw.write(param.getClsString().toString());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * @param obj
	 * @return 通过Object来生成java,类似于反射
	 */
	public synchronized static DecoratorParam getDecoratorBuffer(Object obj) {
		Class<?> cls = obj.getClass();
		Field[] fields = cls.getDeclaredFields();
		StringBuffer sb = new StringBuffer();
		String modelName = cls.getSimpleName();
		String decName = cls.getSimpleName() + "Dec";
		sb.append("package ").append(PACKAGE).append(";").append(LINE);
		sb.append("import ").append(cls.getCanonicalName()).append(";")
				.append(LINE);
		sb.append("//http://numen06.iteye.com").append(LINE);
		sb.append("@SuppressWarnings(\"serial\")").append(LINE);
		sb.append("public class ").append(decName)
				.append(" extends DecoratorModel<").append(modelName)
				.append(",").append(decName).append("> {").append(LINE);
		sb.append(NULL).append("public ").append(decName)
				.append("() {super();}").append(LINE);
		sb.append(NULL).append("public ").append(decName).append("(")
				.append(modelName).append(" model) {super(model);}")
				.append(LINE);
		for (Field f : fields) {
			String getmethod = "get"
					+ f.getName().substring(0, 1).toUpperCase()
					+ f.getName().substring(1);
			String setmethod = "set"
					+ f.getName().substring(0, 1).toUpperCase()
					+ f.getName().substring(1);
			try {
				Method gmothod = cls.getMethod(getmethod, new Class<?>[0]);
				Method smothod = cls.getMethod(setmethod,
						gmothod.getReturnType());
				sb.append(NULL).append("public ")
						.append(gmothod.getReturnType().getName()).append(" ")
						.append(gmothod.getName()).append("() {").append(LINE);
				sb.append(NULL).append(NULL).append("return super.model.")
						.append(getmethod).append("();").append(LINE);
				sb.append(NULL).append("}").append(LINE);
				sb.append(NULL).append("public void").append(" ")
						.append(smothod.getName()).append("(")
						.append(smothod.getParameterTypes()[0].getName())
						.append(" ").append(f.getName()).append(") {")
						.append(LINE);
				sb.append(NULL).append(NULL).append("super.model.")
						.append(smothod.getName()).append("(")
						.append(f.getName()).append(");").append(LINE);
				sb.append(NULL).append("}").append(LINE);
			} catch (SecurityException e) {
				e.printStackTrace();
			} catch (NoSuchMethodException e) {
				e.printStackTrace();
			}
		}
		sb.append("}");
		// System.out.println(sb.toString());
		return new DecoratorParam(cls, sb);
	}
}
发表评论
用户名: 匿名