KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > hero > client > manager > MListener


1 package hero.client.manager;
2
3 /*
4 *
5 * MListener.java -
6 * Copyright (C) 2003 Ecoo Team
7 * valdes@loria.fr
8 *
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public License
12 * as published by the Free Software Foundation; either version 2
13 * of the License, or (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 */

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 JavaDoc;
31 import java.util.Collection JavaDoc;
32 import java.util.Hashtable JavaDoc;
33
34 import javax.jms.Message JavaDoc;
35 import javax.jms.MessageListener JavaDoc;
36
37 public class MListener
38     implements MessageListener JavaDoc, Constants.Nd, EventConstants {
39
40     ArrayList JavaDoc projectListener = new ArrayList JavaDoc();
41     ArrayList JavaDoc todoListener = new ArrayList JavaDoc();
42     ArrayList JavaDoc activityListener = new ArrayList JavaDoc();
43
44     Collection JavaDoc projectele;
45     Collection JavaDoc todoele;
46     Collection JavaDoc activityele;
47
48     BonitaClient soapclient;
49     String JavaDoc actualproject = "nullproject";
50     String JavaDoc userName = null;
51
52     private static MListener mjms = null; // Singleton pattern
53

54     public MListener(String JavaDoc userName, String JavaDoc userPassword, String JavaDoc 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 JavaDoc e) {
60             e.printStackTrace();
61         }
62     }
63     public static MListener getInstance(String JavaDoc userName, String JavaDoc userPassword, String JavaDoc 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 JavaDoc subs) throws Exception JavaDoc {
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 JavaDoc message) {
103         try {
104             Hashtable JavaDoc evt = JMSServicesClient.getEvt(message);
105             
106             String JavaDoc type = (String JavaDoc) 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 JavaDoc todoele = soapclient.getToDoList((String JavaDoc) evt.get(PROJECTNAME));
114                 Collection JavaDoc activityele = soapclient.getActivityList((String JavaDoc) 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 JavaDoc) evt.get(PROJECTNAME));
120
121                     for (i = 0; i < activityListener.size(); i++)
122                         ((JActivityList) activityListener.get(i)).changeEvent(activityele.toArray(),(String JavaDoc) evt.get(PROJECTNAME));
123
124                 } catch (Exception JavaDoc e) {
125                     e.printStackTrace();
126                 }
127             } else if (
128                 (type.equals(DELETENODE)
129                     && ((new Integer JavaDoc((String JavaDoc) evt.get(NODESTATE))).intValue()== READY
130                         || (new Integer JavaDoc((String JavaDoc) evt.get(NODESTATE))).intValue()== ANTICIPABLE))
131                     || type.equals(READYINITIAL)
132                     || type.equals(ADDEDGE)
133                     || type.equals(DELETEEDGE)
134                     || type.equals(SETUSERROLE)) {
135                 Collection JavaDoc todoele = soapclient.getToDoList((String JavaDoc) 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 JavaDoc) evt.get(PROJECTNAME));
143                     }
144
145                 } catch (Exception JavaDoc exmu) {
146                     exmu.printStackTrace();
147                 }
148
149             } else if (type.equals(ADDNODE)) {
150                 Collection JavaDoc todoele = soapclient.getToDoList((String JavaDoc) 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 JavaDoc) evt.get(PROJECTNAME));
158                     }
159
160                 } catch (Exception JavaDoc 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 JavaDoc) evt.get(USERNAME)).equals(userName)) {
168                             ((JProjectList) projectListener.get(i)).addElement((String JavaDoc) evt.get(PROJECTNAME));
169                             this.subscription(" projectName = '"+ (String JavaDoc) evt.get(PROJECTNAME)+ "'");
170                         }
171                     }
172
173                 } catch (Exception JavaDoc exadduser) {
174                     exadduser.printStackTrace();
175                 }
176             } else if (type.equals(DELETEPROJECT)) {
177                 try {
178                     int i = 0;
179                     // Remove project from the project list and dispose the frame if exists.
180
for (i = 0; i < projectListener.size(); i++) {
181                         ((JProjectList) projectListener.get(i)).changeEvent(new Object JavaDoc[]{},(String JavaDoc) 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 JavaDoc[]{},(String JavaDoc) evt.get(PROJECTNAME));
187                         ((JActivityList) activityListener.get(i)).changeEvent(new Object JavaDoc[]{},(String JavaDoc) evt.get(PROJECTNAME));
188                     }
189                 } catch (Exception JavaDoc exadduser) {
190                     exadduser.printStackTrace();
191                 }
192             }
193         } catch (Exception JavaDoc jmse) {
194             jmse.printStackTrace();
195         }
196
197     }
198 }
199
Popular Tags