Implement [2845179] - Packin data implement lookupvalue like lookupname

https://sourceforge.net/tracker/?func=detail&aid=2845179&group_id=176962&atid=879335
This commit is contained in:
Carlos Ruiz 2009-08-26 21:18:46 +00:00
parent f9a8309e2f
commit 9d342b02b5
3 changed files with 31 additions and 5 deletions

View File

@ -167,6 +167,17 @@ public abstract class AbstractElementHandler implements ElementHandler {
return IDFinder.getIDbyName(tableName, name, getClientId(ctx), getTrxName(ctx));
}
/**
* Get ID from Value for a table.
* TODO: substitute with PO.getAllIDs
*
* @param tableName
* @param name
*/
public int getIDbyValue (Properties ctx, String tableName, String value) {
return IDFinder.getIDbyValue(tableName, value, getClientId(ctx), getTrxName(ctx));
}
/**
* Make backup copy of record.
*

View File

@ -343,21 +343,22 @@ public class IDFinder {
}
/**
* Get ID from Name for a table.
* Get ID from Column for a table.
* TODO: substitute with PO.getAllIDs
*
* @param tableName
* @param column
* @param name
* @param AD_Client_ID
* @param trxName
*/
public static int getIDbyName (String tableName, String name, int AD_Client_ID, String trxName) {
public static int getIDbyColumn (String tableName, String column, String name, int AD_Client_ID, String trxName) {
int id = 0;
//construct cache key
StringBuffer key = new StringBuffer();
key.append(tableName)
.append(".Name=")
.append("."+column+"=")
.append(name);
if (!tableName.startsWith("AD_"))
key.append(" AND AD_Client_ID=").append(AD_Client_ID);
@ -372,7 +373,7 @@ public class IDFinder {
.append("FROM ")
.append(tableName)
.append(" ")
.append("WHERE name=?");
.append("WHERE "+column+"=?");
if (!tableName.startsWith("AD_"))
sql.append(" AND AD_Client_ID=?");
try {
@ -388,7 +389,7 @@ public class IDFinder {
pstmt = null;
}
catch (Exception e) {
log.log(Level.SEVERE, "getIDbyName:"+e);
log.log(Level.SEVERE, "getIDbyColumn:"+e);
throw new DatabaseAccessException(e);
}
@ -398,6 +399,15 @@ public class IDFinder {
return id;
}
public static int getIDbyName (String tableName, String name, int AD_Client_ID, String trxName) {
return getIDbyColumn(tableName, "Name", name, AD_Client_ID, trxName);
}
public static int getIDbyValue (String tableName, String name, int AD_Client_ID, String trxName) {
return getIDbyColumn(tableName, "Value", name, AD_Client_ID, trxName);
}
public static void clearIDCache() {
idCache.clear();

View File

@ -283,7 +283,12 @@ public class DataElementHandler extends AbstractElementHandler {
// globalqss - bring support from XML2AD to lookupname
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"))));
} else if (atts.getValue("lookupvalue") != null && !"".equals(atts.getValue("lookupvalue"))) {
// globalqss - bring support from XML2AD to lookupvalue
String m_tablename = atts.getValue("name").substring(0, atts.getValue("name").length()-3);
genericPO.set_ValueOfColumn(atts.getValue("name"), new Integer(getIDbyValue(ctx, m_tablename, atts.getValue("lookupvalue"))));
}
}
}
}