diff --git a/base/src/org/compiere/wf/MWFNode.java b/base/src/org/compiere/wf/MWFNode.java index 1707f25975..804587c0b5 100644 --- a/base/src/org/compiere/wf/MWFNode.java +++ b/base/src/org/compiere/wf/MWFNode.java @@ -23,10 +23,12 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.List; import java.util.Properties; -import java.util.logging.Level; +import org.adempiere.exceptions.DBException; import org.compiere.model.MColumn; +import org.compiere.model.Query; import org.compiere.model.X_AD_WF_Node; import org.compiere.util.CCache; import org.compiere.util.DB; @@ -38,6 +40,9 @@ import org.compiere.util.Msg; * * @author Jorg Janke * @version $Id: MWFNode.java,v 1.2 2006/07/30 00:51:05 jjanke Exp $ + * + * @author Teo Sarca, www.arhipac.ro + *
  • FR [ 2214883 ] Remove SQL code and Replace for Query */ public class MWFNode extends X_AD_WF_Node { @@ -66,7 +71,7 @@ public class MWFNode extends X_AD_WF_Node } // get /** Cache */ - private static CCache s_cache = new CCache ("AD_WF_Node", 50); + private static CCache s_cache = new CCache (Table_Name, 50); /************************************************************************** @@ -129,13 +134,13 @@ public class MWFNode extends X_AD_WF_Node loadNext(); loadTrl(); // Save to Cache - s_cache.put (new Integer(getAD_WF_Node_ID()), this); + s_cache.put (get_ID(), this); } // MWFNode /** Next Modes */ - private ArrayList m_next = new ArrayList(); + private List m_next = new ArrayList(); /** Translated Name */ private String m_name_trl = null; /** Translated Description */ @@ -166,25 +171,15 @@ public class MWFNode extends X_AD_WF_Node */ private void loadNext() { - String sql = "SELECT * FROM AD_WF_NodeNext WHERE AD_WF_Node_ID=? AND IsActive='Y' ORDER BY SeqNo"; + m_next = new Query(getCtx(), MWFNodeNext.Table_Name, "AD_WF_Node_ID=?", get_TrxName()) + .setParameters(new Object[]{get_ID()}) + .setOnlyActiveRecords(true) + .setOrderBy(MWFNodeNext.COLUMNNAME_SeqNo) + .list(); boolean splitAnd = SPLITELEMENT_AND.equals(getSplitElement()); - try + for (MWFNodeNext next : m_next) { - PreparedStatement pstmt = DB.prepareStatement(sql, get_TrxName()); - pstmt.setInt(1, get_ID()); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - { - MWFNodeNext next = new MWFNodeNext (getCtx(), rs, get_TrxName()); - next.setFromSplitAnd(splitAnd); - m_next.add(next); - } - rs.close(); - pstmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql, e); + next.setFromSplitAnd(splitAnd); } log.fine("#" + m_next.size()); } // loadNext @@ -196,13 +191,16 @@ public class MWFNode extends X_AD_WF_Node { if (Env.isBaseLanguage(getCtx(), "AD_Workflow") || get_ID() == 0) return; - String sql = "SELECT Name, Description, Help FROM AD_WF_Node_Trl WHERE AD_WF_Node_ID=? AND AD_Language=?"; + final String sql = "SELECT Name, Description, Help FROM AD_WF_Node_Trl" + +" WHERE AD_WF_Node_ID=? AND AD_Language=?"; + PreparedStatement pstmt = null; + ResultSet rs = null; try { - PreparedStatement pstmt = DB.prepareStatement(sql, get_TrxName()); + pstmt = DB.prepareStatement(sql, get_TrxName()); pstmt.setInt(1, get_ID()); pstmt.setString(2, Env.getAD_Language(getCtx())); - ResultSet rs = pstmt.executeQuery(); + rs = pstmt.executeQuery(); if (rs.next()) { m_name_trl = rs.getString(1); @@ -210,12 +208,16 @@ public class MWFNode extends X_AD_WF_Node m_help_trl = rs.getString(3); m_translated = true; } - rs.close(); - pstmt.close(); } catch (SQLException e) { - log.log(Level.SEVERE, sql, e); + //log.log(Level.SEVERE, sql, e); + throw new DBException(e, sql); + } + finally + { + DB.close(rs, pstmt); + rs = null; pstmt = null; } log.fine("Trl=" + m_translated); } // loadTrl diff --git a/base/src/org/compiere/wf/MWorkflow.java b/base/src/org/compiere/wf/MWorkflow.java index cf6f36d8d1..03bcb41d21 100644 --- a/base/src/org/compiere/wf/MWorkflow.java +++ b/base/src/org/compiere/wf/MWorkflow.java @@ -22,12 +22,15 @@ import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Calendar; +import java.util.List; import java.util.Properties; import java.util.logging.Level; +import org.adempiere.exceptions.DBException; import org.compiere.model.MMenu; import org.compiere.model.MProduct; import org.compiere.model.MWindow; +import org.compiere.model.Query; import org.compiere.model.X_AD_WF_Node; import org.compiere.model.X_AD_Workflow; import org.compiere.process.ProcessInfo; @@ -44,6 +47,9 @@ import org.compiere.util.Trx; * * @author Jorg Janke * @version $Id: MWorkflow.java,v 1.4 2006/07/30 00:51:05 jjanke Exp $ + * + * @author Teo Sarca, www.arhipac.ro + *
  • FR [ 2214883 ] Remove SQL code and Replace for Query */ public class MWorkflow extends X_AD_Workflow { @@ -61,13 +67,12 @@ public class MWorkflow extends X_AD_Workflow */ public static MWorkflow get (Properties ctx, int AD_Workflow_ID) { - Integer key = new Integer (AD_Workflow_ID); - MWorkflow retValue = (MWorkflow)s_cache.get(key); + MWorkflow retValue = (MWorkflow)s_cache.get(AD_Workflow_ID); if (retValue != null) return retValue; retValue = new MWorkflow (ctx, AD_Workflow_ID, null); if (retValue.get_ID() != 0) - s_cache.put(key, retValue); + s_cache.put(AD_Workflow_ID, retValue); return retValue; } // get @@ -87,41 +92,27 @@ public class MWorkflow extends X_AD_Workflow // Reload if (s_cacheDocValue.isReset()) { - String sql = "SELECT * FROM AD_Workflow " - + "WHERE WorkflowType='V' AND IsActive='Y' AND IsValid='Y' " - + "ORDER BY AD_Client_ID, AD_Table_ID"; + final String whereClause = "WorkflowType=? AND IsValid=?"; + List workflows = new Query(ctx, Table_Name, whereClause, trxName) + .setParameters(new Object[]{WORKFLOWTYPE_DocumentValue, true}) + .setOnlyActiveRecords(true) + .setOrderBy("AD_Client_ID, AD_Table_ID") + .list(); ArrayList list = new ArrayList(); String oldKey = ""; String newKey = null; - PreparedStatement pstmt = null; - ResultSet rs = null; - try + for (MWorkflow wf : workflows) { - pstmt = DB.prepareStatement (sql, trxName); //Bug 1568766 - rs = pstmt.executeQuery (); - while (rs.next ()) + newKey = "C" + wf.getAD_Client_ID() + "T" + wf.getAD_Table_ID(); + if (!newKey.equals(oldKey) && list.size() > 0) { - MWorkflow wf = new MWorkflow (ctx, rs, null); - newKey = "C" + wf.getAD_Client_ID() + "T" + wf.getAD_Table_ID(); - if (!newKey.equals(oldKey) && list.size() > 0) - { - MWorkflow[] wfs = new MWorkflow[list.size()]; - list.toArray(wfs); - s_cacheDocValue.put (oldKey, wfs); - list = new ArrayList(); - } - oldKey = newKey; - list.add(wf); + MWorkflow[] wfs = new MWorkflow[list.size()]; + list.toArray(new MWorkflow[list.size()]); + s_cacheDocValue.put (oldKey, wfs); + list = new ArrayList(); } - } - catch (Exception e) - { - s_log.log(Level.SEVERE, sql, e); - } - finally - { - DB.close(rs, pstmt); - rs = null; pstmt = null; + oldKey = newKey; + list.add(wf); } // Last one @@ -202,7 +193,7 @@ public class MWorkflow extends X_AD_Workflow } // Workflow /** WF Nodes */ - private ArrayList m_nodes = new ArrayList(); + private List m_nodes = new ArrayList(); /** Translated Name */ private String m_name_trl = null; @@ -221,12 +212,14 @@ public class MWorkflow extends X_AD_Workflow if (Env.isBaseLanguage(getCtx(), "AD_Workflow") || get_ID() == 0) return; String sql = "SELECT Name, Description, Help FROM AD_Workflow_Trl WHERE AD_Workflow_ID=? AND AD_Language=?"; + PreparedStatement pstmt = null; + ResultSet rs = null; try { - PreparedStatement pstmt = DB.prepareStatement(sql, null); + pstmt = DB.prepareStatement(sql, null); pstmt.setInt(1, get_ID()); pstmt.setString(2, Env.getAD_Language(getCtx())); - ResultSet rs = pstmt.executeQuery(); + rs = pstmt.executeQuery(); if (rs.next()) { m_name_trl = rs.getString(1); @@ -234,12 +227,16 @@ public class MWorkflow extends X_AD_Workflow m_help_trl = rs.getString(3); m_translated = true; } - rs.close(); - pstmt.close(); } catch (SQLException e) { - log.log(Level.SEVERE, sql, e); + //log.log(Level.SEVERE, sql, e); + throw new DBException(e, sql); + } + finally + { + DB.close(rs, pstmt); + rs = null; pstmt = null; } log.fine("Translated=" + m_translated); } // loadTrl @@ -249,21 +246,10 @@ public class MWorkflow extends X_AD_Workflow */ private void loadNodes() { - String sql = "SELECT * FROM AD_WF_Node WHERE AD_WorkFlow_ID=? AND IsActive='Y'"; - try - { - PreparedStatement pstmt = DB.prepareStatement(sql, get_TrxName()); - pstmt.setInt(1, get_ID()); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - m_nodes.add (new MWFNode (getCtx(), rs, get_TrxName())); - rs.close(); - pstmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql, e); - } + m_nodes = new Query(getCtx(), MWFNode.Table_Name, "AD_WorkFlow_ID=?", get_TrxName()) + .setParameters(new Object[]{get_ID()}) + .setOnlyActiveRecords(true) + .list(); log.fine("#" + m_nodes.size()); } // loadNodes