diff --git a/org.adempiere.base/src/org/compiere/model/MPInstance.java b/org.adempiere.base/src/org/compiere/model/MPInstance.java index a046769934..d61eb3041b 100644 --- a/org.adempiere.base/src/org/compiere/model/MPInstance.java +++ b/org.adempiere.base/src/org/compiere/model/MPInstance.java @@ -412,6 +412,12 @@ public class MPInstance extends X_AD_PInstance return ip; } + + @Override + public I_AD_Process getAD_Process() throws RuntimeException { + return MProcess.get(getAD_Process_ID()); + } + public static void publishChangedEvent(int AD_User_ID) { IMessageService service = Core.getMessageService(); if (service != null) { @@ -447,13 +453,15 @@ public class MPInstance extends X_AD_PInstance // unnamed instances int lastRunCount = MSysConfig.getIntValue(MSysConfig.LASTRUN_RECORD_COUNT, 5, Env.getAD_Client_ID(ctx)); if (lastRunCount > 0) { + int maxLoopCount = 10 * lastRunCount; // using JDBC instead of Query for performance reasons, AD_PInstance can be huge String sql = "SELECT * FROM AD_PInstance " + " WHERE AD_Process_ID=? AND AD_User_ID=? AND IsActive='Y' AND AD_Client_ID=? AND Name IS NULL" + " ORDER BY Created DESC"; PreparedStatement pstmt = null; ResultSet rs = null; - int cnt = 0; + int runCount = 0; + int loopCount = 0; try { pstmt = DB.prepareStatement(sql, null); pstmt.setFetchSize(lastRunCount); @@ -462,16 +470,19 @@ public class MPInstance extends X_AD_PInstance pstmt.setInt(3, Env.getAD_Client_ID(ctx)); rs = pstmt.executeQuery(); while (rs.next()) { + loopCount++; MPInstance unnamedInstance = new MPInstance(ctx, rs, null); String paramsStr = unnamedInstance.getParamsStr(); if (! paramsStrAdded.contains(paramsStr)) { unnamedInstance.setName(Msg.getMsg(ctx, "LastRun") + " " + unnamedInstance.getCreated()); list.add(unnamedInstance); paramsStrAdded.add(paramsStr); - cnt++; - if (cnt == lastRunCount) + runCount++; + if (runCount == lastRunCount) break; } + if (loopCount == maxLoopCount) + break; } } catch (Exception e) { diff --git a/org.adempiere.base/src/org/compiere/model/POResultSet.java b/org.adempiere.base/src/org/compiere/model/POResultSet.java index 84d7f4d788..a4a80daeff 100644 --- a/org.adempiere.base/src/org/compiere/model/POResultSet.java +++ b/org.adempiere.base/src/org/compiere/model/POResultSet.java @@ -34,7 +34,7 @@ import org.compiere.util.DB; *
").append(m_Help).append("
"); - m_AD_Process_UU = rs.getString(6); - } - - initialMessage = buildMsg.toString(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql, e); - return false; - } - finally - { - DB.close(rs, pstmt); + // User Customization + MUserDefProc userDef = MUserDefProc.getBestMatch(ctx, AD_Process_ID); + if (userDef != null) { + if (userDef.getName() != null) + m_Name = userDef.getName(); + if (userDef.getDescription() != null) + m_Description = userDef.getDescription(); + if (userDef.getHelp() != null) + m_Help = userDef.getHelp(); } + buildMsg.append(""); + buildMsg.append(Util.isEmpty(m_Description) ? Msg.getMsg(m_ctx, "StartProcess?") : m_Description); + buildMsg.append(""); + + if (!Util.isEmpty(m_Help)) + buildMsg.append("").append(m_Help).append("
"); + m_AD_Process_UU = process.getAD_Process_UU(); + + initialMessage = buildMsg.toString(); + if (m_Name == null) return false; // @@ -472,12 +438,12 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI } protected boolean isReport () { - MProcess pr = new MProcess(m_ctx, m_AD_Process_ID, null); + MProcess pr = MProcess.get(m_ctx, m_AD_Process_ID); return pr.isReport() && pr.getJasperReport() == null; } protected boolean isJasperReport () { - MProcess pr = new MProcess(m_ctx, m_AD_Process_ID, null); + MProcess pr = MProcess.get(m_ctx, m_AD_Process_ID); return pr.isReport() && pr.getJasperReport() != null; } @@ -548,7 +514,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI int AD_Column_ID = 0; boolean m_isCanExport = false; - MProcess pr = new MProcess(m_ctx, m_AD_Process_ID, null); + MProcess pr = MProcess.get(m_ctx, m_AD_Process_ID); int table_ID = 0; try { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/AbstractDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/AbstractDesktop.java index 0a6edb8b28..b2ffd5b56d 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/AbstractDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/AbstractDesktop.java @@ -64,7 +64,7 @@ public abstract class AbstractDesktop extends AbstractUIPart implements IDesktop */ public void onMenuSelected(int menuId) { - MMenu menu = new MMenu(Env.getCtx(), menuId, null); + MMenu menu = MMenu.get(menuId); try {