| package com.jdi.dbport.utils;
| import java.sql.*;
| import java.io.*;
|
| /**
| * Create Entity Bean (byte code) from existing tables in database.
| * This generator can only generate basic code for programming, so
| * you should optimize the generated code.
| * before you use this tool, be sure that there is a folder called
| * "001_JDI_Generate_EntityBean_TEMP" in the root of C hard driver.
| * @author CHR
| *
| */
|
| public class GenerateEntityBeans {
| private static String packageName = "com.jdi.persistence";
| private static String directory =
"C:\\001_JDI_Generate_EntityBean_TEMP\\";
|
| StringBuffer start = new StringBuffer()
| .append("/** Generated Entity Bean - YOU SHOULD OPTIMIZE IT - Copyright
(C) ??? */\n");
|
| StringBuffer packagingAndImporting = new StringBuffer()
| .append("package " + packageName + ";" + "\n" +
| "import javax.persistence.*; \n" +
| "import java.util.*; \n" +
| "import java.sql.*; \n" +
| "import java.math.*;\n\n");
|
| private StringBuffer doGenerateClassName(String tablename,String
classname){
| String classdeclaring =
| "@Entity \n " +
| "@Table(name=\"" + tablename + "\") \n " +
| "public class " + classname +"{\n";
| StringBuffer mainclasstext = new
StringBuffer().append(start).append(packagingAndImporting);
| mainclasstext.append(classdeclaring);
| return mainclasstext;
| }
|
| private StringBuffer doGenerateProperties(String columnname, String
datatype, String keytype,
| String nullable, String defaultvalue){
| String useddatatype;
| String compareString = datatype.concat("111111111");
| //Integer,Int,Mediumint,tinyint,smallint as int
|
if(compareString.substring(0,7).equalsIgnoreCase("Integer")||compareString.substring(0,3).equalsIgnoreCase("Int")||
|
compareString.substring(0,9).equalsIgnoreCase("MEDIUMINT")||compareString.substring(0,8).equalsIgnoreCase("SMALLINT")||
|
compareString.substring(0,7).equalsIgnoreCase("TINYINT"))
| useddatatype = "int";
| //bigint as long
| else if(compareString.substring(0,6).equalsIgnoreCase("BIGINT"))
| useddatatype = "long";
| //float,double,decimal,real,numeric as double
| else
if(compareString.substring(0,5).equalsIgnoreCase("FLOAT")||compareString.substring(0,6).equalsIgnoreCase("DOUBLE")||
|
compareString.substring(0,7).equalsIgnoreCase("DECIMAL")||compareString.substring(0,4).equalsIgnoreCase("REAL")||
|
compareString.substring(0,7).equalsIgnoreCase("NUMERIC"))
| useddatatype = "double";
| //char, varchar, date, datetime, timestamp as String
| else
if(compareString.substring(0,4).equalsIgnoreCase("CHAR")||compareString.substring(0,7).equalsIgnoreCase("VARCHAR")||
|
compareString.substring(0,4).equalsIgnoreCase("DATE")
||compareString.substring(0,8).equalsIgnoreCase("DATETIME") ||
|
compareString.substring(0,9).equalsIgnoreCase("TIMESTAMP"))
| useddatatype = "String";
| else useddatatype = "String";
| String propertiesclaring1 = "\tprivate " + useddatatype + " " +
columnname + ";\n";
| String propertiesclaring2 = "[EMAIL PROTECTED](name=\""+
columnname +"\")\n";
| String propertiesgetter = "\tpublic " + useddatatype + " get" +
columnname + "(){\n\t\treturn " + columnname +";\n\t}\n";
| String propertiessetter = "\tpublic void " + "set" + columnname
+ "(" + useddatatype + " " + columnname + "){\n\t\tthis." + columnname + " = "
+ columnname + ";\n\t}\n\n";
| String propertiesID = "[EMAIL PROTECTED]@GeneratedValue\n";
| StringBuffer propertiesText = new
StringBuffer().append(propertiesclaring1);
| if(keytype!=null && keytype.equalsIgnoreCase("PRI"))
| propertiesText.append(propertiesID);
|
propertiesText.append(propertiesclaring2).append(propertiesgetter).append(propertiessetter);
| return propertiesText;
| }
|
| private StringBuffer doGenerateJavaCode(Connection conn, String
tablename,String classname){
| StringBuffer javaCode = new StringBuffer();
| javaCode.append(doGenerateClassName(tablename,classname));
| String querycolumns = "show columns from " + tablename;
| try{
| Statement stmt = conn.createStatement();
| ResultSet rs = stmt.executeQuery(querycolumns);
| while(rs.next()){
|
javaCode.append(doGenerateProperties(rs.getString("Field"),rs.getString("Type"),
|
rs.getString("Key"),rs.getString("Null"),rs.getString("Default")));
| }
| rs.close();
| stmt.close();
| javaCode.append("\n}");
|
| }catch(Exception e){
| System.out.println(e.getMessage());
| }
| return javaCode;
| }
|
| private void writeToFile(StringBuffer sb, String filename){
| try{
| File out = new File(filename);
| FileWriter fw = new FileWriter(out);
| for (int i = 0; i < sb.length(); i++){
| char c = sb.charAt(i);
| fw.write(c);
| }
| fw.flush();
| fw.close();
| }catch(Exception e){
| System.out.println(e.getMessage());
| }
| }
| public GenerateEntityBeans (Connection conn, String tablename, String
classname, String directory){
|
writeToFile(doGenerateJavaCode(conn,tablename,classname),directory);
| }
| public static void main(String args[]){
| try{
| Class.forName("com.mysql.jdbc.Driver").newInstance();
| Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/jdi","jdi","jdi");
| String query1 = "show tables";
| Statement stmt = conn.createStatement();
| ResultSet rs = stmt.executeQuery(query1);
| while(rs.next()){
| String tablename = rs.getString(1);
| String classname = tablename + "EntityBean";
| new
GenerateEntityBeans(conn,tablename,classname,directory + classname + ".java");
| }
| stmt.close();
| rs.close();
| conn.close();
| }catch(Exception e){
| System.out.print(e.toString());
| }finally{
| ;
| }
|
| }
| }
|
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4024640#4024640
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4024640
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user