1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package com.finalist.jaggenerator.modules;
19
20 import com.finalist.jaggenerator.*;
21 import com.finalist.jag.util.TemplateString;
22
23 import java.util.*;
24 import java.awt.event.ActionListener;
25 import java.awt.event.ActionEvent;
26 import javax.swing.*;
27 import javax.swing.table.DefaultTableModel;
28 import javax.swing.tree.*;
29 import javax.xml.parsers.*;
30
31 import org.w3c.dom.*;
32 import org.apache.commons.logging.Log;
33 import org.apache.commons.logging.LogFactory;
34
35
36 /***
37 * Helper class for representing business methods.
38 *
39 * @author Rudie Ekkelenkamp - Finalist IT Group
40 * @version $Revision: 1.5 $, $Date: 2005/03/05 10:52:12 $
41 */
42 public class BusinessMethod extends DefaultMutableTreeNode implements JagBean {
43
44 static Log log = LogFactory.getLog(BusinessMethod.class);
45
46 private Session parentEntity;
47
48 /*** Creates new form BeanForm */
49 public BusinessMethod(Session parent) {
50 initComponents();
51 parentEntity = parent;
52 }
53
54 public BusinessMethod() {
55 initComponents();
56 }
57
58 /*** Use for building up the entity field gui component */
59 public BusinessMethod(Session parent,Element node) {
60 initComponents();
61 parentEntity = parent;
62 try {
63 NodeList rt = node.getElementsByTagName("return-type");
64 if (rt.getLength() == 1) {
65 String returnType = "";
66 if (rt.item(0).getFirstChild() != null) {
67 returnType = rt.item(0).getFirstChild().getNodeValue();
68 }
69 log.debug("The return type is: " + returnType);
70 setReturnType(returnType);
71 }
72 NodeList mn = node.getElementsByTagName("method-name");
73 if (mn.getLength() == 1) {
74 String methodName = "";
75 if (mn.item(0).getFirstChild() != null) {
76 methodName = mn.item(0).getFirstChild().getNodeValue();
77 }
78 log.debug("The method name is: " + methodName);
79 setMethodName(methodName);
80 }
81 NodeList md = node.getElementsByTagName("description");
82 if (md.getLength() == 1) {
83
84 String methodDescription = "";
85 if (md.item(0).getFirstChild() != null) {
86 methodDescription = md.item(0).getFirstChild().getNodeValue();
87 }
88 log.debug("The method description is: " + methodDescription);
89 setDescription(methodDescription);
90 }
91 ArrayList businessArguments = new ArrayList();
92 NodeList params = node.getElementsByTagName("parameter");
93 for (int k = 0; k < params.getLength(); k++) {
94 BusinessArgument businessArgument = new BusinessArgument();
95 Element param = (Element) params.item(k);
96 NodeList type = param.getElementsByTagName("type");
97 if (type.getLength() == 1) {
98 String baType = "";
99 if (type.item(0).getFirstChild() != null) {
100 baType = type.item(0).getFirstChild().getNodeValue();
101 }
102 log.debug("The param type is: " + baType);
103 businessArgument.setType(baType);
104 }
105 NodeList name = param.getElementsByTagName("name");
106 if (name.getLength() == 1) {
107 String baName = "";
108 if (name.item(0).getFirstChild() != null) {
109 baName = name.item(0).getFirstChild().getNodeValue();
110 }
111 log.debug("The param name is: " + baName);
112 businessArgument.setName(baName);
113 }
114 businessArguments.add(businessArgument);
115 }
116 setArgumentList(businessArguments);
117 log.debug("Added a businessmethod to the list");
118 } catch (Exception e) {
119 e.printStackTrace();
120 }
121 }
122
123
124 public javax.swing.JPanel getPanel() {
125 return panel;
126 }
127
128
129 public String getRefName() {
130 return getSignature();
131 }
132
133
134 public String getSignature() {
135 StringBuffer signature = new StringBuffer();
136 signature.append(getReturnType());
137 signature.append(" ");
138 signature.append(getMethodName());
139 signature.append("(");
140 for(Iterator i = getArgumentList().iterator(); i.hasNext(); ) {
141 BusinessArgument next = (BusinessArgument) i.next();
142 signature.append(next.getType());
143 signature.append(" ");
144 signature.append(next.getName());
145 if(i.hasNext()) {
146 signature.append(",");
147 }
148 }
149 signature.append(")");
150 return signature.toString();
151 }
152
153 public void getXML(Element el) throws ParserConfigurationException {
154 Document doc = el.getOwnerDocument();
155 Element businessMethod = doc.createElement("business-method");
156
157 Element returnType = doc.createElement("return-type");
158 if (getReturnType() == null) {
159 returnType.appendChild(doc.createTextNode("void"));
160 } else {
161 returnType.appendChild(doc.createTextNode(getReturnType()));
162 }
163 businessMethod.appendChild(returnType);
164
165 Element methodName = doc.createElement("method-name");
166 String methodString = getMethodName();
167 if (methodString == null) {
168 methodString = "";
169 }
170 methodName.appendChild(doc.createTextNode(methodString));
171 businessMethod.appendChild(methodName);
172
173 Element desc = doc.createElement("description");
174 String descString = getDescription();
175 if (descString == null) {
176 descString = "";
177 }
178 desc.appendChild(doc.createTextNode(descString));
179 businessMethod.appendChild(desc);
180
181 for (int j = 0; j < getArgumentList().size(); j++) {
182 Element parameter = doc.createElement("parameter");
183 BusinessArgument arg = (BusinessArgument) getArgumentList().get(j);
184
185 Element type = doc.createElement("type");
186 String typeString = arg.getType();
187 if (typeString == null) {
188 typeString = "";
189 }
190 log.info("Type: " + typeString);
191
192 type.appendChild(doc.createTextNode(typeString));
193 parameter.appendChild(type);
194
195 Element pname = doc.createElement("name");
196 String nameString = arg.getName();
197 if (nameString == null) {
198 nameString = "";
199 }
200 log.debug("Name " + nameString);
201 pname.appendChild(doc.createTextNode(nameString));
202 parameter.appendChild(pname);
203
204 businessMethod.appendChild(parameter);
205 }
206 el.appendChild(businessMethod);
207 }
208
209
210
211 /***
212 * the return type of the method.
213 * @return
214 */
215 public String getReturnType() {
216 return returnTypeInput.getText();
217 }
218
219 /***
220 * Set the return type of the business method.
221 *
222 * @param returnType
223 */
224 public void setReturnType(String returnType) {
225 returnTypeInput.setText(returnType);
226 }
227
228 /***
229 * Get the business method name.
230 *
231 * @return the name.
232 */
233 public String getMethodName() {
234 return methodNameInput.getText();
235 }
236
237 /***
238 * Get the business method name in uppercase notation.
239 *
240 * @return the name.
241 */
242 public String getMethodNameUpper() {
243 String methodName = getMethodName();
244 if (methodName == null) {
245 return methodName;
246 }
247 if (methodName.length() > 1) {
248 return new String(methodName.substring(0, 1).toUpperCase() + methodName.substring(1));
249 }
250 return methodName.toUpperCase();
251
252 }
253
254 /***
255 * Set the method name.
256 *
257 * @param methodName the name.
258 */
259 public void setMethodName(String methodName) {
260 methodNameInput.setText(methodName);
261 }
262
263 /***
264 * Get the method description.
265 * @return description.
266 */
267 public String getDescription() {
268 return descriptionInput.getText();
269 }
270
271 /***
272 * Set the method description.
273 *
274 * @param description
275 */
276 public void setDescription(String description) {
277 descriptionInput.setText(description);
278 }
279
280 /***
281 * get a list of all arguments of the BusinessArgument class.
282 *
283 * @return Collection of BusinessArgument classes.
284 */
285 public ArrayList getArgumentList() {
286 DefaultTableModel model = (DefaultTableModel)parametersTable.getModel();
287
288 ArrayList argumentList = new ArrayList();
289
290 for(int count = 0; count < model.getRowCount(); count++) {
291 BusinessArgument argument = new BusinessArgument();
292 if (model.getValueAt(count, 0) != null) {
293 argument.setName(model.getValueAt(count, 0).toString());
294 }
295 if (model.getValueAt(count, 1) != null) {
296 argument.setType(model.getValueAt(count, 1).toString());
297 }
298 argumentList.add(argument);
299 }
300
301 return argumentList;
302 }
303
304 /***
305 * Set the argument list.
306 * @param argumentList
307 */
308 public void setArgumentList(ArrayList argumentList) {
309 Object data[][] = new Object[argumentList.size()][2];
310
311 for(int count = 0; count < argumentList.size(); count++) {
312 BusinessArgument arg = (BusinessArgument) argumentList.get(count);
313 data[count][0] = arg.getName();
314 data[count][1] = arg.getType();
315 }
316
317 parametersTable.setModel(new javax.swing.table.DefaultTableModel(
318 data,
319 new String [] {
320 "Parameter", "Type"
321 }
322 ));
323 }
324
325 public String toString() {
326 return getRefName();
327 }
328
329
330 /*** This method is called from within the constructor to
331 * initialize the form.
332 * WARNING: Do NOT modify this code. The content of this method is
333 * always regenerated by the Form Editor.
334 */
335 private void initComponents() {
336 panel = new javax.swing.JPanel();
337 returnTypeLabel = new javax.swing.JLabel();
338 methodNameLabel = new javax.swing.JLabel();
339 descriptionLabel = new javax.swing.JLabel();
340 parametersLabel = new javax.swing.JLabel();
341 returnTypeInput = new javax.swing.JTextArea();
342 methodNameScrollPane = new javax.swing.JScrollPane();
343 methodNameInput = new javax.swing.JTextArea();
344 descriptionScrollPane = new javax.swing.JScrollPane();
345 descriptionInput = new javax.swing.JTextArea();
346 parametersScrollPane = new javax.swing.JScrollPane();
347 parametersTable = new javax.swing.JTable();
348 addParameterButton = new javax.swing.JButton();
349 deleteParameterButton = new javax.swing.JButton();
350
351 panel.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
352
353 returnTypeLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
354 returnTypeLabel.setText("Return type:");
355 panel.add(returnTypeLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 10, 90, -1));
356
357 methodNameLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
358 methodNameLabel.setText("Method name:");
359 panel.add(methodNameLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 40, 90, -1));
360
361 descriptionLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
362 descriptionLabel.setText("Description:");
363 panel.add(descriptionLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 100, 90, -1));
364
365 parametersLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
366 parametersLabel.setText("Parameters:");
367 panel.add(parametersLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 190, 90, -1));
368
369 returnTypeInput.setFont(new java.awt.Font("Microsoft Sans Serif", 0, 11));
370 returnTypeInput.setAutoscrolls(false);
371 returnTypeInput.setBorder(new javax.swing.border.EtchedBorder());
372 returnTypeInput.addKeyListener(new java.awt.event.KeyAdapter() {
373 public void keyReleased(java.awt.event.KeyEvent evt) {
374 inputKeyReleased(evt);
375 }
376 });
377
378 panel.add(returnTypeInput, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 10, 260, -1));
379
380 methodNameScrollPane.setBorder(null);
381 methodNameInput.setFont(new java.awt.Font("Microsoft Sans Serif", 0, 11));
382 methodNameInput.setLineWrap(true);
383 methodNameInput.setWrapStyleWord(true);
384 methodNameInput.setBorder(new javax.swing.border.EtchedBorder());
385 methodNameScrollPane.setViewportView(methodNameInput);
386
387 panel.add(methodNameScrollPane, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 40, 260, 40));
388
389 descriptionScrollPane.setBorder(null);
390 descriptionScrollPane.setFocusable(false);
391 descriptionScrollPane.setHorizontalScrollBar(descriptionScrollPane.getHorizontalScrollBar());
392 descriptionInput.setFont(new java.awt.Font("Microsoft Sans Serif", 0, 11));
393 descriptionInput.setLineWrap(true);
394 descriptionInput.setWrapStyleWord(true);
395 descriptionInput.setBorder(new javax.swing.border.EtchedBorder());
396 descriptionScrollPane.setViewportView(descriptionInput);
397
398 panel.add(descriptionScrollPane, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 100, 260, 80));
399
400 parametersTable.setModel(new javax.swing.table.DefaultTableModel(
401 new Object [][] {
402
403 },
404 new String [] {
405 "Parameter", "Type"
406 }
407 ));
408 parametersScrollPane.setViewportView(parametersTable);
409
410 panel.add(parametersScrollPane, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 190, 260, 110));
411
412 addParameterButton.setText("Add");
413 addParameterButton.addActionListener(new java.awt.event.ActionListener() {
414 public void actionPerformed(java.awt.event.ActionEvent evt) {
415 addParameterButtonActionPerformed(evt);
416 }
417 });
418
419 panel.add(addParameterButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 310, -1, -1));
420
421 deleteParameterButton.setText("Delete");
422 deleteParameterButton.addActionListener(new java.awt.event.ActionListener() {
423 public void actionPerformed(java.awt.event.ActionEvent evt) {
424 deleteParameterButtonActionPerformed(evt);
425 }
426 });
427
428 panel.add(deleteParameterButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(180, 310, -1, -1));
429
430 }
431
432 private void inputKeyReleased(java.awt.event.KeyEvent evt) {
433 JagGenerator.stateChanged(false);
434 }
435
436 private void deleteParameterButtonActionPerformed(java.awt.event.ActionEvent evt) {
437 int selectedRows[] = parametersTable.getSelectedRows();
438
439 ArrayList argumentList = getArgumentList();
440 for(int count = selectedRows.length -1; count >= 0; count--) {
441 int deleteCol = selectedRows[count];
442 System.out.println("deleting: "+deleteCol);
443
444 argumentList.remove(deleteCol);
445 }
446 setArgumentList(argumentList);
447 JagGenerator.stateChanged(false);
448
449 }
450
451 private void addParameterButtonActionPerformed(java.awt.event.ActionEvent evt) {
452 BusinessArgument ba = new BusinessArgument();
453 ArrayList argumentList = getArgumentList();
454 argumentList.add(ba);
455 setArgumentList(argumentList);
456 JagGenerator.stateChanged(false);
457
458 }
459
460 private void refNameTextFocusLost(java.awt.event.FocusEvent evt) {
461 JagGenerator.stateChanged(false);
462 }
463
464 private void rootPackageTextFocusLost(java.awt.event.FocusEvent evt) {
465 JagGenerator.stateChanged(false);
466 }
467
468 private void descriptionTextFocusLost(java.awt.event.FocusEvent evt) {
469 JagGenerator.stateChanged(false);
470 }
471
472 private void nameTextFocusLost(java.awt.event.FocusEvent evt) {
473 JagGenerator.stateChanged(false);
474
475 }
476
477
478 private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
479 }
480
481
482
483 private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {
484 }
485
486
487 private javax.swing.JButton addParameterButton;
488 private javax.swing.JButton deleteParameterButton;
489 private javax.swing.JTextArea descriptionInput;
490 private javax.swing.JLabel descriptionLabel;
491 private javax.swing.JScrollPane descriptionScrollPane;
492 private javax.swing.JTextArea methodNameInput;
493 private javax.swing.JLabel methodNameLabel;
494 private javax.swing.JScrollPane methodNameScrollPane;
495 private javax.swing.JPanel panel;
496 private javax.swing.JLabel parametersLabel;
497 private javax.swing.JScrollPane parametersScrollPane;
498 private javax.swing.JTable parametersTable;
499 private javax.swing.JTextArea returnTypeInput;
500 private javax.swing.JLabel returnTypeLabel;
501
502 }