KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > ext > dbobj > AppIntegration


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.ext.dbobj;
66
67 import com.jcorporate.expresso.core.controller.ControllerRequest;
68 import com.jcorporate.expresso.core.db.DBException;
69 import com.jcorporate.expresso.core.dbobj.DBObject;
70 import com.jcorporate.expresso.core.dbobj.Schema;
71 import com.jcorporate.expresso.core.dbobj.SchemaFactory;
72 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
73 import com.jcorporate.expresso.core.dbobj.ValidValue;
74 import com.jcorporate.expresso.kernel.util.FastStringBuffer;
75 import com.jcorporate.expresso.services.dbobj.DBOtherMap;
76 import com.jcorporate.expresso.services.dbobj.SchemaList;
77
78 import java.util.Enumeration JavaDoc;
79 import java.util.Iterator JavaDoc;
80 import java.util.Vector JavaDoc;
81
82
83 /**
84  * AppIntegration
85  * Provide a point of integration between different Expresso-based
86  * applications. This facilitates (for example) a Poll being associated
87  * with an eForum discussion, or a HelpDesk ticket being associated
88  * with an eContent resource.
89  *
90  * @author Michael Nash
91  */

92 public class AppIntegration
93         extends SecuredDBObject {
94
95     /**
96      * Constructor
97      */

98     public AppIntegration()
99             throws DBException {
100         super();
101     } /* AppIntegration() */
102
103
104     /**
105      * Use over (String) constructor. Initializes the object in the context
106      * of the user who's uid belongs to the parameter.
107      *
108      * @param the Uid of the user context
109      * @throws DBException if there's an initialization problem
110      */

111     public AppIntegration(int uid)
112             throws DBException {
113         super(uid);
114     }
115
116     /**
117      * For using DBObjects within Controllers. Initializes based upon the current
118      * user and the requested db. [Of course this can be modified later]
119      *
120      * @param request - The controller request handed to you by the framework.
121      */

122     public AppIntegration(ControllerRequest request)
123             throws DBException {
124         super(request);
125     }
126
127     /**
128      * Define the table and fields for this object
129      *
130      * @throws DBException If the fields cannot be set up
131      */

132     public void setupFields()
133             throws DBException {
134         setTargetTable("APPINTEGRATE");
135         setDescription("DBappIntegrate");
136         setCharset("ISO-8859-1");
137         addField("IntegrationId", "auto-inc", 0, false, "integrationKey");
138         addField("FromSchema", "varchar", 128, false, "fromSchema");
139         addField("ToSchema", "varchar", 128, false, "toSchema");
140         addField("FromObj", "varchar", 128, false, "fromObject");
141         addField("ToObj", "varchar", 128, false, "toObject");
142         addField("FromKey", "text", 0, false, "fromKey");
143         addField("ToKey", "text", 0, false, "toKey");
144         addKey("IntegrationId");
145         setReadOnly("IntegrationId");
146         setMultiValued("FromSchema");
147         setMultiValued("ToSchema");
148         setMultiValued("FromObj");
149         setMultiValued("ToObj");
150     } /* setupFields() */
151
152
153     public Vector JavaDoc getValidValues(String JavaDoc fieldName)
154             throws DBException {
155         if (fieldName.equals("FromSchema") || fieldName.equals("ToSchema")) {
156             Vector JavaDoc v2 = new Vector JavaDoc(2);
157             v2.addElement(new ValidValue("com.jcorporate.expresso.core.ExpressoSchema",
158                     "General"));
159
160             SchemaList sl = new SchemaList(SecuredDBObject.SYSTEM_ACCOUNT);
161             sl.setDataContext(getDataContext());
162
163             SchemaList oneSchema = null;
164
165             for (Iterator JavaDoc e = sl.searchAndRetrieveList("Descrip").iterator();
166                  e.hasNext();) {
167                 oneSchema = (SchemaList) e.next();
168                 v2.addElement(new ValidValue(oneSchema.getField("SchemaClass"),
169                         oneSchema.getField("Descrip")));
170             }
171
172             return v2;
173         } else if (fieldName.equals("FromObj") || fieldName.equals("ToObj")) {
174             SchemaList myList = new SchemaList(SecuredDBObject.SYSTEM_ACCOUNT);
175             myList.setDataContext(getDataContext());
176
177             SchemaList oneList = null;
178             Vector JavaDoc dbObjList = new Vector JavaDoc(10);
179             dbObjList.addElement(new ValidValue("com.jcorporate.expresso.core.dbobj.AutoDBObject",
180                     "Expresso: Automatic DB Objects"));
181             doSchema("com.jcorporate.expresso.core.ExpressoSchema", "Expresso",
182                     dbObjList);
183
184             /* Get any database objects listed as existing in another */
185
186             /* database */
187             DBOtherMap otherList = new DBOtherMap();
188             otherList.setDataContext(getDataContext());
189
190             DBOtherMap oneOther = null;
191
192             for (Iterator JavaDoc e2 = otherList.searchAndRetrieveList().iterator();
193                  e2.hasNext();) {
194                 oneOther = (DBOtherMap) e2.next();
195                 dbObjList.addElement(new ValidValue(oneOther.getField("DBObjName"),
196                         oneOther.getField("Descrip")));
197             }
198             /* Now get all of the schemas listed in the database as well */
199             for (Iterator JavaDoc sl = myList.searchAndRetrieveList().iterator();
200                  sl.hasNext();) {
201                 oneList = (SchemaList) sl.next();
202                 doSchema(oneList.getField("SchemaClass"),
203                         oneList.getField("Descrip"), dbObjList);
204             } /* for each schema list */
205
206
207             return dbObjList;
208         }
209
210         return super.getValidValues(fieldName);
211     } /* getValidValues */
212
213
214     /**
215      * @param schemaName
216      * @param schemaDescrip
217      * @param oList
218      * @param DBException
219      */

220     private void doSchema(String JavaDoc schemaName, String JavaDoc schemaDescrip,
221                           Vector JavaDoc oList)
222             throws DBException {
223         Schema oneSchema = null;
224         DBObject oneDBObj = null;
225         ValidValue oneVal = null;
226
227         oneSchema = SchemaFactory.getInstance().getSchema(schemaName);
228         if (oneSchema == null) {
229             throw new DBException("Error instantiating class '" + schemaName);
230         }
231
232         FastStringBuffer fsb = new FastStringBuffer(128);
233         /* Now add all of the objects in this schema to our list */
234         for (Enumeration JavaDoc e = oneSchema.getMembers(); e.hasMoreElements();) {
235             oneDBObj = (DBObject) e.nextElement();
236             fsb.clear();
237             fsb.append(schemaDescrip);
238             fsb.append(": ");
239             fsb.append(oneDBObj.getMetaData().getDescription());
240             oneVal = new ValidValue(oneDBObj.getClass().getName(),
241                     fsb.toString());
242             oList.addElement(oneVal);
243         }
244     } /* doSchema(String, String, Vector) */
245
246
247 } /* AppIntegration */
248
249 /* AppIntegration */
Popular Tags