Feature Request [ 1772015 ] Generate java Interface and implementation instead of X_ classes
https://sourceforge.net/tracker/?func=detail&atid=879335&aid=1772015&group_id=176962
This commit is contained in:
parent
8b086bcb05
commit
bc451d1044
|
|
@ -0,0 +1,157 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||||
|
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. This program is distributed in the hope *
|
||||||
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||||
|
* See the GNU General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
* For the text or an alternative of this public license, you may reach us *
|
||||||
|
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
||||||
|
* or via info@compiere.org or http://www.compiere.org/license.html *
|
||||||
|
* Contributor(s): Carlos Ruiz - globalqss *
|
||||||
|
* Teo Sarca *
|
||||||
|
* Trifon Trifonov *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.adempiere.util;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.compiere.Adempiere;
|
||||||
|
import org.compiere.util.CLogMgt;
|
||||||
|
import org.compiere.util.CLogger;
|
||||||
|
import org.compiere.util.DB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate Model Classes extending PO.
|
||||||
|
* Base class for CMP interface - will be extended to create byte code directly
|
||||||
|
*
|
||||||
|
* @author Jorg Janke
|
||||||
|
* @version $Id: GenerateModel.java,v 1.42 2005/05/08 15:16:56 jjanke Exp $
|
||||||
|
*/
|
||||||
|
public class GenerateModel
|
||||||
|
{
|
||||||
|
|
||||||
|
/** Logger */
|
||||||
|
private static CLogger log = CLogger.getCLogger (GenerateModel.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* String representation
|
||||||
|
* @return string representation
|
||||||
|
*/
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
StringBuffer sb = new StringBuffer ("GenerateModel[").append("]");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* Generate PO Model Class.
|
||||||
|
* <pre>
|
||||||
|
* Example: java GenerateModel.class mydirectory myPackage 'U','A'
|
||||||
|
* would generate entity type User and Application classes into mydirectory.
|
||||||
|
* Without parameters, the default is used:
|
||||||
|
* C:\Compiere\compiere-all\extend\src\compiere\model\ compiere.model 'U','A'
|
||||||
|
* </pre>
|
||||||
|
* @param args directory package entityType
|
||||||
|
* - directory where to save the generated file
|
||||||
|
* - package of the classes to be generated
|
||||||
|
* - entityType to be generated
|
||||||
|
*/
|
||||||
|
public static void main (String[] args)
|
||||||
|
{
|
||||||
|
Adempiere.startupEnvironment(true);
|
||||||
|
CLogMgt.setLevel(Level.FINE);
|
||||||
|
log.info("Generate Model $Revision: 1.42 $");
|
||||||
|
log.info("----------------------------------");
|
||||||
|
// first parameter
|
||||||
|
String directory = "C:\\Compiere\\compiere-all\\extend\\src\\compiere\\model\\";
|
||||||
|
if (args.length > 0)
|
||||||
|
directory = args[0];
|
||||||
|
if (directory == null || directory.length() == 0)
|
||||||
|
{
|
||||||
|
System.err.println("No Directory");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
log.info("Directory: " + directory);
|
||||||
|
|
||||||
|
// second parameter
|
||||||
|
String packageName = "compiere.model";
|
||||||
|
if (args.length > 1)
|
||||||
|
packageName = args[1];
|
||||||
|
if (packageName == null || packageName.length() == 0)
|
||||||
|
{
|
||||||
|
System.err.println("No package");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
log.info("Package: " + packageName);
|
||||||
|
|
||||||
|
// third parameter
|
||||||
|
String entityType = "'U','A'"; // User, Application
|
||||||
|
if (args.length > 2)
|
||||||
|
entityType = args[2];
|
||||||
|
if (entityType == null || entityType.length() == 0)
|
||||||
|
{
|
||||||
|
System.err.println("No EntityType");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
StringBuffer sql = new StringBuffer("EntityType IN (")
|
||||||
|
.append(entityType).append(")");
|
||||||
|
log.info(sql.toString());
|
||||||
|
log.info("----------------------------------");
|
||||||
|
|
||||||
|
String tableLike = "'%'"; // All tables
|
||||||
|
if (args.length > 3)
|
||||||
|
tableLike = args[3];
|
||||||
|
log.info("Table Like: " + tableLike);
|
||||||
|
|
||||||
|
// complete sql
|
||||||
|
sql.insert(0, "SELECT AD_Table_ID "
|
||||||
|
+ "FROM AD_Table "
|
||||||
|
+ "WHERE (TableName IN ('RV_WarehousePrice','RV_BPartner')" // special views
|
||||||
|
+ " OR IsView='N')"
|
||||||
|
+ " AND TableName NOT LIKE '%_Trl' AND ");
|
||||||
|
sql.append(" AND TableName LIKE ").append(tableLike);
|
||||||
|
|
||||||
|
sql.append(" ORDER BY TableName");
|
||||||
|
|
||||||
|
//
|
||||||
|
int count = 0;
|
||||||
|
PreparedStatement pstmt = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pstmt = DB.prepareStatement(sql.toString(), null);
|
||||||
|
ResultSet rs = pstmt.executeQuery();
|
||||||
|
while (rs.next())
|
||||||
|
{
|
||||||
|
new ModelInterfaceGenerator(rs.getInt(1), directory, packageName);
|
||||||
|
new ModelClassGenerator(rs.getInt(1), directory, packageName);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pstmt.close();
|
||||||
|
pstmt = null;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.severe("main - " + e);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if (pstmt != null)
|
||||||
|
pstmt.close ();
|
||||||
|
} catch (Exception e) { /* ignored */ }
|
||||||
|
pstmt = null;
|
||||||
|
}
|
||||||
|
log.info("Generated = " + count);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -41,7 +41,7 @@ import org.compiere.util.Env;
|
||||||
* @author Jorg Janke
|
* @author Jorg Janke
|
||||||
* @version $Id: GenerateModel.java,v 1.42 2005/05/08 15:16:56 jjanke Exp $
|
* @version $Id: GenerateModel.java,v 1.42 2005/05/08 15:16:56 jjanke Exp $
|
||||||
*/
|
*/
|
||||||
public class GenerateModelTrifon
|
public class ModelClassGenerator
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Generate PO Class
|
* Generate PO Class
|
||||||
|
|
@ -49,7 +49,7 @@ public class GenerateModelTrifon
|
||||||
* @param directory directory with \ or / at the end.
|
* @param directory directory with \ or / at the end.
|
||||||
* @param packageName package name
|
* @param packageName package name
|
||||||
*/
|
*/
|
||||||
public GenerateModelTrifon (int AD_Table_ID, String directory, String packageName)
|
public ModelClassGenerator (int AD_Table_ID, String directory, String packageName)
|
||||||
{
|
{
|
||||||
// create column access methods
|
// create column access methods
|
||||||
StringBuffer mandatory = new StringBuffer();
|
StringBuffer mandatory = new StringBuffer();
|
||||||
|
|
@ -82,10 +82,10 @@ public class GenerateModelTrifon
|
||||||
+" *****************************************************************************/\n";
|
+" *****************************************************************************/\n";
|
||||||
|
|
||||||
/** Generated on */
|
/** Generated on */
|
||||||
private Timestamp s_run = new Timestamp(System.currentTimeMillis());
|
// private Timestamp s_run = new Timestamp(System.currentTimeMillis());
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static CLogger log = CLogger.getCLogger (GenerateModelTrifon.class);
|
private static CLogger log = CLogger.getCLogger (ModelClassGenerator.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add Header info to buffer
|
* Add Header info to buffer
|
||||||
|
|
@ -922,7 +922,8 @@ public class GenerateModelTrifon
|
||||||
ResultSet rs = pstmt.executeQuery();
|
ResultSet rs = pstmt.executeQuery();
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
new GenerateModelTrifon(rs.getInt(1), directory, packageName);
|
new ModelInterfaceGenerator(rs.getInt(1), directory, packageName);
|
||||||
|
new ModelClassGenerator(rs.getInt(1), directory, packageName);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
rs.close();
|
rs.close();
|
||||||
|
|
@ -47,7 +47,7 @@ import org.compiere.util.Env;
|
||||||
* @author Trifon Trifonov
|
* @author Trifon Trifonov
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class GenerateInterfaceTrifon {
|
public class ModelInterfaceGenerator {
|
||||||
|
|
||||||
private String packageName = "";
|
private String packageName = "";
|
||||||
|
|
||||||
|
|
@ -86,10 +86,10 @@ public class GenerateInterfaceTrifon {
|
||||||
private Timestamp s_run = new Timestamp(System.currentTimeMillis());
|
private Timestamp s_run = new Timestamp(System.currentTimeMillis());
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static CLogger log = CLogger.getCLogger(GenerateInterfaceTrifon.class);
|
private static CLogger log = CLogger.getCLogger(ModelInterfaceGenerator.class);
|
||||||
|
|
||||||
|
|
||||||
public GenerateInterfaceTrifon(int AD_Table_ID, String directory, String packageName) {
|
public ModelInterfaceGenerator(int AD_Table_ID, String directory, String packageName) {
|
||||||
this.packageName = packageName;
|
this.packageName = packageName;
|
||||||
// create column access methods
|
// create column access methods
|
||||||
StringBuffer mandatory = new StringBuffer();
|
StringBuffer mandatory = new StringBuffer();
|
||||||
|
|
@ -514,7 +514,7 @@ public class GenerateInterfaceTrifon {
|
||||||
pstmt = DB.prepareStatement(sql.toString(), null);
|
pstmt = DB.prepareStatement(sql.toString(), null);
|
||||||
ResultSet rs = pstmt.executeQuery();
|
ResultSet rs = pstmt.executeQuery();
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
new GenerateInterfaceTrifon(rs.getInt(1), directory, packageName);
|
new ModelInterfaceGenerator(rs.getInt(1), directory, packageName);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
rs.close();
|
rs.close();
|
||||||
Loading…
Reference in New Issue