001: package org.enhydra.shark;
002:
003: import java.util.ArrayList;
004: import java.util.HashMap;
005: import java.util.List;
006: import java.util.Map;
007:
008: import org.enhydra.shark.api.client.wfmc.wapi.WMSessionHandle;
009: import org.enhydra.shark.api.client.wfmodel.WfProcessMgr;
010: import org.enhydra.shark.api.client.wfmodel.process_mgr_stateType;
011: import org.enhydra.shark.api.client.wfservice.WfProcessMgrIterator;
012: import org.enhydra.shark.api.common.SharkConstants;
013: import org.enhydra.shark.api.internal.instancepersistence.ProcessMgrPersistenceObject;
014: import org.enhydra.shark.api.internal.scripting.Evaluator;
015:
016: /**
017: * Iterator for engine's process managers. The following names may be used for
018: * expressions: packageId, processDefinitionId, name, category, createdTime_ms, version,
019: * enabled.
020: *
021: * @author Sasa Bojanic
022: */
023: public class WfProcessMgrIteratorWrapper extends BaseIteratorWrapper
024: implements WfProcessMgrIterator {
025:
026: protected WfProcessMgrIteratorWrapper(WMSessionHandle shandle)
027: throws Exception {
028: super (shandle);
029: }
030:
031: public WfProcessMgr get_next_object() throws Exception {
032: long tStamp = SharkUtilities.methodStart(shandle,
033: "WfProcessMgrIteratorWrapper.get_next_object");
034:
035: try {
036: checkSecurity("get_next_object", null);
037:
038: return (WfProcessMgr) super .getNextObject();
039: } finally {
040: SharkUtilities
041: .methodEnd(
042: shandle,
043: tStamp,
044: "WfProcessMgrIteratorWrapper.get_next_object",
045: this );
046: }
047: }
048:
049: public WfProcessMgr get_previous_object() throws Exception {
050: long tStamp = SharkUtilities.methodStart(shandle,
051: "WfProcessMgrIteratorWrapper.get_previous_object");
052: try {
053: checkSecurity("get_previous_object", null);
054:
055: return (WfProcessMgr) super .getPreviousObject();
056: } finally {
057: SharkUtilities.methodEnd(shandle, tStamp,
058: "WfProcessMgrIteratorWrapper.get_previous_object",
059: this );
060: }
061: }
062:
063: public WfProcessMgr[] get_next_n_sequence(int max_number)
064: throws Exception {
065: long tStamp = SharkUtilities.methodStart(shandle,
066: "WfProcessMgrIteratorWrapper.get_next_n_sequence");
067:
068: try {
069: checkSecurity("get_next_n_sequence", null);
070:
071: WfProcessMgr[] ret = null;
072: List l = super .getNextNSequence(max_number);
073: ret = new WfProcessMgr[l.size()];
074: l.toArray(ret);
075: return ret;
076: } finally {
077: SharkUtilities.methodEnd(shandle, tStamp,
078: "WfProcessMgrIteratorWrapper.get_next_n_sequence",
079: this );
080: }
081:
082: }
083:
084: public WfProcessMgr[] get_previous_n_sequence(int max_number)
085: throws Exception {
086: long tStamp = SharkUtilities.methodStart(shandle,
087: "WfProcessMgrIteratorWrapper.get_previous_n_sequence");
088:
089: try {
090: checkSecurity("get_previous_n_sequence", null);
091:
092: WfProcessMgr[] ret = null;
093: List l = super .getPreviousNSequence(max_number);
094: ret = new WfProcessMgr[l.size()];
095: l.toArray(ret);
096: return ret;
097: } finally {
098: SharkUtilities
099: .methodEnd(
100: shandle,
101: tStamp,
102: "WfProcessMgrIteratorWrapper.get_previous_n_sequence",
103: this );
104: }
105:
106: }
107:
108: protected void fillObjectList() throws Exception {
109: if (objectList != null)
110: return;
111:
112: List mgrs = new ArrayList();
113: List l = SharkEngineManager.getInstance()
114: .getInstancePersistenceManager().getProcessMgrsWhere(
115: shandle, sqlWhere, startAt, limit);
116:
117: Evaluator evaluator = SharkEngineManager.getInstance()
118: .getScriptingManager().getEvaluator(shandle,
119: queryGrammar);
120:
121: for (int i = 0; i < l.size(); i++) {
122: ProcessMgrPersistenceObject po = (ProcessMgrPersistenceObject) l
123: .get(i);
124: boolean toAdd = true;
125: if (eval) {
126: Map context = new HashMap();
127: context.put("name", po.getName());
128:
129: if (ignoreUsedContext
130: || (!ignoreUsedContext && 0 <= usedContext
131: .indexOf(SharkConstants.MGR_CATEGORY))) {
132: String cat = SharkUtilities.getWorkflowProcess(
133: shandle, po.getPackageId(),
134: po.getVersion(),
135: po.getProcessDefinitionId())
136: .getAccessLevel();
137: context.put(SharkConstants.MGR_CATEGORY, cat);
138: }
139: if (ignoreUsedContext
140: || (!ignoreUsedContext && 0 <= usedContext
141: .indexOf(SharkConstants.MGR_VERSION))) {
142: context.put(SharkConstants.MGR_VERSION, po
143: .getVersion());
144: }
145: if (ignoreUsedContext
146: || (!ignoreUsedContext && 0 <= usedContext
147: .indexOf(SharkConstants.MGR_CREATED_TIME_MS))) {
148: context.put(SharkConstants.MGR_CREATED_TIME_MS,
149: new Long(po.getCreated()));
150: }
151: if (ignoreUsedContext
152: || (!ignoreUsedContext && 0 <= usedContext
153: .indexOf(SharkConstants.MGR_PACKAGE_ID))) {
154: context.put(SharkConstants.MGR_PACKAGE_ID, po
155: .getPackageId());
156: }
157: if (ignoreUsedContext
158: || (!ignoreUsedContext && 0 <= usedContext
159: .indexOf(SharkConstants.MGR_PROCESS_DEFINITION_ID))) {
160: context.put(
161: SharkConstants.MGR_PROCESS_DEFINITION_ID,
162: po.getProcessDefinitionId());
163: }
164: if (ignoreUsedContext
165: || (!ignoreUsedContext && 0 <= usedContext
166: .indexOf(SharkConstants.MGR_ENABLED))) {
167: context
168: .put(
169: SharkConstants.MGR_ENABLED,
170: new Boolean(
171: po.getState() == process_mgr_stateType._enabled));
172: }
173: toAdd = evaluator.evaluateCondition(shandle, null,
174: null, queryExpression, context);
175: }
176: if (toAdd) {
177: mgrs.add(SharkEngineManager.getInstance()
178: .getObjectFactory().createProcessMgrWrapper(
179: shandle, po.getName()));
180: }
181: }
182: setObjectList(mgrs);
183: }
184:
185: }
|