KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > finalist > jaggenerator > modules > Session


1 /* Copyright (C) 2003 Finalist IT Group
2  *
3  * This file is part of JAG - the Java J2EE Application Generator
4  *
5  * JAG is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  * JAG is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  * You should have received a copy of the GNU General Public License
14  * along with JAG; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  */

17
18 package com.finalist.jaggenerator.modules;
19
20 import com.finalist.jaggenerator.*;
21 import com.finalist.jag.util.TemplateString;
22 import java.awt.event.ActionListener JavaDoc;
23
24 import java.util.*;
25 import javax.swing.*;
26 import javax.swing.tree.*;
27 import javax.xml.parsers.*;
28
29 import org.w3c.dom.*;
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32
33 /**
34  *
35  * @author hillie
36  */

37 public class Session extends DefaultMutableTreeNode implements JagBean {
38
39    private DefaultListModel listModel = new DefaultListModel();
40    private ArrayList relationRefs = new ArrayList();
41 // private ArrayList businessMethods = new ArrayList();
42
static Log log = LogFactory.getLog(JagGenerator.class);
43
44
45    /** Creates new form BeanForm */
46    public Session(String JavaDoc rootPackage) {
47       initComponents();
48       refList.setModel(listModel);
49       rootPackageText.setText(rootPackage + ".session");
50    }
51
52    public Session(Element el) {
53       initComponents();
54       refList.setModel(listModel);
55       NodeList nl = el.getElementsByTagName("module-data");
56       for (int i = 0; i < nl.getLength(); i++) {
57          Element child = (Element) nl.item(i);
58          String JavaDoc attName = child.getAttribute("name");
59          try {
60             String JavaDoc value = child.getFirstChild().getNodeValue();
61             if (value != null) {
62                if (attName.equalsIgnoreCase("name")) {
63                   nameText.setText(value);
64                } else if (attName.equalsIgnoreCase("root-package")) {
65                   rootPackageText.setText(value);
66                } else if (attName.equalsIgnoreCase("description")) {
67                   descriptionText.setText(value);
68                } else if (attName.equalsIgnoreCase("relation-ref")) {
69                   NodeList subList = child.getElementsByTagName("module-data");
70                   for (int j = 0; j < subList.getLength(); j++) {
71                      String JavaDoc entityName = (subList.item(j)).getFirstChild().getNodeValue();
72                      relationRefs.add(entityName);
73                   }
74                }
75             }
76          } catch (NullPointerException JavaDoc e) {
77          }
78       }
79       nl = el.getElementsByTagName("ref-name");
80       if (nl.getLength() > 0) {
81          Node node = nl.item(0).getFirstChild();
82          if (node != null) refNameText.setText(node.getNodeValue());
83       }
84       nl = el.getElementsByTagName("ref");
85       for (int i = 0; i < nl.getLength(); i++) {
86          Node node = nl.item(i).getFirstChild();
87          addRef(node.getNodeValue());
88       }
89       
90       nl = el.getElementsByTagName("business-methods");
91
92       for (int i = 0; i < nl.getLength(); i++) {
93          Element child = (Element) nl.item(i);
94          NodeList bm = child.getElementsByTagName("business-method");
95          // Now, we got the list with business methods..
96
log.debug("Number of business methods: "+ bm.getLength());
97          for (int j=0; j < bm.getLength(); j++) {
98             Element bmNode = (Element) bm.item(j);
99             BusinessMethod newBusinessMethod = new BusinessMethod(this, bmNode);
100             add(newBusinessMethod);
101          }
102       }
103    }
104
105    public ArrayList getBusinessMethods() {
106       ArrayList refs = new ArrayList();
107       for (int i = 0; i < getChildCount(); i++) {
108          JagBean child = (JagBean) getChildAt(i);
109          if (child instanceof BusinessMethod) {
110             refs.add(child);
111          }
112       }
113       return refs;
114    }
115
116    /** set Business methods. */
117    public void setBusinessMethods(ArrayList businessMethods) {
118       for (int i = 0; i < businessMethods.size(); i++) {
119          BusinessMethod child = (BusinessMethod) businessMethods.get(i);
120          add(child);
121       }
122    }
123
124    /**
125     * check if there are any business methods defines in this Session.
126     * @return true if this session has any business methods.
127     */

128    public Boolean JavaDoc hasBusinessMethods() {
129       if (getBusinessMethods().size() > 0) {
130          return new Boolean JavaDoc(true);
131       } else {
132          return new Boolean JavaDoc(false);
133       }
134    }
135
136    /**
137     * Gets all entities 'covered' by this session bean.
138     * @return a list of the entity beans' reference names (String).
139     */

140    public ArrayList getEntityRefs() {
141       ArrayList entityRefs = new ArrayList();
142       if (listModel != null) {
143          for (int i = 0; i < listModel.size(); i++) {
144             entityRefs.add(listModel.get(i));
145          }
146       }
147       return entityRefs;
148    }
149
150
151    /**
152     * Sets all entities 'covered' by this session bean.
153     */

154    public void setEntityRefs(ArrayList refs) {
155       if (refs != null) {
156          for (int i = 0; i < refs.size(); i++) {
157             addRef((String JavaDoc) refs.get(i));
158          }
159       }
160    }
161
162    /**
163     * Gets all entities 'covered' by this session bean, excluding those that
164     * were only added to support a container-managed relation.
165     * @return a list of the entity beans' reference names (String).
166     */

167    public ArrayList getNonRelationEntityRefs() {
168       ArrayList entityRefs = new ArrayList();
169       if (listModel != null) {
170          for (int i = 0; i < listModel.size(); i++) {
171             String JavaDoc entity = (String JavaDoc) listModel.get(i);
172             if (!relationRefs.contains(entity)) {
173                entityRefs.add(entity);
174             }
175          }
176       }
177       return entityRefs;
178    }
179    public String JavaDoc toString() {
180       return "Service - " + getRefName();
181    }
182
183    public JPanel getPanel() {
184       return panel;
185    }
186
187    public void getXML(Element el) throws ParserConfigurationException {
188       Document doc = el.getOwnerDocument();
189       Element module = doc.createElement("module");
190       module.setAttribute("name", "session");
191
192       Element name = doc.createElement("module-data");
193       name.setAttribute("name", "name");
194       if (nameText.getText() != null) {
195         name.appendChild(doc.createTextNode(nameText.getText()));
196       }
197       module.appendChild(name);
198
199       Element description = doc.createElement("module-data");
200       description.setAttribute("name", "description");
201       if (descriptionText.getText() != null) {
202         description.appendChild(doc.createTextNode(descriptionText.getText()));
203       }
204       module.appendChild(description);
205
206       Element rootPackage = doc.createElement("module-data");
207       rootPackage.setAttribute("name", "root-package");
208       if (rootPackageText.getText() != null) {
209         rootPackage.appendChild(doc.createTextNode(rootPackageText.getText()));
210       }
211       module.appendChild(rootPackage);
212
213       Element refName = doc.createElement("ref-name");
214       if (refNameText.getText() != null) {
215         refName.appendChild(doc.createTextNode(refNameText.getText()));
216          module.appendChild(refName);
217
218       } else {
219          // Only add in case of references..
220
}
221
222       Enumeration refs = listModel.elements();
223       if (refs != null) {
224          while (refs.hasMoreElements()) {
225             Element refNode = doc.createElement("ref");
226             String JavaDoc ref = (String JavaDoc) refs.nextElement();
227             if (ref != null) {
228                refNode.appendChild(doc.createTextNode(ref));
229             }
230             module.appendChild(refNode);
231          }
232       }
233
234       // Create the business methods.
235
if (getChildCount() > 0) {
236          Element businessMethods = doc.createElement("business-methods");
237          for (int i= 0; i< getChildCount(); i++) {
238             BusinessMethod bm = (BusinessMethod) getChildAt(i);
239             bm.getXML(businessMethods);
240          }
241          module.appendChild(businessMethods);
242       }
243
244       if (!relationRefs.isEmpty()) {
245          Iterator relRefs = relationRefs.iterator();
246          while (relRefs.hasNext()) {
247             Element refNode = doc.createElement("module-data");
248             refNode.setAttribute("name", "relation-ref");
249             Element child = doc.createElement("module-data");
250             child.setAttribute("name", "entity-name");
251             child.appendChild(doc.createTextNode((String JavaDoc) relRefs.next()));
252             refNode.appendChild(child);
253             module.appendChild(refNode);
254          }
255       }
256
257       el.appendChild(module);
258    }
259
260    public String JavaDoc getRootPath() {
261       return getRootPackage().toString().replace('.', '/');
262    }
263
264    public TemplateString getName() {
265       return new TemplateString(nameText.getText());
266    }
267
268     public TemplateString getUpperCaseName() {
269        return new TemplateString(nameText.getText().toUpperCase());
270     }
271
272    public void setName(String JavaDoc text) {
273       nameText.setText(text);
274    }
275
276    public TemplateString getDescription() {
277       return new TemplateString(descriptionText.getText());
278    }
279    
280    public void setDescription(String JavaDoc text) {
281       descriptionText.setText(text);
282    }
283
284    
285    public TemplateString getRootPackage() {
286       return new TemplateString(rootPackageText.getText());
287    }
288
289    public void setRootPackage(String JavaDoc text) {
290       rootPackageText.setText(text);
291    }
292
293
294    /**
295     * Returns a List of all Entities in this Session, but not those that are only
296     * a 'relation reference'.
297     * @return
298     */

299    public List getEntities() {
300       List entities = getEntitiesAndReferences();
301       entities.removeAll(getReferencedEntities());
302       return entities;
303    }
304
305    public List getReferencedEntities() {
306       ArrayList entities = new ArrayList();
307       Iterator relRefs = relationRefs.iterator();
308       while (relRefs.hasNext()) {
309          String JavaDoc ref = (String JavaDoc) relRefs.next();
310          Entity entity = JagGenerator.getEntityByRefName(ref);
311          entities.add(entity);
312       }
313       return entities;
314    }
315
316    public List getEntitiesAndReferences() {
317       ArrayList entities = new ArrayList();
318       Enumeration refs = listModel.elements();
319       while (refs.hasMoreElements()) {
320          String JavaDoc ref = (String JavaDoc) refs.nextElement();
321          Entity entity = JagGenerator.getEntityByRefName(ref);
322          entities.add(entity);
323       }
324       return entities;
325    }
326    /**
327     *
328     * @return
329     */

330    public String JavaDoc getRefName() {
331       return refNameText.getText();
332    }
333
334    /**
335     *
336     * @param text
337     */

338    public void setRefName(String JavaDoc text) {
339       refNameText.setText(text);
340    }
341
342    /**
343     *
344      * @param ref
345     */

346    public void addRef(String JavaDoc ref) {
347       listModel.addElement(ref);
348    }
349
350    public void addRelationRef(String JavaDoc entity) {
351       addRef(entity);
352       relationRefs.add(entity);
353    }
354
355
356    /** This method is called from within the constructor to
357     * initialize the form.
358     * WARNING: Do NOT modify this code. The content of this method is
359     * always regenerated by the Form Editor.
360     */

361     private void initComponents() {//GEN-BEGIN:initComponents
362
panel = new javax.swing.JPanel JavaDoc();
363         nameLabel = new javax.swing.JLabel JavaDoc();
364         desciptionLabel = new javax.swing.JLabel JavaDoc();
365         rootPackageLabel = new javax.swing.JLabel JavaDoc();
366         refNameLabel = new javax.swing.JLabel JavaDoc();
367         nameText = new javax.swing.JTextField JavaDoc();
368         descriptionText = new javax.swing.JTextField JavaDoc();
369         rootPackageText = new javax.swing.JTextField JavaDoc();
370         refNameText = new javax.swing.JTextField JavaDoc();
371         refsLabel = new javax.swing.JLabel JavaDoc();
372         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
373         refList = new javax.swing.JList JavaDoc();
374         buttonPanel = new javax.swing.JPanel JavaDoc();
375         removeButton = new javax.swing.JButton JavaDoc();
376         addButton = new javax.swing.JButton JavaDoc();
377
378         panel.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
379
380         nameLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
381         nameLabel.setText("Name: ");
382         panel.add(nameLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 10, 90, -1));
383
384         desciptionLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
385         desciptionLabel.setText("Description: ");
386         panel.add(desciptionLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 40, 90, -1));
387
388         rootPackageLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
389         rootPackageLabel.setText("Root-package: ");
390         panel.add(rootPackageLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 70, 90, -1));
391
392         refNameLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
393         refNameLabel.setText("Ref-name: ");
394         panel.add(refNameLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 100, 90, -1));
395
396         nameText.setAutoscrolls(false);
397         nameText.addFocusListener(new java.awt.event.FocusAdapter JavaDoc() {
398             public void focusLost(java.awt.event.FocusEvent JavaDoc evt) {
399                 nameTextFocusLost(evt);
400             }
401         });
402
403         panel.add(nameText, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 10, 260, -1));
404
405         descriptionText.addFocusListener(new java.awt.event.FocusAdapter JavaDoc() {
406             public void focusLost(java.awt.event.FocusEvent JavaDoc evt) {
407                 descriptionTextFocusLost(evt);
408             }
409         });
410
411         panel.add(descriptionText, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 40, 260, -1));
412
413         rootPackageText.addFocusListener(new java.awt.event.FocusAdapter JavaDoc() {
414             public void focusLost(java.awt.event.FocusEvent JavaDoc evt) {
415                 rootPackageTextFocusLost(evt);
416             }
417         });
418
419         panel.add(rootPackageText, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 70, 260, -1));
420
421         refNameText.addFocusListener(new java.awt.event.FocusAdapter JavaDoc() {
422             public void focusLost(java.awt.event.FocusEvent JavaDoc evt) {
423                 refNameTextFocusLost(evt);
424             }
425         });
426
427         panel.add(refNameText, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 100, 260, -1));
428
429         refsLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
430         refsLabel.setText("Refs: ");
431         panel.add(refsLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 130, 90, -1));
432
433         refList.setBorder(new javax.swing.border.EtchedBorder JavaDoc());
434         jScrollPane1.setViewportView(refList);
435
436         panel.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 130, 180, 170));
437
438         buttonPanel.setLayout(new java.awt.BorderLayout JavaDoc());
439
440         removeButton.setText("Remove");
441         removeButton.setMaximumSize(new java.awt.Dimension JavaDoc(56, 26));
442         removeButton.setMinimumSize(new java.awt.Dimension JavaDoc(56, 26));
443         removeButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
444             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
445                 removeButtonActionPerformed(evt);
446             }
447         });
448
449         buttonPanel.add(removeButton, java.awt.BorderLayout.SOUTH);
450
451         addButton.setText("Add");
452         addButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
453             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
454                 addButtonActionPerformed(evt);
455             }
456         });
457
458         buttonPanel.add(addButton, java.awt.BorderLayout.CENTER);
459
460         panel.add(buttonPanel, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 160, -1, -1));
461
462     }//GEN-END:initComponents
463

464    private void refNameTextFocusLost(java.awt.event.FocusEvent JavaDoc evt) {//GEN-FIRST:event_refNameTextFocusLost
465
JagGenerator.stateChanged(false);
466    }//GEN-LAST:event_refNameTextFocusLost
467

468    private void rootPackageTextFocusLost(java.awt.event.FocusEvent JavaDoc evt) {//GEN-FIRST:event_rootPackageTextFocusLost
469
JagGenerator.stateChanged(false);
470    }//GEN-LAST:event_rootPackageTextFocusLost
471

472    private void descriptionTextFocusLost(java.awt.event.FocusEvent JavaDoc evt) {//GEN-FIRST:event_descriptionTextFocusLost
473
JagGenerator.stateChanged(false);
474    }//GEN-LAST:event_descriptionTextFocusLost
475

476    private void nameTextFocusLost(java.awt.event.FocusEvent JavaDoc evt) {//GEN-FIRST:event_nameTextFocusLost
477
// Add your handling code here:
478
if ((nameText.getText() != null) && (nameText.getText().length() > 0)) {
479          nameText.setText(Utils.initCap(nameText.getText()));
480          this.descriptionText.setText(Utils.initCap(nameText.getText()));
481          this.refNameText.setText(Utils.initCap(nameText.getText()));
482       }
483       JagGenerator.stateChanged(true);
484    }//GEN-LAST:event_nameTextFocusLost
485

486
487    private void addButtonActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_addButtonActionPerformed
488
if (((Root) getRoot()).getRefs().isEmpty()) {
489          JOptionPane.showMessageDialog(getPanel(),
490                "There are no entity beans specified in the current application, \n" +
491                "so it is not possible to add anything to this service bean yet.", "No entity beans!", javax.swing.JOptionPane.ERROR_MESSAGE);
492          return;
493       }
494       ArrayList refs = new ArrayList();
495       JFrame tmpFrame = new JFrame();
496       new SelectRefs(tmpFrame, this, refs).show();
497       if (refs == null)
498          return;
499
500       for (int i = 0; i < refs.size(); i++) {
501          listModel.addElement(refs.get(i));
502       }
503
504       refList.setModel(listModel);
505       JagGenerator.stateChanged(false);
506    }//GEN-LAST:event_addButtonActionPerformed
507

508    
509    private void removeButtonActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_removeButtonActionPerformed
510
int[] selection = refList.getSelectedIndices();
511       if (selection != null) {
512          for (int i = selection.length - 1; i >= 0; i--) {
513             relationRefs.remove(listModel.elementAt(selection[i]));
514             listModel.removeElementAt(selection[i]);
515          }
516          refList.setModel(listModel);
517          JagGenerator.stateChanged(false);
518       }
519    }//GEN-LAST:event_removeButtonActionPerformed
520

521     // Variables declaration - do not modify//GEN-BEGIN:variables
522
private javax.swing.JButton JavaDoc addButton;
523     private javax.swing.JPanel JavaDoc buttonPanel;
524     private javax.swing.JLabel JavaDoc desciptionLabel;
525     public javax.swing.JTextField JavaDoc descriptionText;
526     private javax.swing.JScrollPane JavaDoc jScrollPane1;
527     private javax.swing.JLabel JavaDoc nameLabel;
528     public javax.swing.JTextField JavaDoc nameText;
529     private javax.swing.JPanel JavaDoc panel;
530     private javax.swing.JList JavaDoc refList;
531     private javax.swing.JLabel JavaDoc refNameLabel;
532     public javax.swing.JTextField JavaDoc refNameText;
533     private javax.swing.JLabel JavaDoc refsLabel;
534     private javax.swing.JButton JavaDoc removeButton;
535     private javax.swing.JLabel JavaDoc rootPackageLabel;
536     private javax.swing.JTextField JavaDoc rootPackageText;
537     // End of variables declaration//GEN-END:variables
538
}
539
540
Popular Tags