クラス情報保持用VOとフィールド情報保持用VO

クラス情報保持

package sample.covert;

/**
 * 生成の元となる情報
 */
public class ClassObject {
	/**
	 * 明示的にセットしない限りはnullとする。
	 * template側でifでfalse判定させる為。
	 */
	private String packageStr = null;
	
	//クラス名(パッケージ名除く)
	private String className;
	
	//プロパティの配列
	private FieldVO[] properties;
	
	public String getClassName() {
		return className;
	}
	public void setClassName(String className) {
		this.className = className;
	}
	public FieldVO[] getProperties() {
		return properties;
	}
	public void setProperties(FieldVO[] fileds) {
		this.properties = fileds;
	}
	public String getPackageStr() {
		return packageStr;
	}
	public void setPackageStr(String packageStr) {
		this.packageStr = packageStr;
	}
	
	/**
	 * クラスの完全修飾名を返す。
	 * @return クラスの完全修飾名
	 */
	public String getFullClassName() {
		return packageStr + "." + className;
	}
}


フィールド情報保持

package sample.covert;

import java.lang.reflect.Field;

public class FieldVO {
	//プロパティ名
	private String name;
	
	//型の文字列(java.lang以外は完全修飾名)
	private String type;
	
	//nameの日本語名
	private String fieldInfo;
	
	public String getFieldInfo() {
		return fieldInfo;
	}
	public void setFieldInfo(String fieldInfo) {
		this.fieldInfo = fieldInfo;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	
	/**
	 * setter名を返す。
	 * 
	 * @return  セッター名
	 */
	public String getSetterName() {
        StringBuffer buffer = new StringBuffer(name.length() + 3);

        buffer.append("set");
        buffer.append(Character.toUpperCase(name.charAt(0)));
        buffer.append(name.substring(1));

        return buffer.toString();
	}
	
	public String getGetterName(Field field) {
		
		if(Boolean.TYPE.getName().equals(type) || Boolean.TYPE.getSimpleName().equals(type) 
				|| Boolean.class.getSimpleName().equals(type) || Boolean.class.getName().equals(type)) {
			StringBuffer buffer = new StringBuffer(name.length() + 2);
			
			buffer.append("is");
			buffer.append(Character.toUpperCase(name.charAt(0)));
			buffer.append(name.substring(1));
			
			return buffer.toString();
		}
		StringBuffer buffer = new StringBuffer(name.length() + 3);
		
		buffer.append("get");
		buffer.append(Character.toUpperCase(name.charAt(0)));
		buffer.append(name.substring(1));
		
		return buffer.toString();
	}
	
	
}

あとは、変換対象をあらわすSetかなんかと変換用ロジックを出せばいいかな?
Excelからとも考えると基本は文字列だよなぁ・・・
バリフレクション!