commenting away /* Java 6 support - teo_sarca BF [ 1806700 ] */ to remove errors

This commit is contained in:
Redhuan D. Oon 2008-07-06 03:29:19 +00:00
parent 492bd93551
commit 2d299caecd
4 changed files with 164 additions and 39 deletions

View File

@ -49,7 +49,13 @@ public abstract class AbstractElementHandler implements ElementHandler {
* *
*/ */
public int get_ID (Properties ctx, String tableName, String name) { public int get_ID (Properties ctx, String tableName, String name) {
return IDFinder.get_ID(tableName, name, getClientId(ctx), getTrxName(ctx)); return IDFinder.get_ID("Name", tableName, name, getClientId(ctx), getTrxName(ctx));
}
/** red1 - overloading to handle extra Name or DocumentNo argument
* occurs for cases that doesn't use name in Data such as C_Order.DocumentNo
*/
public int get_ID (String lookUpName, Properties ctx, String tableName, String name) {
return IDFinder.get_ID(lookUpName, tableName, name, getClientId(ctx), getTrxName(ctx));
} }
/** /**
@ -223,8 +229,8 @@ public abstract class AbstractElementHandler implements ElementHandler {
* @param tableName * @param tableName
* @param name * @param name
*/ */
public int getIDbyName (Properties ctx, String tableName, String name) { public int getIDbyName (Properties ctx, String tableName, String name, String lookupField) {
return IDFinder.getIDbyName(tableName, name, getClientId(ctx), getTrxName(ctx)); return IDFinder.getIDbyName(lookupField, tableName, name, getClientId(ctx), getTrxName(ctx));
} }
/** /**

View File

@ -47,13 +47,13 @@ public class IDFinder {
* @param trxName * @param trxName
* *
*/ */
public static int get_ID (String tableName, String name, int AD_Client_ID, String trxName) { public static int get_ID (String lookUpField, String tableName, String name, int AD_Client_ID, String trxName) {
int id = 0; int id = 0;
//construct cache key //construct cache key
StringBuffer key = new StringBuffer(); StringBuffer key = new StringBuffer();
key.append(tableName) key.append(tableName)
.append(".Name=") .append("."+lookUpField+"=") //red1 - to allow for DocumentNo in C_Orders
.append(name); .append(name);
if (!tableName.startsWith("AD_")) if (!tableName.startsWith("AD_"))
key.append(" and AD_Client_ID=").append(AD_Client_ID); key.append(" and AD_Client_ID=").append(AD_Client_ID);
@ -66,7 +66,7 @@ public class IDFinder {
.append(tableName) .append(tableName)
.append("_ID from ") .append("_ID from ")
.append(tableName) .append(tableName)
.append(" where name=?"); .append(" where "+lookUpField+"=?");//red1 - to allow for DocumentNo in C_Orders
if (!tableName.startsWith("AD_")) if (!tableName.startsWith("AD_"))
sqlB = sqlB.append(" and AD_Client_ID=?"); sqlB = sqlB.append(" and AD_Client_ID=?");
@ -351,7 +351,7 @@ public class IDFinder {
* @param AD_Client_ID * @param AD_Client_ID
* @param trxName * @param trxName
*/ */
public static int getIDbyName (String tableName, String name, int AD_Client_ID, String trxName) { public static int getIDbyName (String lookupField, String tableName, String name, int AD_Client_ID, String trxName) {
int id = 0; int id = 0;
//construct cache key //construct cache key
@ -371,8 +371,9 @@ public class IDFinder {
.append("_ID ") .append("_ID ")
.append("FROM ") .append("FROM ")
.append(tableName) .append(tableName)
.append(" ") .append(" WHERE ")
.append("WHERE name=?"); .append(lookupField) //red1 - i.e. Name or DocumentNo
.append("=?");
if (!tableName.startsWith("AD_")) if (!tableName.startsWith("AD_"))
sql.append(" AND AD_Client_ID=?"); sql.append(" AND AD_Client_ID=?");
try { try {

View File

@ -62,7 +62,7 @@ public class DataElementHandler extends AbstractElementHandler {
if (elementValue.equals("adempieredata") || elementValue.equals("data")) { if (elementValue.equals("adempieredata") || elementValue.equals("data")) {
log.info(elementValue); log.info(elementValue);
if (atts.getValue("clientname") != null) { if (atts.getValue("clientname") != null) {
int AD_Client_ID = IDFinder.get_ID("AD_Client", atts.getValue("clientname"), getClientId(ctx), getTrxName(ctx)); int AD_Client_ID = IDFinder.get_ID("Name","AD_Client", atts.getValue("clientname"), getClientId(ctx), getTrxName(ctx));
Env.setContext(ctx, "AD_Client_ID", AD_Client_ID); Env.setContext(ctx, "AD_Client_ID", AD_Client_ID);
log.info("adempieredata: client set to "+AD_Client_ID+" "+atts.getValue("clientname")); log.info("adempieredata: client set to "+AD_Client_ID+" "+atts.getValue("clientname"));
} }
@ -97,12 +97,17 @@ public class DataElementHandler extends AbstractElementHandler {
String d_rowname = atts.getValue("name"); String d_rowname = atts.getValue("name");
// name can be null if there are keyXname attributes. // name can be null if there are keyXname attributes.
//red1 - Using DocumentNo also (done in CREATE routine at bottom)
String lookUpField = "Name";
if ("C_Order_ID".equals(atts.getValue("key1name")))
lookUpField = "DocumentNo";
if (!d_rowname.equals("")){ if (!d_rowname.equals("")){
int id = get_ID(ctx, d_tablename, d_rowname); int id = get_ID(lookUpField, ctx, d_tablename, d_rowname);
genericPO = new GenericPO(d_tablename, ctx, id, getTrxName(ctx)); genericPO = new GenericPO(d_tablename, ctx, id, getTrxName(ctx));
if (id > 0){ if (id > 0){
AD_Backup_ID = copyRecord(ctx,d_tablename,genericPO); AD_Backup_ID = copyRecord(ctx,d_tablename,genericPO);
objectStatus = "Update"; objectStatus = "Update";
//TODO red1 - new problem arises where child details i.e. OrderLines need to be updated, complex and so easiest may be to delete all first, then create.
} }
else{ else{
objectStatus = "New"; objectStatus = "New";
@ -110,6 +115,7 @@ public class DataElementHandler extends AbstractElementHandler {
} }
} }
// keyXname and lookupkeyXname. // keyXname and lookupkeyXname.
//red1 - this should be redundant, because u cannot safely look up via PK ID as key, when above Name/DocNo is sufficient
else { else {
String sql = "select * from "+d_tablename; String sql = "select * from "+d_tablename;
String whereand = " where"; String whereand = " where";
@ -131,7 +137,7 @@ public class DataElementHandler extends AbstractElementHandler {
ResultSet rs = pstmt.executeQuery(); ResultSet rs = pstmt.executeQuery();
if (rs.next()) { if (rs.next()) {
objectStatus = "Update"; objectStatus = "New"; //red1 - not "Update" as lookUpName in effect
genericPO = new GenericPO(d_tablename, ctx, rs, getTrxName(ctx)); genericPO = new GenericPO(d_tablename, ctx, rs, getTrxName(ctx));
rs.close(); rs.close();
pstmt.close(); pstmt.close();
@ -162,20 +168,20 @@ public class DataElementHandler extends AbstractElementHandler {
// for debug GenericPO. // for debug GenericPO.
if (false) { if (false) {
POInfo poInfo = POInfo.getPOInfo(ctx, get_ID(ctx, "AD_Table", d_tablename), getTrxName(ctx)); POInfo poInfo = POInfo.getPOInfo(ctx, get_ID(lookUpField,ctx, "AD_Table", d_tablename), getTrxName(ctx));
if (poInfo == null) if (poInfo == null)
log.info("poInfo is null."); log.info("poInfo is null.");
for (int i = 0; i < poInfo.getColumnCount(); i++) { for (int i = 0; i < poInfo.getColumnCount(); i++) {
log.info(d_tablename+" column: "+poInfo.getColumnName(i)); log.info(d_tablename+" column: "+poInfo.getColumnName(i));
} }
} }
// globalqss: set AD_Client_ID to the client setted in adempieredata // globalqss: set AD_Client_ID to the client set in adempieredata
if (getClientId(ctx) > 0 && genericPO.getAD_Client_ID() != getClientId(ctx)) if (getClientId(ctx) > 0 && genericPO.getAD_Client_ID() != getClientId(ctx))
genericPO.set_ValueOfColumn("AD_Client_ID", getClientId(ctx)); genericPO.set_ValueOfColumn("AD_Client_ID", getClientId(ctx));
// if new. TODO: no defaults for keyXname. // if new. TODO: no defaults for keyXname.
if (!d_rowname.equals("") && ((Integer)(genericPO.get_Value(d_tablename+"_ID"))).intValue() == 0) { if (!d_rowname.equals("") && ((Integer)(genericPO.get_Value(d_tablename+"_ID"))).intValue() == 0) {
log.info("new genericPO, table: "+d_tablename+" name:"+d_rowname); log.info("new genericPO, table: "+d_tablename+" name:"+d_rowname);
genericPO.set_ValueOfColumn("Name", d_rowname); genericPO.set_ValueOfColumn(lookUpField, d_rowname); //red1 - to handle Name or DocumentName for SO
// Set defaults. // Set defaults.
//TODO: get defaults from configuration //TODO: get defaults from configuration
HashMap defaults = new HashMap(); HashMap defaults = new HashMap();
@ -260,7 +266,13 @@ public class DataElementHandler extends AbstractElementHandler {
if (atts.getValue("lookupname") != null && !"".equals(atts.getValue("lookupname"))) { if (atts.getValue("lookupname") != null && !"".equals(atts.getValue("lookupname"))) {
// globalqss - bring support from XML2AD to lookupname // globalqss - bring support from XML2AD to lookupname
String m_tablename = atts.getValue("name").substring(0, atts.getValue("name").length()-3); String m_tablename = atts.getValue("name").substring(0, atts.getValue("name").length()-3);
genericPO.set_ValueOfColumn(atts.getValue("name"), new Integer(getIDbyName(ctx, m_tablename, atts.getValue("lookupname")))); //red1 - convert other names to proper names i.e. SalesRep > AD_User
if (m_tablename.equals("SalesRep"))
m_tablename="AD_User";
String lookupIDentifier = "Name"; //red1 - lookupIDentifier such as Name or DocumentNo
if (atts.getValue("name").equals("C_Order_ID"))
lookupIDentifier = "DocumentNo";
genericPO.set_ValueOfColumn(atts.getValue("name"), new Integer(getIDbyName(ctx, m_tablename, atts.getValue("lookupname"), lookupIDentifier)));
} }
} }
} }
@ -301,25 +313,34 @@ public class DataElementHandler extends AbstractElementHandler {
col_Name = meta.getColumnName(i).toUpperCase(); col_Name = meta.getColumnName(i).toUpperCase();
if (col_Name.equals("NAME") && rs.getObject("name") != null) if (col_Name.equals("NAME") && rs.getObject("name") != null)
nameatts = ""+rs.getObject("name"); nameatts = ""+rs.getObject("name");
//red1 - capture PK other name for lookup also
if (col_Name.equals("DOCUMENTNO") && rs.getObject("DOCUMENTNO") != null)
nameatts = ""+rs.getObject("DocumentNo");
//red1 - only for fields ending in _ID to save redundant processing time
if ("_ID".equals(col_Name.substring(col_Name.length()-3, col_Name.length())))
{
String sql2 = "SELECT ColumnName FROM AD_Column " String sql2 = "SELECT ColumnName FROM AD_Column "
+ "WHERE isKey = 'Y' AND " + "WHERE isKey = 'Y' AND "
+ "AD_Table_ID = ? AND " + "AD_Table_ID = ? AND "
+ "Upper(ColumnName)= '"+col_Name+"'"; + "Upper(ColumnName)= '"+col_Name+"'";
String cName = DB.getSQLValueString(null,sql2,table_id); String cName = DB.getSQLValueString(null,sql2,table_id);
if (cName != null){ if (cName != null){
if (cName.toUpperCase().equals(col_Name) && key1 == 0 ){ if (key1 == 0 ){ //red1 - remove cName.toUpperCase().equals(col_Name) &&
atts.addAttribute("","","key1name","CDATA",cName); atts.addAttribute("","","key1name","CDATA",cName);
atts.addAttribute("","","lookupkey1name","CDATA",""+rs.getObject(col_Name)); atts.addAttribute("","","lookupkey1name","CDATA",""+rs.getObject(col_Name));
key1 = 1; key1 = 1;
} }
else if (cName.toUpperCase().equals(col_Name) && key1 == 1 ){ else if (key1 == 1 ){ //red1 - remove cName.toUpperCase().equals(col_Name) &&
atts.addAttribute("","","key2name","CDATA",cName); atts.addAttribute("","","key2name","CDATA",cName);
atts.addAttribute("","","lookupkey2name","CDATA",""+rs.getObject(col_Name)); atts.addAttribute("","","lookupkey2name","CDATA",""+rs.getObject(col_Name));
key1 = 2; key1 = 2;
} }
} }
} }
}
atts.addAttribute("","","name","CDATA",nameatts); atts.addAttribute("","","name","CDATA",nameatts);
// this is to ensure flushing of old values
if ( key1 == 0 ){ if ( key1 == 0 ){
atts.addAttribute("","","key1name","CDATA",""); atts.addAttribute("","","key1name","CDATA","");
atts.addAttribute("","","lookupkey1name","CDATA",""); atts.addAttribute("","","lookupkey1name","CDATA","");
@ -347,12 +368,43 @@ public class DataElementHandler extends AbstractElementHandler {
ResultSet rs1 = pstmt.executeQuery(); ResultSet rs1 = pstmt.executeQuery();
while (rs1.next()){ while (rs1.next()){
//added 9/3/05 //added 9/3/05
//red1 20/05/08 - FK ID Begins where commented
String exactCase = rs1.getString("ColumnName"); // red1 to retain the leading cap case for exact = table column's content
int flag = 0; //red1 - flag to ensure value if lookupname not done
atts.clear(); atts.clear();
atts.addAttribute("","","name","CDATA", rs1.getString("ColumnName")); atts.addAttribute("","","name","CDATA", rs1.getString("ColumnName"));
atts.addAttribute("","","class","CDATA", rs1.getString("Name")); atts.addAttribute("","","class","CDATA", rs1.getString("Name"));
if (rs1.getString("Name").equals("Date")||rs1.getString("Name").equals("Date+Time")||rs1.getString("Name").equals("Time")) if (rs1.getString("Name").equals("Date")||rs1.getString("Name").equals("Date+Time")||rs1.getString("Name").equals("Time"))
atts.addAttribute("","","value","CDATA", "" + rs.getTimestamp(i)); atts.addAttribute("","","value","CDATA", "" + rs.getTimestamp(i));
else else
//red1 - here is where the FK ID lookup check happens
//red1 - looking for fields ending in _ID, confirm its a tablename and return its Name from its ID in the FK table
if ("_ID".equals(col_Name.substring(col_Name.length()-3, col_Name.length())))
{
String colName_without_ID = exactCase.substring(0, exactCase.length()-3);
if (!colName_without_ID.equals(table_Name))
{
//red1 - need to convert other names to proper names i.e. SalesRep > AD_User
if (colName_without_ID.equals("SalesRep")) colName_without_ID="AD_User";
String sqlvalue = "Select TableName from AD_Table where TableName = '"+colName_without_ID+"'";
//red1 - Select TableName from AD_Table where TableName = colName_without_ID
String tableName = DB.getSQLValueByValue(null, sqlvalue);
//red1 - lookup DB>TableName(present_ID)
if (tableName!=null && rs.getObject(i)!=null){ // red1 - to skip if nothing in field
sqlvalue = "Select Name, AD_Client_ID from "+tableName+" where "+colName_without_ID+"_ID="+rs.getObject(i); //red1 colName_without_ID+"_ID is to solve SalesRep>AD_User case
//red1 - to handle DocumentNo FK IDentifier in C_OrderLine //AD_Client_ID to resolve that for System record do not do lookupName, just return native ID
if (table_Name.equals("C_OrderLine") && (colName_without_ID.equals("C_Order")))
sqlvalue = "SELECT DocumentNo, AD_Client_ID FROM "+tableName+" where "+colName_without_ID+"_ID="+rs.getObject(i);
String valueName = DB.getSQLValueByValueClient(null, sqlvalue);
if (valueName!=null){
atts.addAttribute("","","lookupname","CDATA", "" + valueName);
flag = 1;
//red1 - FK ID end
}
}
}
}
if (flag==0)
atts.addAttribute("","","value","CDATA", "" + rs.getObject(i)); atts.addAttribute("","","value","CDATA", "" + rs.getObject(i));
if (!rs1.getString("ColumnName").equals("Created")&&!rs1.getString("ColumnName").equals("CreatedBy")&& if (!rs1.getString("ColumnName").equals("Created")&&!rs1.getString("ColumnName").equals("CreatedBy")&&

View File

@ -1104,6 +1104,72 @@ public final class DB
} }
return retValue; return retValue;
} // getRowSet } // getRowSet
/** -- red1 --
* Get One String Value from sql
* @param trxName trx
* @param sql sql
* @return only value or null
*/
public static String getSQLValueByValue (String trxName, String sql)
{
String retValue = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
pstmt = prepareStatement(sql, trxName);
rs = pstmt.executeQuery();
if (rs.next())
retValue = rs.getString(1);
else
log.fine("No Value " + sql);
}
catch (Exception e)
{
log.log(Level.SEVERE, sql, e);
}
finally
{
close(rs);
close(pstmt);
rs= null;
pstmt = null;
}
return retValue;
} // getSQLValue String
public static String getSQLValueByValueClient (String trxName, String sql)
{
String retValue = null;
int AD_Client_ID = 0;
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
pstmt = prepareStatement(sql, trxName);
rs = pstmt.executeQuery();
if (rs.next()){
retValue = rs.getString(1);
AD_Client_ID = rs.getInt(2); //red1 - to check if Client is SYSTEM then do not lookup
if (AD_Client_ID==0) retValue = null;
}
else
log.fine("No Value " + sql);
}
catch (Exception e)
{
log.log(Level.SEVERE, sql, e);
}
finally
{
close(rs);
close(pstmt);
rs= null;
pstmt = null;
}
return retValue;
} // getSQLValueClient String
/** /**
* Get Value from sql * Get Value from sql