| 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 jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user