javacode-generation

How to build simple code generator in java


I want to build a simple code generator in java that can take database connection string and then create the model layer for each table in database , I don't know how can I do that , so if any one has any tutorial or links that may help me complete this task i will be thankful

Thanks in Advance


I have found a good example on code project that can take the database and make a good code generation for the tables in database , but unfortunately it is written in C# and also generate C# code

I don't know if it right to generate C# code and then convert them to java using any conversion software , or the right thing is to try to modify it to generate java classes instead of C# classes

by the way the link for the example is http://www.codeproject.com/KB/codegen/TierGenerator.aspx

I need your advice as soon as you can

Thanks in Advance


Solution

  • For quick and simple code generator: Just write the java source code into a StringBuilder and dump its content to a .java file. I never used third party libs for simple autogenerators:

    StringBuilder sourceBuilder = new StringBuilder();
    sourceBuilder.append("package com.example.beans;\n\n");
    sourceBuilder.append("import java.util.*;\n\n");
    sourceBuilder.append("public class MyBean {");
    
    for (DBField dbField:getFieldsFromDatabaseModel) {  // this DBField class is pure fiction!
      // bean attribute
      sourceBuilder.append("\tprivate ")
                   .append(dbField.getType)
                   .append(toFieldName(dbField.getName()))
                   .append(" = null;\n");
    
      // setter method
      sourceBuilder.append("\tpublic void ")
                   .append(toSetterName(dbField.getName()))
                   .append("(");
                   .append(dbField.getType)
                   .append(toFieldName(dbField.getName()))
                   .append(")\n")
                   .append("\t\tthis.")
                   .append(dbField.getType)
                   .append(" = ")
                   .append(dbField.getType)
                   .append(";\n\t}");
    
       // getter method ...
    sourceBuilder.append("\t}\n}\n");