KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > process > ProcessInfoUtil


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Smart Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2003 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

14 package org.compiere.process;
15
16 import java.sql.*;
17 import java.util.*;
18
19 import org.compiere.util.*;
20
21 /**
22  * Process Info with Utilities
23  *
24  * @author Jorg Janke
25  * @version $Id: ProcessInfoUtil.java,v 1.8 2003/10/04 03:55:46 jjanke Exp $
26  */

27 public class ProcessInfoUtil
28 {
29     /** Logger */
30     private static Logger s_log = Logger.getCLogger (ProcessInfoUtil.class);
31
32     /*************************************************************************/
33
34     /**
35      * Query PInstance for result.
36      * Fill Summary and success in ProcessInfo
37      * @param pi process info
38      */

39     public static void setSummaryFromDB (ProcessInfo pi)
40     {
41     // s_log.debug("setSummaryFromDB - AD_PInstance_ID=" + pi.getAD_PInstance_ID());
42
int sleepTime = 2000; // 2 secomds
43
int noRetry = 5; // 10 seconds total
44
//
45
String JavaDoc SQL = "SELECT Result, ErrorMsg FROM AD_PInstance "
46             + "WHERE AD_PInstance_ID=?"
47             + " AND Result IS NOT NULL";
48
49         try
50         {
51             PreparedStatement pstmt = DB.prepareStatement (SQL, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
52             for (int noTry = 0; noTry < noRetry; noTry++)
53             {
54                 pstmt.setInt(1, pi.getAD_PInstance_ID());
55                 ResultSet rs = pstmt.executeQuery();
56                 if (rs.next())
57                 {
58                     // we have a result
59
int i = rs.getInt(1);
60                     if (i == 1)
61                     {
62                         pi.setSummary(Msg.getMsg(Env.getCtx(), "Success"));
63                     }
64                     else
65                     {
66                         pi.setSummary(Msg.getMsg(Env.getCtx(), "Failure"), true);
67                     }
68                     String JavaDoc Message = rs.getString(2);
69                     rs.close();
70                     pstmt.close();
71                     if (Message != null)
72                         pi.addSummary (" (" + Msg.parseTranslation(Env.getCtx(), Message) + ")");
73                 // log.debug("getInstanceInfo - done");
74
return;
75                 }
76
77                 rs.close();
78                 // sleep
79
try
80                 {
81                     s_log.debug("setSummaryFromDB - sleeping");
82                     Thread.sleep(sleepTime);
83                 }
84                 catch (InterruptedException JavaDoc ie)
85                 {
86                     s_log.error("setSummaryFromDB - Sleep Thread", ie);
87                 }
88             }
89             pstmt.close();
90         }
91         catch (SQLException e)
92         {
93             s_log.error("setSummaryFromDB", e);
94             pi.setSummary (e.getLocalizedMessage(), true);
95             return;
96         }
97         pi.setSummary (Msg.getMsg(Env.getCtx(), "Timeout"), true);
98     } // setSummaryFromDB
99

100     /**
101      * Set Log of Process.
102      * @param pi process info
103      */

104     public static void setLogFromDB (ProcessInfo pi)
105     {
106     // s_log.debug("setLogFromDB - AD_PInstance_ID=" + pi.getAD_PInstance_ID());
107
String JavaDoc sql = "SELECT Log_ID, P_ID, P_Date, P_Number, P_Msg "
108             + "FROM AD_PInstance_Log "
109             + "WHERE AD_PInstance_ID=? "
110             + "ORDER BY Log_ID";
111
112         try
113         {
114             PreparedStatement pstmt = DB.prepareStatement(sql);
115             pstmt.setInt(1, pi.getAD_PInstance_ID());
116             ResultSet rs = pstmt.executeQuery();
117             while (rs.next())
118             // int Log_ID, int P_ID, Timestamp P_Date, BigDecimal P_Number, String P_Msg
119
pi.addLog (rs.getInt(1), rs.getInt(2), rs.getTimestamp(3), rs.getBigDecimal(4), rs.getString(5));
120             rs.close();
121             pstmt.close();
122         }
123         catch (SQLException e)
124         {
125             s_log.error("setLogFromDB", e);
126         }
127     } // getLogFromDB
128

129     /**
130      * Create Process Log
131      * @param pi process info
132      */

133     public static void saveLogToDB (ProcessInfo pi)
134     {
135         ProcessInfoLog[] logs = pi.getLogs();
136         if (logs == null || logs.length == 0)
137         {
138     // s_log.debug("saveLogToDB - No Log");
139
return;
140         }
141         if (pi.getAD_PInstance_ID() == 0)
142         {
143             s_log.warn("saveLogToDB - not saved - AD_PInstance_ID==0");
144             return;
145         }
146         for (int i = 0; i < logs.length; i++)
147         {
148             StringBuffer JavaDoc sql = new StringBuffer JavaDoc ("INSERT INTO AD_PInstance_Log "
149                 + "(AD_PInstance_ID, Log_ID, P_Date, P_ID, P_Number, P_Msg)"
150                 + " VALUES (");
151             sql.append(pi.getAD_PInstance_ID()).append(",")
152                 .append(logs[i].getLog_ID()).append(",");
153             if (logs[i].getP_Date() == null)
154                 sql.append("NULL,");
155             else
156                 sql.append(DB.TO_DATE(logs[i].getP_Date(), false)).append(",");
157             if (logs[i].getP_ID() == 0)
158                 sql.append("NULL,");
159             else
160                 sql.append(logs[i].getP_ID()).append(",");
161             if (logs[i].getP_Number() == null)
162                 sql.append("NULL,");
163             else
164                 sql.append(logs[i].getP_Number()).append(",");
165             if (logs[i].getP_Msg() == null)
166                 sql.append("NULL)");
167             else
168                 sql.append(DB.TO_STRING(logs[i].getP_Msg(),2000)).append(")");
169             //
170
DB.executeUpdate(sql.toString());
171         }
172         pi.setLogList(null); // otherwise log entries are twice
173
} // saveLogToDB
174

175     /**
176      * Set Parameter of Process (and Client/User)
177      * @param pi Process Info
178      */

179     public static void setParameterFromDB (ProcessInfo pi)
180     {
181         ArrayList list = new ArrayList();
182         String JavaDoc sql = "SELECT p.ParameterName," // 1
183
+ " p.P_String,p.P_String_To, p.P_Number,p.P_Number_To," // 2/3 4/5
184
+ " p.P_Date,p.P_Date_To, p.Info,p.Info_To, " // 6/7 8/9
185
+ " i.AD_Client_ID, i.AD_Org_ID, i.AD_User_ID " // 10..12
186
+ "FROM AD_PInstance_Para p"
187             + " INNER JOIN AD_PInstance i ON (p.AD_PInstance_ID=i.AD_PInstance_ID) "
188             + "WHERE p.AD_PInstance_ID=? "
189             + "ORDER BY p.SeqNo";
190         try
191         {
192             PreparedStatement pstmt = DB.prepareStatement(sql);
193             pstmt.setInt(1, pi.getAD_PInstance_ID());
194             ResultSet rs = pstmt.executeQuery();
195             while (rs.next())
196             {
197                 String JavaDoc ParameterName = rs.getString(1);
198                 Object JavaDoc Parameter = rs.getString(2);
199                 Object JavaDoc Parameter_To = rs.getString(3);
200                 if (Parameter == null)
201                 {
202                     Parameter = rs.getBigDecimal(4);
203                     Parameter_To = rs.getBigDecimal(5);
204                 }
205                 if (Parameter == null)
206                 {
207                     Parameter = rs.getTimestamp(6);
208                     Parameter_To = rs.getTimestamp(7);
209                 }
210                 String JavaDoc Info = rs.getString(8);
211                 String JavaDoc Info_To = rs.getString(9);
212                 //
213
list.add (new ProcessInfoParameter(ParameterName, Parameter, Parameter_To, Info, Info_To));
214                 //
215
if (pi.getAD_Client_ID() == null)
216                     pi.setAD_Client_ID (rs.getInt(10));
217                 if (pi.getAD_User_ID() == null)
218                     pi.setAD_User_ID(rs.getInt(12));
219             }
220             rs.close();
221             pstmt.close();
222         }
223         catch (SQLException e)
224         {
225             s_log.error("getParameter", e);
226         }
227         //
228
ProcessInfoParameter[] pars = new ProcessInfoParameter[list.size()];
229         list.toArray(pars);
230         pi.setParameter(pars);
231     } // setParameterFromDB
232

233
234 } // ProcessInfoUtil
235
Popular Tags