diff --git a/base/src/org/adempiere/pipo/AbstractElementHandler.java b/base/src/org/adempiere/pipo/AbstractElementHandler.java index a514ef175f..0d82629034 100644 --- a/base/src/org/adempiere/pipo/AbstractElementHandler.java +++ b/base/src/org/adempiere/pipo/AbstractElementHandler.java @@ -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. * diff --git a/base/src/org/adempiere/pipo/IDFinder.java b/base/src/org/adempiere/pipo/IDFinder.java index 9260c79b25..708ffcb9a6 100644 --- a/base/src/org/adempiere/pipo/IDFinder.java +++ b/base/src/org/adempiere/pipo/IDFinder.java @@ -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(); diff --git a/base/src/org/adempiere/pipo/handler/DataElementHandler.java b/base/src/org/adempiere/pipo/handler/DataElementHandler.java index 3b8158da21..d8d6fdfe29 100644 --- a/base/src/org/adempiere/pipo/handler/DataElementHandler.java +++ b/base/src/org/adempiere/pipo/handler/DataElementHandler.java @@ -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")))); } + } } }