1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.service.impl.mock;
17
18 import java.util.ArrayList;
19 import java.util.Date;
20 import java.util.LinkedHashMap;
21 import java.util.List;
22 import java.util.Map;
23 import org.kuali.rice.core.api.criteria.QueryByCriteria;
24 import org.kuali.student.common.UUIDHelper;
25 import org.kuali.student.common.mock.MockService;
26 import org.kuali.student.r1.common.dictionary.dto.ObjectStructureDefinition;
27 import org.kuali.student.r2.common.dto.ContextInfo;
28 import org.kuali.student.r2.common.dto.MetaInfo;
29 import org.kuali.student.r2.common.dto.StatusInfo;
30 import org.kuali.student.r2.common.dto.ValidationResultInfo;
31 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
32 import org.kuali.student.r2.common.exceptions.DependentObjectsExistException;
33 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
34 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
35 import org.kuali.student.r2.common.exceptions.MissingParameterException;
36 import org.kuali.student.r2.common.exceptions.OperationFailedException;
37 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
38 import org.kuali.student.r2.common.exceptions.ReadOnlyException;
39 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
40 import org.kuali.student.r2.core.class1.type.dto.TypeInfo;
41 import org.kuali.student.r2.core.proposal.dto.ProposalInfo;
42 import org.kuali.student.r2.core.proposal.service.ProposalService;
43 import org.kuali.student.r2.core.search.dto.SearchRequestInfo;
44 import org.kuali.student.r2.core.search.dto.SearchResultInfo;
45
46 public class ProposalServiceMockImpl implements MockService, ProposalService {
47
48
49
50 private Map<String, ProposalInfo> proposalMap = new LinkedHashMap<String, ProposalInfo>();
51
52 @Override
53 public void clear() {
54 this.proposalMap.clear();
55 }
56
57 @Override
58 public ProposalInfo getProposal(String proposalId, ContextInfo contextInfo)
59 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
60
61 if (!this.proposalMap.containsKey(proposalId)) {
62 throw new OperationFailedException(proposalId);
63 }
64 return new ProposalInfo(this.proposalMap.get(proposalId));
65 }
66
67 @Override
68 public List<ProposalInfo> getProposalsByIds(List<String> proposalIds, ContextInfo contextInfo)
69 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
70
71 List<ProposalInfo> list = new ArrayList<ProposalInfo>();
72 for (String id : proposalIds) {
73 list.add(this.getProposal(id, contextInfo));
74 }
75 return list;
76 }
77
78 @Override
79 public List<ProposalInfo> getProposalsByProposalType(String proposalTypeKey, ContextInfo contextInfo)
80 throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
81
82 List<ProposalInfo> list = new ArrayList<ProposalInfo>();
83 for (ProposalInfo info : proposalMap.values()) {
84 if (proposalTypeKey.equals(info.getTypeKey())) {
85 list.add(new ProposalInfo(info));
86 }
87 }
88 return list;
89 }
90
91 @Override
92 public List<ProposalInfo> getProposalsByReference(String referenceTypeKey, String referenceId, ContextInfo contextInfo)
93 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
94
95 List<ProposalInfo> list = new ArrayList<ProposalInfo>();
96 for (ProposalInfo info : proposalMap.values()) {
97 if (referenceTypeKey.equals(info.getTypeKey())) {
98 if (info.getProposalReference().contains(referenceId)) {
99 list.add(new ProposalInfo(info));
100 }
101 }
102 }
103 return list;
104 }
105
106 @Override
107 public List<ProposalInfo> getProposalsByState(String proposalState, String proposalTypeKey, ContextInfo contextInfo)
108 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
109
110 List<ProposalInfo> list = new ArrayList<ProposalInfo>();
111 for (ProposalInfo info : proposalMap.values()) {
112 if (proposalState.equals(info.getStateKey())) {
113 if (proposalTypeKey.equals(info.getTypeKey())) {
114 list.add(new ProposalInfo(info));
115 }
116 }
117 }
118 return list;
119 }
120
121 @Override
122 public ProposalInfo getProposalByWorkflowId(String workflowId, ContextInfo contextInfo)
123 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
124
125 if (!this.proposalMap.containsKey(workflowId)) {
126 throw new OperationFailedException(workflowId);
127 }
128 return new ProposalInfo(this.proposalMap.get(workflowId));
129 }
130
131 @Override
132 public List<ValidationResultInfo> validateProposal(String validationTypeKey, ProposalInfo proposalInfo, ContextInfo contextInfo)
133 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException {
134
135 return new ArrayList<ValidationResultInfo>();
136 }
137
138 @Override
139 public ProposalInfo createProposal(String proposalTypeKey, ProposalInfo proposalInfo, ContextInfo contextInfo)
140 throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException {
141
142 if (!proposalTypeKey.equals(proposalInfo.getTypeKey())) {
143 throw new InvalidParameterException("The type parameter does not match the type on the info object");
144 }
145 ProposalInfo copy = new ProposalInfo(proposalInfo);
146 if (copy.getId() == null) {
147 copy.setId(UUIDHelper.genStringUUID());
148 }
149 copy.setMeta(newMeta(contextInfo));
150 proposalMap.put(copy.getId(), copy);
151 return new ProposalInfo(copy);
152 }
153
154 @Override
155 public ProposalInfo updateProposal(String proposalId, ProposalInfo proposalInfo, ContextInfo contextInfo)
156 throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException {
157
158 if (!proposalId.equals(proposalInfo.getId())) {
159 throw new InvalidParameterException("The id parameter does not match the id on the info object");
160 }
161 ProposalInfo copy = new ProposalInfo(proposalInfo);
162 ProposalInfo old = this.getProposal(proposalInfo.getId(), contextInfo);
163 if (!old.getMeta().getVersionInd().equals(copy.getMeta().getVersionInd())) {
164 throw new VersionMismatchException(old.getMeta().getVersionInd());
165 }
166 copy.setMeta(updateMeta(copy.getMeta(), contextInfo));
167 this.proposalMap.put(proposalInfo.getId(), copy);
168 return new ProposalInfo(copy);
169 }
170
171 @Override
172 public StatusInfo deleteProposal(String proposalId, ContextInfo contextInfo)
173 throws DoesNotExistException, InvalidParameterException, MissingParameterException, DependentObjectsExistException, OperationFailedException, PermissionDeniedException {
174
175 if (this.proposalMap.remove(proposalId) == null) {
176 throw new OperationFailedException(proposalId);
177 }
178 return newStatus();
179 }
180
181 @Override
182 public List<String> searchForProposalIds(QueryByCriteria criteria, ContextInfo contextInfo)
183 throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
184
185 throw new OperationFailedException("searchForProposalIds has not been implemented");
186 }
187
188 @Override
189 public List<ProposalInfo> searchForProposals(QueryByCriteria criteria, ContextInfo contextInfo)
190 throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
191
192 throw new OperationFailedException("searchForProposals has not been implemented");
193 }
194
195 private StatusInfo newStatus() {
196 StatusInfo status = new StatusInfo();
197 status.setSuccess(Boolean.TRUE);
198 return status;
199 }
200
201 private MetaInfo newMeta(ContextInfo context) {
202 MetaInfo meta = new MetaInfo();
203 meta.setCreateId(context.getPrincipalId());
204 meta.setCreateTime(new Date());
205 meta.setUpdateId(context.getPrincipalId());
206 meta.setUpdateTime(meta.getCreateTime());
207 meta.setVersionInd("0");
208 return meta;
209 }
210
211 private MetaInfo updateMeta(MetaInfo old, ContextInfo context) {
212 MetaInfo meta = new MetaInfo(old);
213 meta.setUpdateId(context.getPrincipalId());
214 meta.setUpdateTime(new Date());
215 meta.setVersionInd((Integer.parseInt(meta.getVersionInd()) + 1) + "");
216 return meta;
217 }
218
219 @Override
220 public List<String> getObjectTypes() {
221 throw new UnsupportedOperationException("Not supported yet.");
222 }
223
224 @Override
225 public ObjectStructureDefinition getObjectStructure(String objectTypeKey) {
226 throw new UnsupportedOperationException("Not supported yet.");
227 }
228
229 @Override
230 public List<TypeInfo> getSearchTypes(ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException {
231 throw new UnsupportedOperationException("Not supported yet.");
232 }
233
234 @Override
235 public TypeInfo getSearchType(String searchTypeKey, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException {
236 throw new UnsupportedOperationException("Not supported yet.");
237 }
238
239 @Override
240 public SearchResultInfo search(SearchRequestInfo searchRequestInfo, ContextInfo contextInfo) throws MissingParameterException, OperationFailedException, PermissionDeniedException {
241 throw new UnsupportedOperationException("Not supported yet.");
242 }
243 }