1 17 package org.openbravo.erpCommon.ad_background; 18 19 import org.openbravo.erpCommon.utility.SequenceIdData; 20 import org.openbravo.erpCommon.businessUtility.EMail; 21 import org.openbravo.erpCommon.utility.Utility; 22 23 24 public class PeriodicAlert implements BackgroundProcess { 25 public String batchSize="50"; 26 static int counter = 0; 28 29 private void processAlert(PeriodicAlertData alertRule, PeriodicBackground periodicBG) throws Exception { 30 periodicBG.addLog("processing rule "+alertRule.name); 31 PeriodicAlertData [] alert = null; 32 try { 33 alert = PeriodicAlertData.selectAlert(periodicBG.conn, alertRule.sql); 34 } catch (Exception ex) { 35 periodicBG.addLog("Error processing: "+ex.toString()); 36 return; 37 } 38 if (alert!=null && alert.length!=0) { 40 int insertions = 0; 41 String msg = ""; 42 for (int i=0; i<alert.length; i++){ 43 if (PeriodicAlertData.existsReference(periodicBG.conn, alertRule.adAlertruleId, alert[i].referencekeyId).equals("0")) { 44 String adAlertId = SequenceIdData.getSequence(periodicBG.conn, "AD_Alert", alert[i].adClientId); 45 periodicBG.addLog("inserting alert "+adAlertId+" org:"+alert[i].adOrgId+" client:"+alert[i].adClientId+" reference key:"+alert[i].referencekeyId+" created"+alert[i].created); 46 PeriodicAlertData.InsertAlert(periodicBG.conn, adAlertId, alert[i].adClientId, alert[i].adOrgId, 47 alert[i].created, alert[i].createdby, 48 alertRule.adAlertruleId, alert[i].recordId, alert[i].referencekeyId, 49 alert[i].description, alert[i].adUserId, alert[i].adRoleId); 50 51 insertions ++; 53 msg += "\n\nAlert: "+alert[i].description+"\nRecord: "+alert[i].recordId; 54 } 55 } 56 periodicBG.addLog("inserted alerts "+insertions); 57 if (insertions>0) { 58 PeriodicAlertData[] mail =PeriodicAlertData.prepareMails(periodicBG.conn, alertRule.adAlertruleId); 60 if (mail!=null) { 61 for (int i=0; i<mail.length; i++) { 62 String head = Utility.messageBD(periodicBG.conn, "AlertMailHead", mail[i].adLanguage)+"\n"; 63 EMail email = new EMail(null, mail[i].smtphost, mail[i].mailfrom, mail[i].mailto, "[OB Alert] "+alertRule.name, head+msg); 64 email.setEMailUser(mail[i].requestuser, mail[i].requestuserpw); 65 if("OK".equals(email.send())) periodicBG.addLog("mail sent ok"); 66 else periodicBG.addLog("error sending mail"); 67 } 68 } 69 } 70 } 71 72 try { 74 Integer count = PeriodicAlertData.updateAlert(periodicBG.conn, alertRule.adAlertruleId, alertRule.sql); 75 periodicBG.addLog("updated alerts: "+count); 76 } catch (Exception ex) { 77 periodicBG.addLog("Error updating: "+ex.toString()); 78 } 79 80 } 81 82 public void processPL(PeriodicBackground periodicBG, boolean directProcess) throws Exception { 83 String adNoteId = ""; 84 counter ++; 85 periodicBG.addLog("Starting Alert Backgrouond Process. Loop "+counter); 86 87 PeriodicAlertData [] alertRule = PeriodicAlertData.selectSQL(periodicBG.conn); 88 if (alertRule!=null && alertRule.length!=0) { 90 for (int i=0; i<alertRule.length; i++) { 91 processAlert(alertRule[i], periodicBG); 93 94 periodicBG.doPause(); 95 } 96 } 97 162 } 163 } 164 | Popular Tags |