1 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 ; 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 37 public class Session extends DefaultMutableTreeNode implements JagBean { 38 39 private DefaultListModel listModel = new DefaultListModel(); 40 private ArrayList relationRefs = new ArrayList(); 41 static Log log = LogFactory.getLog(JagGenerator.class); 43 44 45 46 public Session(String 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 attName = child.getAttribute("name"); 59 try { 60 String 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 entityName = (subList.item(j)).getFirstChild().getNodeValue(); 72 relationRefs.add(entityName); 73 } 74 } 75 } 76 } catch (NullPointerException 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 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 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 128 public Boolean hasBusinessMethods() { 129 if (getBusinessMethods().size() > 0) { 130 return new Boolean (true); 131 } else { 132 return new Boolean (false); 133 } 134 } 135 136 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 154 public void setEntityRefs(ArrayList refs) { 155 if (refs != null) { 156 for (int i = 0; i < refs.size(); i++) { 157 addRef((String ) refs.get(i)); 158 } 159 } 160 } 161 162 167 public ArrayList getNonRelationEntityRefs() { 168 ArrayList entityRefs = new ArrayList(); 169 if (listModel != null) { 170 for (int i = 0; i < listModel.size(); i++) { 171 String entity = (String ) listModel.get(i); 172 if (!relationRefs.contains(entity)) { 173 entityRefs.add(entity); 174 } 175 } 176 } 177 return entityRefs; 178 } 179 public String 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 } 221 222 Enumeration refs = listModel.elements(); 223 if (refs != null) { 224 while (refs.hasMoreElements()) { 225 Element refNode = doc.createElement("ref"); 226 String ref = (String ) refs.nextElement(); 227 if (ref != null) { 228 refNode.appendChild(doc.createTextNode(ref)); 229 } 230 module.appendChild(refNode); 231 } 232 } 233 234 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 ) relRefs.next())); 252 refNode.appendChild(child); 253 module.appendChild(refNode); 254 } 255 } 256 257 el.appendChild(module); 258 } 259 260 public String 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 text) { 273 nameText.setText(text); 274 } 275 276 public TemplateString getDescription() { 277 return new TemplateString(descriptionText.getText()); 278 } 279 280 public void setDescription(String 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 text) { 290 rootPackageText.setText(text); 291 } 292 293 294 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 ref = (String ) 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 ref = (String ) refs.nextElement(); 321 Entity entity = JagGenerator.getEntityByRefName(ref); 322 entities.add(entity); 323 } 324 return entities; 325 } 326 330 public String getRefName() { 331 return refNameText.getText(); 332 } 333 334 338 public void setRefName(String text) { 339 refNameText.setText(text); 340 } 341 342 346 public void addRef(String ref) { 347 listModel.addElement(ref); 348 } 349 350 public void addRelationRef(String entity) { 351 addRef(entity); 352 relationRefs.add(entity); 353 } 354 355 356 361 private void initComponents() { panel = new javax.swing.JPanel (); 363 nameLabel = new javax.swing.JLabel (); 364 desciptionLabel = new javax.swing.JLabel (); 365 rootPackageLabel = new javax.swing.JLabel (); 366 refNameLabel = new javax.swing.JLabel (); 367 nameText = new javax.swing.JTextField (); 368 descriptionText = new javax.swing.JTextField (); 369 rootPackageText = new javax.swing.JTextField (); 370 refNameText = new javax.swing.JTextField (); 371 refsLabel = new javax.swing.JLabel (); 372 jScrollPane1 = new javax.swing.JScrollPane (); 373 refList = new javax.swing.JList (); 374 buttonPanel = new javax.swing.JPanel (); 375 removeButton = new javax.swing.JButton (); 376 addButton = new javax.swing.JButton (); 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 () { 398 public void focusLost(java.awt.event.FocusEvent 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 () { 406 public void focusLost(java.awt.event.FocusEvent 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 () { 414 public void focusLost(java.awt.event.FocusEvent 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 () { 422 public void focusLost(java.awt.event.FocusEvent 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 ()); 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 ()); 439 440 removeButton.setText("Remove"); 441 removeButton.setMaximumSize(new java.awt.Dimension (56, 26)); 442 removeButton.setMinimumSize(new java.awt.Dimension (56, 26)); 443 removeButton.addActionListener(new java.awt.event.ActionListener () { 444 public void actionPerformed(java.awt.event.ActionEvent 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 () { 453 public void actionPerformed(java.awt.event.ActionEvent 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 } 464 private void refNameTextFocusLost(java.awt.event.FocusEvent evt) { JagGenerator.stateChanged(false); 466 } 468 private void rootPackageTextFocusLost(java.awt.event.FocusEvent evt) { JagGenerator.stateChanged(false); 470 } 472 private void descriptionTextFocusLost(java.awt.event.FocusEvent evt) { JagGenerator.stateChanged(false); 474 } 476 private void nameTextFocusLost(java.awt.event.FocusEvent evt) { 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 } 486 487 private void addButtonActionPerformed(java.awt.event.ActionEvent evt) { 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 } 508 509 private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) { 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 } 521 private javax.swing.JButton addButton; 523 private javax.swing.JPanel buttonPanel; 524 private javax.swing.JLabel desciptionLabel; 525 public javax.swing.JTextField descriptionText; 526 private javax.swing.JScrollPane jScrollPane1; 527 private javax.swing.JLabel nameLabel; 528 public javax.swing.JTextField nameText; 529 private javax.swing.JPanel panel; 530 private javax.swing.JList refList; 531 private javax.swing.JLabel refNameLabel; 532 public javax.swing.JTextField refNameText; 533 private javax.swing.JLabel refsLabel; 534 private javax.swing.JButton removeButton; 535 private javax.swing.JLabel rootPackageLabel; 536 private javax.swing.JTextField rootPackageText; 537 } 539 540 | Popular Tags |