Skip to content

Instantly share code, notes, and snippets.

@sjyun
Created December 9, 2013 13:33
Show Gist options
  • Save sjyun/7872303 to your computer and use it in GitHub Desktop.
Save sjyun/7872303 to your computer and use it in GitHub Desktop.
java file 생성
/*
* @Param String className;
*
* @Param Map<String> field; java 파일을 생성하는 함수
*/
public static void createClass(String className, Map<String, String> fields)
throws IOException {
StringBuilder builder = new StringBuilder();
String packageName;
int idx = className.lastIndexOf('.');
if (idx >= 0) {
packageName = className.substring(0, idx);
className = className.substring(idx + 1);
} else
packageName = null;
if (packageName != null)
builder.append("package ").append(packageName).append(";\n");
builder.append("\n");
builder.append("public class ").append(className).append("\n");
builder.append("{\n");
boolean flag = false;
for (Map.Entry<String, String> field : fields.entrySet()) {
String type = field.getKey();
String name = field.getValue();
String methodedName = Character.toUpperCase(name.charAt(0))
+ name.substring(1);
if (flag)
builder.append("\n");
flag = true;
builder.append(" private ").append(type).append(" ")
.append(name).append(";\n");
builder.append("\n");
builder.append(" public ").append(type).append(" get")
.append(methodedName).append(" ()\n");
builder.append(" {\n");
builder.append(" return ").append(name).append(";\n");
builder.append(" }\n");
builder.append("\n");
builder.append(" public void set").append(methodedName)
.append(" (").append(type).append(" ").append(name)
.append(")\n");
builder.append(" {\n");
builder.append(" this.").append(name).append(" = ")
.append(name).append(";\n");
builder.append(" }\n");
}
builder.append("}\n");
File dir = new File(packageName.replaceAll("\\.",
Matcher.quoteReplacement(System.getProperty("file.separator"))));
dir.mkdirs();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(new File(dir, className + ".java"))));
writer.write(builder.toString());
writer.close();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment