View Javadoc

1   package com.sri.emo.wizard.completion.persistence;
2   
3   import com.jcorporate.expresso.core.db.DBConnection;
4   import com.jcorporate.expresso.core.db.DBException;
5   import com.jcorporate.expresso.core.dbobj.DBField;
6   import com.jcorporate.expresso.core.dbobj.SecurDBObject;
7   import com.jcorporate.expresso.core.dbobj.ValidValue;
8   import com.jcorporate.expresso.core.security.ReadOnlyUser;
9   import com.jcorporate.expresso.core.security.filters.AllowedHtmlPlusURLFilter;
10  import com.sri.emo.dbobj.Part;
11  import com.sri.emo.dbobj.PartsFactory;
12  import com.sri.emo.wizard.completion.model.FieldCompletion;
13  
14  import java.util.Vector;
15  
16  
17  /***
18   * Per-Part Details of the Completion Wizards.
19   *
20   * @author Michael Rimov
21   * @version 1.0
22   */
23  public class CompletionDetails extends SecurDBObject {
24  
25  
26      /***
27  	 * 
28  	 */
29  	private static final long serialVersionUID = 1L;
30  
31  
32  	/***
33       * Constant for access to field 'Completion Details Number'.
34       */
35      public static final String FLD_SURROGATE_KEY = "DetailsNumber";
36  
37  
38      /***
39       * Constant for access to field 'Wizard Id'
40       */
41      public static final String FLD_WIZARD_ID = "WizardId";
42  
43      /***
44       * Table Name
45       */
46      public static final String TABLE_NAME = "EMOCOMPLETNDTL";
47  
48      /***
49       * Constant for access to field 'Part Id'
50       */
51      public static final String FLD_PART_ID = "PartId";
52  
53  
54      public static final String FLD_PART_ORDER = "PartOrder";
55  
56      /***
57       * Constant for access to field 'Is FreeText'
58       */
59      public static final String FLD_FREETEXT = "IsFreeText";
60  
61      /***
62       * Constant for access to field 'Min Entries'
63       */
64      public static final String FLD_MIN_ENTRIES = "MinEntries";
65  
66      /***
67       * Constant for access to field 'Max Entries'
68       */
69      public static final String FLD_MAX_ENTRIES = "MaxEntries";
70  
71  
72      /***
73       * Constant for acces to field 'Directive'
74       */
75      public static final String FLD_DIRECTIVE = "Directive";
76  
77      /***
78       * Constant fo access ot field 'Help Text';
79       */
80      public static final String FLD_HELPTEXT = "HelpText";
81  
82      /***
83       * Field Completion Type
84       */
85      public static final String FLD_COMPLETION = "Completion";
86  
87  
88      /***
89       * Field for single entry.
90       */
91      public static final String FLD_SINGLE_ENTRY = "SingleEntry";
92  
93  
94      /***
95       * Completion wizard use fixed constant.
96       */
97      public static final String COMPLETION_FIXED = FieldCompletion.FIXED.toString();
98  
99      /***
100      * Completion method use wizard constant.
101      */
102     public static final String COMPLETION_WIZARD = FieldCompletion.WIZARD.toString();
103 
104 
105     /***
106      * Default constructor to create a new object.
107      *
108      * @throws DBException upon construction error.
109      */
110     public CompletionDetails() throws DBException {
111         super();
112     }
113 
114     /***
115      * Constructor that takes a <tt>DBConnection</tt> for use inside a transaction.
116      *
117      * @param newConnection DBConnection the transaction connection.
118      * @throws DBException upon construction error.
119      */
120     public CompletionDetails(DBConnection newConnection) throws DBException {
121         super(newConnection);
122     }
123 
124     /***
125      * Constructor taht takes a <tt>ReadOnlyUser</tt> security context.  This
126      * is most often set by the default constructor, so you only want to do this
127      * if you want to use special security permissions (such as Admin or SuperUser)
128      *
129      * @param readOnlyUser ReadOnlyUser the ReadOnlyUser instance.
130      * @throws DBException upon construction error.
131      */
132     public CompletionDetails(ReadOnlyUser readOnlyUser) throws DBException {
133         super(readOnlyUser);
134     }
135 
136 
137     /***
138      * Retrieve the part.
139      *
140      * @return Part
141      * @throws DBException
142      */
143     public Part getPart() throws DBException {
144         return PartsFactory.getPart(this.getFieldInt(FLD_PART_ID));
145     }
146 
147     /***
148      * Method to set up the fields for this database object.
149      *
150      * @throws DBException If there is an error setting up the fields as
151      *                     requested. For example, if a field allowing null is requested as
152      *                     part of the key
153      */
154     protected void setupFields() throws DBException {
155         setTargetTable(TABLE_NAME);
156         setDescription("Completion Details");
157         setCharset("ISO-8859-1");
158 
159 
160         addField(FLD_SURROGATE_KEY, DBField.AUTOINC_TYPE, 0, false, "Completion Details Number");
161         addKey(FLD_SURROGATE_KEY);
162 
163         addField(FLD_WIZARD_ID, DBField.INTEGER_TYPE, 0, false, "Wizard Id");
164         addField(FLD_PART_ID, DBField.INTEGER_TYPE, 0, false, "Part Id");
165         addField(FLD_MIN_ENTRIES, DBField.INTEGER_TYPE, 0, true, "Min Entries");
166         addField(FLD_MAX_ENTRIES, DBField.INTEGER_TYPE, 0, true, "Max Entries");
167         addField(FLD_PART_ORDER, DBField.INTEGER_TYPE, 0, false, "Order");
168         addField(FLD_FREETEXT, DBField.CHAR_TYPE, 1, true, "Is FreeText");
169         addField(FLD_COMPLETION, DBField.VARCHAR_TYPE, 254, true, "Completion Directive");
170         DBField fieldMeta = (DBField) getMetaData().getFieldMetadata(FLD_COMPLETION);
171         fieldMeta.setFilterClass(AllowedHtmlPlusURLFilter.class);
172 
173         addField(FLD_DIRECTIVE, DBField.VARCHAR_TYPE, 254, true, "Directive");
174         fieldMeta = (DBField) getMetaData().getFieldMetadata(FLD_DIRECTIVE);
175         fieldMeta.setFilterClass(AllowedHtmlPlusURLFilter.class);
176 
177         addField(FLD_HELPTEXT, DBField.TEXT_TYPE, 0, true, "Help Text");
178         fieldMeta = (DBField) getMetaData().getFieldMetadata(FLD_HELPTEXT);
179         fieldMeta.setFilterClass(AllowedHtmlPlusURLFilter.class);
180 
181         addField(FLD_SINGLE_ENTRY, DBField.CHAR_TYPE, 1, true, "Is Single Entry");
182 
183         this.addIndex("CompletionDetailsWizardId", FLD_WIZARD_ID + "," + FLD_PART_ID + "," + FLD_PART_ORDER, false);
184 
185     }
186 
187     /***
188      * New method to replace getValues with a structure of valid values and
189      * descriptions.
190      *
191      * @param fieldName The name of the fields for which a value set is
192      *                  requested
193      * @return A Vector of ValidValue objects
194      * @throws DBException upon error.
195      */
196     public synchronized Vector getValidValues(final String fieldName) throws DBException {
197         if (fieldName.equals(FLD_COMPLETION)) {
198             Vector vv = new Vector(2);
199             vv.add(new ValidValue(COMPLETION_FIXED, COMPLETION_FIXED));
200             vv.add(new ValidValue(COMPLETION_WIZARD, COMPLETION_WIZARD));
201             return vv;
202         } else {
203             return super.getValidValues(fieldName);
204         }
205     }
206 
207 }