クラス情報保持用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からとも考えると基本は文字列だよなぁ・・・
ビバリフレクション!