001 /*
002 * Copyright 2005-2007 The Kuali Foundation
003 *
004 *
005 * Licensed under the Educational Community License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.opensource.org/licenses/ecl2.php
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package mocks;
018
019 import java.io.InputStream;
020 import java.sql.Timestamp;
021 import java.util.ArrayList;
022 import java.util.Collection;
023 import java.util.HashMap;
024 import java.util.Iterator;
025 import java.util.List;
026 import java.util.Map;
027
028 import org.jdom.Element;
029 import org.kuali.rice.core.api.impex.ExportDataSet;
030 import org.kuali.rice.kew.doctype.bo.DocumentType;
031 import org.kuali.rice.kew.rule.RuleBaseValues;
032 import org.kuali.rice.kew.rule.RuleDelegation;
033 import org.kuali.rice.kew.rule.RuleResponsibility;
034 import org.kuali.rice.kew.rule.service.RuleService;
035 import org.kuali.rice.kew.util.KEWConstants;
036 import org.kuali.rice.kim.api.entity.principal.PrincipalContract;
037
038
039
040
041 public class MockRuleServiceImpl implements RuleService {
042
043 Map rules = new HashMap();
044 Map<String, RuleBaseValues> rulesByName = new HashMap<String, RuleBaseValues>();
045 Map responsibilitiesByKey = new HashMap();
046 Map responsibilitiesById = new HashMap();
047 Map responsibilitiesByReviewer = new HashMap();
048 Map rulesByDocumentId = new HashMap();
049
050 public RuleBaseValues getParentRule(Long ruleBaseValuesId) {
051 return null;
052 }
053 public List fetchAllCurrentRulesForTemplateDocCombination(String ruleTemplateName, String documentType, boolean ignoreCache) {
054 return null;
055 }
056 public String isLockedForRouting(Long currentRuleBaseValuesId) {
057 return null;
058 }
059 public String routeRuleWithDelegate(String documentId, RuleBaseValues parentRule, RuleBaseValues delegateRule, PrincipalContract principal, String annotation, boolean blanketApprove) throws Exception {
060 return null;
061 }
062 public List search(String docTypeName, Long ruleId, Long ruleTemplateId, String ruleDescription, String workgroupId, String principalId, Boolean delegateRule, Boolean activeInd, Map extensionValues, String workflowIdDirective) {
063 return null;
064 }
065 public List search(String docTypeName, String ruleTemplateName, String ruleDescription, String groupId, String principalId, Boolean workgroupMember, Boolean delegateRule, Boolean activeInd, Map extensionValues, Collection<String> actionRequestCodes) {
066 return null;
067 }
068 public void notifyCacheOfRuleChange(RuleBaseValues rule, DocumentType documentType) {
069 }
070
071
072
073 public void flushRuleCache() {
074 // TODO ewestfal - THIS METHOD NEEDS JAVADOCS
075
076 }
077 public RuleBaseValues getRuleByName(String name) {
078 return rulesByName.get(name);
079 }
080 public void addRule(RuleBaseValues rule) {
081 rules.put(rule.getRuleBaseValuesId(), rule);
082 if (rule.getName() != null) {
083 rulesByName.put(rule.getName(), rule);
084 }
085
086 List routeHeaderList = null;
087 if(rulesByDocumentId.get(rule.getDocumentId()) != null){
088 routeHeaderList = (List)rulesByDocumentId.get(rule.getDocumentId());
089 } else {
090 routeHeaderList = new ArrayList();
091 }
092 routeHeaderList.add(rule);
093 rulesByDocumentId.put(rule.getDocumentId(), routeHeaderList);
094
095 for (Iterator iter = rule.getResponsibilities().iterator(); iter.hasNext();) {
096 RuleResponsibility resp = (RuleResponsibility) iter.next();
097 responsibilitiesByKey.put(resp.getRuleResponsibilityKey(), resp);
098 responsibilitiesById.put(resp.getResponsibilityId(), resp);
099
100 List respList = null;
101 if(responsibilitiesByReviewer.get(resp.getRuleResponsibilityName()) != null){
102 respList = (List)responsibilitiesByReviewer.get(resp.getRuleResponsibilityName());
103 } else {
104 respList = new ArrayList();
105 }
106 respList.add(resp);
107 responsibilitiesByReviewer.put(resp.getRuleResponsibilityName(), respList);
108 }
109 }
110
111 public void delete(Long ruleBaseValuesId) {
112 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
113 }
114
115 public RuleBaseValues findRuleBaseValuesByName(String name) {
116 return null;
117 }
118
119 public RuleBaseValues findRuleBaseValuesById(Long ruleBaseValuesId) {
120 return (RuleBaseValues) rules.get(ruleBaseValuesId);
121 }
122
123 public List search(String docTypeName, Long ruleTemplateId, Long workgroupId, String workflowId, Boolean delegateRule, Boolean activeInd, Map extensionValues) {
124 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
125 }
126
127 public RuleResponsibility findRuleResponsibility(Long responsibilityId) {
128 return (RuleResponsibility) responsibilitiesById.get(responsibilityId);
129 }
130
131 public void deleteRuleResponsibilityById(Long ruleResponsibilityId) {
132 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
133 }
134
135 public RuleResponsibility findByRuleResponsibilityId(Long ruleResponsibilityId) {
136 return (RuleResponsibility) responsibilitiesByKey.get(ruleResponsibilityId);
137 }
138
139 public List fetchAllCurrentRulesForTemplateDocCombination(String ruleTemplateName, String documentType) {
140 List ruleBaseValues = new ArrayList();
141
142 for (Iterator iter = rules.values().iterator(); iter.hasNext();) {
143 RuleBaseValues rule = (RuleBaseValues) iter.next();
144 if(rule.getRuleTemplate().getName().equals(ruleTemplateName) && rule.getDocTypeName().equals(documentType)){
145 ruleBaseValues.add(rule);
146 }
147 }
148 return ruleBaseValues;
149 }
150
151 public List findByDocumentId(String documentId) {
152 return (List) rulesByDocumentId.get(documentId);
153 }
154
155 public void makeCurrent(String documentId) {
156 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
157 }
158
159 public void makeCurrent(RuleBaseValues rule, boolean isRetroactiveUpdatePermitted) {
160 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
161 }
162
163 public void makeCurrent(RuleDelegation ruleDelegation, boolean isRetroactiveUpdatePermitted) {
164 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
165 }
166
167 public List findRuleBaseValuesByResponsibilityReviewer(String reviewerName, String type) {
168 List rules = new ArrayList();
169 for (Iterator iter = ((List) responsibilitiesByReviewer.get(reviewerName)).iterator(); iter.hasNext();) {
170 RuleResponsibility resp = (RuleResponsibility) iter.next();
171 if(resp.getRuleResponsibilityType().equals(type)){
172 rules.add(resp.getRuleBaseValues());
173 }
174 }
175 return rules;
176 }
177
178 public List fetchAllRules(boolean currentRules) {
179 return new ArrayList(rules.values());
180 }
181
182 public void saveDeactivationDate(RuleBaseValues rule) {
183 // do anything?
184 }
185
186 public void validate2(RuleBaseValues ruleBaseValues, RuleDelegation ruleDelegation, List errors) throws Exception {
187 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
188 }
189
190 public List fetchAllCurrentRulesForTemplateDocCombination(String ruleTemplateName, String documentType, Timestamp effectiveDate) {
191 return null;
192 }
193 public RuleBaseValues findDefaultRuleByRuleTemplateId(Long ruleTemplateId) {
194 return null;
195 }
196
197 public void save2(RuleBaseValues ruleBaseValues) throws Exception {
198 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
199 }
200
201 public void loadXml(InputStream inputStream, String principalId) {
202 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
203 }
204 public Element export(ExportDataSet dataSet) {
205 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
206 }
207 @Override
208 public boolean supportPrettyPrint() {
209 return true;
210 }
211 public void notifyCacheOfDocumentTypeChange(DocumentType documentType) {
212
213 }
214 public String getRuleDocmentTypeName(List rules) {
215 return KEWConstants.DEFAULT_RULE_DOCUMENT_NAME;
216 }
217 /**
218 * This overridden method ...
219 *
220 * @see org.kuali.rice.kew.rule.service.RuleService#findRuleBaseValuesByResponsibilityReviewerTemplateDoc(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
221 */
222 public List findRuleBaseValuesByResponsibilityReviewerTemplateDoc(String ruleTemplateName, String documentType, String reviewerName, String type) {
223 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
224 }
225 public Long getDuplicateRuleId(RuleBaseValues rule) {
226 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
227 }
228 public Long findResponsibilityIdForRule(String ruleName,
229 String ruleResponsibilityName, String ruleResponsibilityType) {
230 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
231 }
232 public RuleBaseValues saveRule(RuleBaseValues rule,
233 boolean isRetroactiveUpdatePermitted) {
234 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
235 }
236 public RuleDelegation saveRuleDelegation(RuleDelegation ruleDelegation,
237 boolean isRetroactiveUpdatePermitted) {
238 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
239 }
240 public List<RuleDelegation> saveRuleDelegations(
241 List<RuleDelegation> ruleDelegationsToSave, boolean isRetroactiveUpdatePermitted) {
242 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
243 }
244 public List<RuleBaseValues> saveRules(List<RuleBaseValues> rulesToSave, boolean isRetroactiveUpdatePermitted) {
245 throw new UnsupportedOperationException("not implemented in MockRuleServiceImpl");
246 }
247
248
249
250
251 }