001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.core.storage;
034:
035: import com.flexive.core.structure.FxEnvironmentImpl;
036: import com.flexive.shared.exceptions.FxInvalidParameterException;
037: import com.flexive.shared.exceptions.FxLoadException;
038: import com.flexive.shared.exceptions.FxNotFoundException;
039: import com.flexive.shared.scripting.FxScriptInfo;
040: import com.flexive.shared.scripting.FxScriptMapping;
041: import com.flexive.shared.security.ACL;
042: import com.flexive.shared.security.Mandator;
043: import com.flexive.shared.structure.*;
044: import com.flexive.shared.workflow.Route;
045: import com.flexive.shared.workflow.Step;
046: import com.flexive.shared.workflow.StepDefinition;
047: import com.flexive.shared.workflow.Workflow;
048:
049: import java.sql.Connection;
050: import java.util.List;
051:
052: /**
053: * Interface for concrete environment loader implementations (types, acl, etc)
054: *
055: * @author Markus Plesser (markus.plesser@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
056: */
057: public interface EnvironmentLoader {
058:
059: /**
060: * Load all known ACL's from the given connection
061: *
062: * @param con open and valid db connection
063: * @return List<ACL>
064: * @throws FxLoadException on errors
065: */
066: List<ACL> loadACLs(Connection con) throws FxLoadException;
067:
068: /**
069: * Loads all defined Mandators from the given connection.
070: * <p/>
071: * Mandators are visible to all users, so no security checks are performed.
072: * This function does not use any caching.
073: *
074: * @param con open and valid db connection
075: * @return Array containing all known Mandators
076: * @throws FxLoadException on errors
077: */
078: Mandator[] loadMandators(Connection con) throws FxLoadException;
079:
080: /**
081: * Load all data types from the given connection
082: *
083: * @param con open and valid db connection
084: * @return List<FxDataType>
085: * @throws FxLoadException on errors
086: */
087: List<FxDataType> loadDataTypes(Connection con)
088: throws FxLoadException;
089:
090: /**
091: * Load all groups from the given connection
092: *
093: * @param con open and valid db connection
094: * @return List<FxDataType>
095: * @throws FxLoadException on errors
096: */
097: List<FxGroup> loadGroups(Connection con) throws FxLoadException;
098:
099: /**
100: * Load all properties from the given connection
101: *
102: * @param con open and valid db connection
103: * @param environment bootstraped structure (needs ACL's, FxTypes and FxDataTypes initialized)
104: * @return ArrayList<FxDataType>
105: * @throws FxLoadException on errors
106: * @throws FxNotFoundException if stored properties are inconstistent in regard to unique mode, etc.
107: */
108: List<FxProperty> loadProperties(Connection con,
109: FxEnvironment environment) throws FxLoadException,
110: FxNotFoundException;
111:
112: /**
113: * Load all known types and relations
114: *
115: * @param con open and valid db connection
116: * @param environment Environment with loaded mandators, acls and workflows
117: * @return ArrayList containing all known types and relations
118: * @throws FxLoadException on errors
119: */
120: List<FxType> loadTypes(Connection con, FxEnvironment environment)
121: throws FxLoadException;
122:
123: /**
124: * Load all known assignments for the given connection
125: *
126: * @param con open and valid db connection
127: * @param environment Environment for structure and ACL lookups (types, groups, properties)
128: * @return FxAssignment's
129: * @throws FxLoadException on errors
130: */
131: List<FxAssignment> loadAssignments(Connection con,
132: FxEnvironment environment) throws FxLoadException;
133:
134: /**
135: * Load all known Workflows from the given connection
136: *
137: * @param con open and valid db connection
138: * @param environment needed to lookup referenced steps and routes
139: * @return a list of all known workflows
140: * @throws FxLoadException if the workflows could not be loaded
141: */
142: List<Workflow> loadWorkflows(Connection con,
143: FxEnvironment environment) throws FxLoadException;
144:
145: /**
146: * Load all step definitions from the provided connection
147: *
148: * @param con open and valid db connection
149: * @return a list of all step definitions
150: * @throws FxLoadException if the steps could not be loaded
151: */
152: List<StepDefinition> loadStepDefinitions(Connection con)
153: throws FxLoadException;
154:
155: /**
156: * Load all steps
157: *
158: * @param con open and valid db connection
159: * @return a list of all steps
160: * @throws FxLoadException if the steps could not be loaded
161: */
162: List<Step> loadSteps(Connection con) throws FxLoadException;
163:
164: /**
165: * Load all routes for a workflow
166: *
167: * @param con open and valid db connection
168: * @param workflowId workflow id
169: * @return a list of all routes for the given workflow
170: * @throws FxLoadException if the routes could not be loaded
171: */
172: List<Route> loadRoutes(Connection con, int workflowId)
173: throws FxLoadException;
174:
175: /**
176: * Load all scripts
177: *
178: * @param con open and valid db connection
179: * @return all scripts
180: * @throws FxNotFoundException on errors
181: * @throws FxLoadException on errors
182: * @throws FxInvalidParameterException on errors
183: */
184: List<FxScriptInfo> loadScripts(Connection con)
185: throws FxLoadException, FxNotFoundException,
186: FxInvalidParameterException;
187:
188: /**
189: * Load all script mappings
190: *
191: * @param con open and valid db connection
192: * @param environment environment
193: * @return all script mappings
194: * @throws FxLoadException on errors
195: */
196: List<FxScriptMapping> loadScriptMapping(Connection con,
197: FxEnvironmentImpl environment) throws FxLoadException;
198:
199: /**
200: * Load all select lists
201: *
202: * @param con open and valid db connection
203: * @param environment environment, needs ACL's loaded
204: * @return list containing all select lists
205: * @throws FxLoadException on errors
206: */
207: List<FxSelectList> loadSelectLists(Connection con,
208: FxEnvironmentImpl environment) throws FxLoadException;
209: }
|