View Javadoc
1   /*
2    * This software was designed and created by Jason Carroll.
3    * Copyright (c) 2002, 2003, 2004 Jason Carroll.
4    * The author can be reached at jcarroll@cowsultants.com
5    * ITracker website: http://www.cowsultants.com
6    * ITracker forums: http://www.cowsultants.com/phpBB/index.php
7    *
8    * This program is free software; you can redistribute it and/or modify
9    * it only under the terms of the GNU General Public License as published by
10   * the Free Software Foundation; either version 2 of the License, or
11   * (at your option) any later version.
12   *
13   * This program is distributed in the hope that it will be useful,
14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   * GNU General Public License for more details.
17   */
18  
19  package org.itracker.model;
20  
21  import org.apache.commons.lang.builder.ToStringBuilder;
22  
23  /**
24   * A BeanShell script to execute on a particular event.
25   * <p> The script is interpreted on it's event fired<br />
26   * in the environment there is available:</p>
27   * <ul> <li>event (event type-id)
28   * </li><li>fieldId (is a field id associated with event)
29   * </li><li>currentValue (is a set of current values)
30   * </li><li>currentErrors (is a container for occurred errors)
31   * </li><li>currentForm (is a form instance, holding values)
32   * </li> </ul>
33   * <p>
34   * currentValue will be applied to the currentForm, property field</p>
35   * </p>
36   * <p>
37   * This allows to dynamically customize the system by executing custom actions
38   * at given extension points where an event is generated.
39   * </p>
40   * <p>
41   * A WorkflowScript needs to be configured to be executed for a particular field
42   * of a Project. This configuration is represented as a ProjectScript. <br>
43   * WorkflowScript - ProjectScript is a 1-N relationship.
44   * </p>
45   *
46   * @author ready
47   * @see ProjectScript
48   */
49  public class WorkflowScript extends AbstractEntity {
50  
51      /**
52       *
53       */
54      private static final long serialVersionUID = 1L;
55  
56      public enum ScriptLanguage {
57          BeanShell,
58          Groovy
59      }
60      private String name;
61  
62      private String script;
63  
64      private int event;
65  
66      // TODO: what's the expected type here?
67      // private Collection projectFields;
68      private int numUses;
69  
70      private ScriptLanguage language;
71      /*
72        * This class used to have a <code>projectFields</code> attribute, which
73        * was a Collection<ProjectScript>. This has been removed because the
74        * association WorkflowScript - ProjectScript doesn't need to be navigatable
75        * in this direction.
76        */
77  
78      public int getEvent() {
79          return event;
80      }
81  
82      public void setEvent(int event) {
83          this.event = event;
84      }
85  
86      public String getName() {
87          return name;
88      }
89  
90      public void setName(String name) {
91          this.name = name;
92      }
93  
94      /*
95        * public Collection getProjectFields() { return projectFields; }
96        *
97        * public void setProjectFields(Collection projectFields) {
98        * this.projectFields = projectFields; }
99        */
100     public String getScript() {
101         return script;
102     }
103 
104     public void setScript(String script) {
105         this.script = script;
106     }
107 
108 
109     public ScriptLanguage getLanguage() {
110         return language;
111     }
112 
113     public void setLanguage(ScriptLanguage language) {
114         this.language = language;
115     }
116 
117     @Override
118     public String toString() {
119         return new ToStringBuilder(this).append("id", getId()).append("name", getName())
120                 .append("event", getEvent()).append("language", getLanguage()).append(
121                         "script", getScript()).toString();
122     }
123 
124 }