1 package hero.client.manager; 2 3 24 25 import hero.interfaces.Constants; 26 import hero.util.EventConstants; 27 import hero.client.events.JMSServicesClient; 28 import hero.util.BonitaClient; 29 30 import java.util.ArrayList ; 31 import java.util.Collection ; 32 import java.util.Hashtable ; 33 34 import javax.jms.Message ; 35 import javax.jms.MessageListener ; 36 37 public class MListener 38 implements MessageListener , Constants.Nd, EventConstants { 39 40 ArrayList projectListener = new ArrayList (); 41 ArrayList todoListener = new ArrayList (); 42 ArrayList activityListener = new ArrayList (); 43 44 Collection projectele; 45 Collection todoele; 46 Collection activityele; 47 48 BonitaClient soapclient; 49 String actualproject = "nullproject"; 50 String userName = null; 51 52 private static MListener mjms = null; 54 public MListener(String userName, String userPassword, String host, int port) { 55 try { 56 soapclient = new BonitaClient(host, port, "/bonita_ws/services/"); 57 soapclient.login(userName, userPassword); 58 this.userName = userName; 59 } catch (Exception e) { 60 e.printStackTrace(); 61 } 62 } 63 public static MListener getInstance(String userName, String userPassword, String host, int port) { 64 if (mjms == null) { 65 mjms = new MListener(userName, userPassword, host, port); 66 } 67 return mjms; 68 } 69 70 public void subscription(String subs) throws Exception { 71 JMSServicesClient jms = JMSServicesClient.getInstance(); 72 jms.createSubscription(this, subs); 73 } 74 75 public void addEventProjectListener(JProjectList list) { 76 projectListener.add(list); 77 } 78 79 public void removeEventProjectListener(JProjectList list) { 80 int index = projectListener.indexOf(list); 81 projectListener.remove(index); 82 } 83 84 public void addEventTodoListener(JTodoList list) { 85 todoListener.add(list); 86 } 87 88 public void removeEventTodoListener(JTodoList list) { 89 int index = todoListener.indexOf(list); 90 todoListener.remove(index); 91 } 92 93 public void addEventActivityListener(JActivityList list) { 94 activityListener.add(list); 95 } 96 97 public void removeEventActivityListener(JActivityList list) { 98 int index = activityListener.indexOf(list); 99 activityListener.remove(index); 100 } 101 102 public void onMessage(Message message) { 103 try { 104 Hashtable evt = JMSServicesClient.getEvt(message); 105 106 String type = (String ) evt.get(EVENT); 107 if (type.equals(EventConstants.START) 108 || type.equals(EventConstants.TERMINATED) 109 || type.equals(EventConstants.CANCELED) 110 || type.equals(EventConstants.ANTICIPATING) 111 || type.equals(CHANGEROLE)) { 112 113 Collection todoele = soapclient.getToDoList((String ) evt.get(PROJECTNAME)); 114 Collection activityele = soapclient.getActivityList((String ) evt.get(PROJECTNAME)); 115 116 try { 117 int i = 0; 118 for (i = 0; i < todoListener.size(); i++) 119 ((JTodoList) todoListener.get(i)).changeEvent(todoele.toArray(),(String ) evt.get(PROJECTNAME)); 120 121 for (i = 0; i < activityListener.size(); i++) 122 ((JActivityList) activityListener.get(i)).changeEvent(activityele.toArray(),(String ) evt.get(PROJECTNAME)); 123 124 } catch (Exception e) { 125 e.printStackTrace(); 126 } 127 } else if ( 128 (type.equals(DELETENODE) 129 && ((new Integer ((String ) evt.get(NODESTATE))).intValue()== READY 130 || (new Integer ((String ) evt.get(NODESTATE))).intValue()== ANTICIPABLE)) 131 || type.equals(READYINITIAL) 132 || type.equals(ADDEDGE) 133 || type.equals(DELETEEDGE) 134 || type.equals(SETUSERROLE)) { 135 Collection todoele = soapclient.getToDoList((String ) evt.get(PROJECTNAME)); 136 137 try { 138 int i = 0; 139 for (i = 0; i < todoListener.size(); i++) 140 { 141 if (((JTodoList) todoListener.get(i)).isChanged(todoele.toArray())) 142 ((JTodoList) todoListener.get(i)).changeEvent(todoele.toArray(),(String ) evt.get(PROJECTNAME)); 143 } 144 145 } catch (Exception exmu) { 146 exmu.printStackTrace(); 147 } 148 149 } else if (type.equals(ADDNODE)) { 150 Collection todoele = soapclient.getToDoList((String ) evt.get(PROJECTNAME)); 151 152 try { 153 int i = 0; 154 for (i = 0; i < todoListener.size(); i++) 155 { 156 if (((JTodoList) todoListener.get(i)).isChanged(todoele.toArray())) 157 ((JTodoList) todoListener.get(i)).changeEvent(todoele.toArray(),(String ) evt.get(PROJECTNAME)); 158 } 159 160 } catch (Exception exaddnode) { 161 exaddnode.printStackTrace(); 162 } 163 } else if (type.equals(ADDUSERPROJECT)) { 164 try { 165 int i = 0; 166 for (i = 0; i < projectListener.size(); i++) { 167 if (((String ) evt.get(USERNAME)).equals(userName)) { 168 ((JProjectList) projectListener.get(i)).addElement((String ) evt.get(PROJECTNAME)); 169 this.subscription(" projectName = '"+ (String ) evt.get(PROJECTNAME)+ "'"); 170 } 171 } 172 173 } catch (Exception exadduser) { 174 exadduser.printStackTrace(); 175 } 176 } else if (type.equals(DELETEPROJECT)) { 177 try { 178 int i = 0; 179 for (i = 0; i < projectListener.size(); i++) { 181 ((JProjectList) projectListener.get(i)).changeEvent(new Object []{},(String ) evt.get(PROJECTNAME)); 182 hero.client.grapheditor.Frame projectFrame = (hero.client.grapheditor.Frame)((JProjectList) projectListener.get(i)).projects.get(evt.get(PROJECTNAME)); 183 if (projectFrame != null) 184 projectFrame.dispose(); 185 ((JProjectList) projectListener.get(i)).projects.remove(evt.get(PROJECTNAME)); 186 ((JTodoList) todoListener.get(i)).changeEvent(new Object []{},(String ) evt.get(PROJECTNAME)); 187 ((JActivityList) activityListener.get(i)).changeEvent(new Object []{},(String ) evt.get(PROJECTNAME)); 188 } 189 } catch (Exception exadduser) { 190 exadduser.printStackTrace(); 191 } 192 } 193 } catch (Exception jmse) { 194 jmse.printStackTrace(); 195 } 196 197 } 198 } 199 | Popular Tags |