1 14 package org.compiere.process; 15 16 import java.sql.*; 17 import java.util.*; 18 19 import org.compiere.util.*; 20 21 27 public class ProcessInfoUtil 28 { 29 30 private static Logger s_log = Logger.getCLogger (ProcessInfoUtil.class); 31 32 33 34 39 public static void setSummaryFromDB (ProcessInfo pi) 40 { 41 int sleepTime = 2000; int noRetry = 5; String 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 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 Message = rs.getString(2); 69 rs.close(); 70 pstmt.close(); 71 if (Message != null) 72 pi.addSummary (" (" + Msg.parseTranslation(Env.getCtx(), Message) + ")"); 73 return; 75 } 76 77 rs.close(); 78 try 80 { 81 s_log.debug("setSummaryFromDB - sleeping"); 82 Thread.sleep(sleepTime); 83 } 84 catch (InterruptedException 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 } 100 104 public static void setLogFromDB (ProcessInfo pi) 105 { 106 String 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 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 } 129 133 public static void saveLogToDB (ProcessInfo pi) 134 { 135 ProcessInfoLog[] logs = pi.getLogs(); 136 if (logs == null || logs.length == 0) 137 { 138 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 sql = new StringBuffer ("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 DB.executeUpdate(sql.toString()); 171 } 172 pi.setLogList(null); } 175 179 public static void setParameterFromDB (ProcessInfo pi) 180 { 181 ArrayList list = new ArrayList(); 182 String sql = "SELECT p.ParameterName," + " p.P_String,p.P_String_To, p.P_Number,p.P_Number_To," + " p.P_Date,p.P_Date_To, p.Info,p.Info_To, " + " i.AD_Client_ID, i.AD_Org_ID, i.AD_User_ID " + "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 ParameterName = rs.getString(1); 198 Object Parameter = rs.getString(2); 199 Object 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 Info = rs.getString(8); 211 String Info_To = rs.getString(9); 212 list.add (new ProcessInfoParameter(ParameterName, Parameter, Parameter_To, Info, Info_To)); 214 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 ProcessInfoParameter[] pars = new ProcessInfoParameter[list.size()]; 229 list.toArray(pars); 230 pi.setParameter(pars); 231 } 233 234 } | Popular Tags |