001: /*
002: * Copyright 2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.module.kra.routingform.service.impl;
017:
018: import java.util.ArrayList;
019: import java.util.Collection;
020: import java.util.HashMap;
021: import java.util.List;
022: import java.util.Map;
023:
024: import org.kuali.core.service.BusinessObjectService;
025: import org.kuali.kfs.KFSConstants;
026: import org.kuali.kfs.KFSPropertyConstants;
027: import org.kuali.kfs.service.ParameterService;
028: import org.kuali.module.kra.KraConstants;
029: import org.kuali.module.kra.routingform.bo.DueDateType;
030: import org.kuali.module.kra.routingform.bo.PersonRole;
031: import org.kuali.module.kra.routingform.bo.ProjectType;
032: import org.kuali.module.kra.routingform.bo.Purpose;
033: import org.kuali.module.kra.routingform.bo.ResearchTypeCode;
034: import org.kuali.module.kra.routingform.bo.RoutingFormAgency;
035: import org.kuali.module.kra.routingform.bo.RoutingFormDueDateType;
036: import org.kuali.module.kra.routingform.bo.RoutingFormPersonRole;
037: import org.kuali.module.kra.routingform.bo.RoutingFormPersonnel;
038: import org.kuali.module.kra.routingform.bo.RoutingFormProjectType;
039: import org.kuali.module.kra.routingform.bo.RoutingFormPurpose;
040: import org.kuali.module.kra.routingform.bo.RoutingFormResearchTypeCode;
041: import org.kuali.module.kra.routingform.bo.RoutingFormSubmissionType;
042: import org.kuali.module.kra.routingform.bo.SubmissionType;
043: import org.kuali.module.kra.routingform.document.RoutingFormDocument;
044: import org.kuali.module.kra.routingform.service.PurposeService;
045: import org.kuali.module.kra.routingform.service.RoutingFormMainPageService;
046: import org.springframework.transaction.annotation.Transactional;
047:
048: @Transactional
049: public class RoutingFormMainPageServiceImpl implements
050: RoutingFormMainPageService {
051:
052: private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger
053: .getLogger(RoutingFormMainPageServiceImpl.class);
054:
055: private BusinessObjectService businessObjectService;
056: private PurposeService purposeService;
057: private ParameterService parameterService;
058:
059: /**
060: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#setupMainPageMaintainables(org.kuali.module.kra.routingform.document.RoutingFormDocument)
061: */
062: public void setupMainPageMaintainables(
063: RoutingFormDocument routingFormDocument) {
064: this .setupRoutingFormDueDateTypes(routingFormDocument);
065: this .setupRoutingFormSubmissionTypes(routingFormDocument);
066: this .setupRoutingFormProjectTypes(routingFormDocument);
067: this .setupRoutingFormPurposes(routingFormDocument);
068: this .setupRoutingFormResearchTypeCodes(routingFormDocument);
069: this .setupRoutingFormPersonRoles(routingFormDocument);
070: }
071:
072: /**
073: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#getDueDateTypes()
074: */
075: public List<DueDateType> getDueDateTypes() {
076: Map fieldValues = new HashMap();
077: fieldValues
078: .put(
079: KFSPropertyConstants.DATA_OBJECT_MAINTENANCE_CODE_ACTIVE_INDICATOR,
080: KFSConstants.ACTIVE_INDICATOR);
081:
082: return new ArrayList(businessObjectService.findMatching(
083: DueDateType.class, fieldValues));
084: }
085:
086: /**
087: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#getPersonRoles()
088: */
089: public List<PersonRole> getPersonRoles() {
090: Map fieldValues = new HashMap();
091: fieldValues
092: .put(
093: KFSPropertyConstants.DATA_OBJECT_MAINTENANCE_CODE_ACTIVE_INDICATOR,
094: KFSConstants.ACTIVE_INDICATOR);
095:
096: Collection col = businessObjectService.findMatchingOrderBy(
097: PersonRole.class, fieldValues,
098: KFSPropertyConstants.PERSON_ROLE_SORT_NUMBER, true);
099:
100: return new ArrayList(col);
101: }
102:
103: /**
104: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#getProjectTypes()
105: */
106: public List<ProjectType> getProjectTypes() {
107: Map fieldValues = new HashMap();
108: fieldValues
109: .put(
110: KFSPropertyConstants.DATA_OBJECT_MAINTENANCE_CODE_ACTIVE_INDICATOR,
111: KFSConstants.ACTIVE_INDICATOR);
112:
113: Collection col = businessObjectService.findMatchingOrderBy(
114: ProjectType.class, fieldValues,
115: KFSPropertyConstants.SORT_NUMBER, true);
116:
117: return new ArrayList(col);
118: }
119:
120: /**
121: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#getResearchTypeCodes()
122: */
123: public List<ResearchTypeCode> getResearchTypeCodes() {
124: Map fieldValues = new HashMap();
125: fieldValues
126: .put(
127: KFSPropertyConstants.DATA_OBJECT_MAINTENANCE_CODE_ACTIVE_INDICATOR,
128: KFSConstants.ACTIVE_INDICATOR);
129:
130: Collection col = businessObjectService.findMatching(
131: ResearchTypeCode.class, fieldValues);
132:
133: return new ArrayList(col);
134: }
135:
136: /**
137: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#getSubmissionTypes()
138: */
139: public List<SubmissionType> getSubmissionTypes() {
140: Map fieldValues = new HashMap();
141: fieldValues
142: .put(
143: KFSPropertyConstants.DATA_OBJECT_MAINTENANCE_CODE_ACTIVE_INDICATOR,
144: KFSConstants.ACTIVE_INDICATOR);
145:
146: Collection col = businessObjectService.findMatchingOrderBy(
147: SubmissionType.class, fieldValues,
148: KFSPropertyConstants.USER_SORT_NUMBER, true);
149:
150: return new ArrayList(col);
151: }
152:
153: /**
154: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#checkCoPdExistance(java.util.List)
155: */
156: public boolean checkCoPdExistance(
157: List<RoutingFormPersonnel> routingFormPersonnel) {
158: final String CO_PD_ROLE_CODE = parameterService
159: .getParameterValue(
160: RoutingFormDocument.class,
161: KraConstants.PERSON_ROLE_CODE_CO_PROJECT_DIRECTOR);
162:
163: for (RoutingFormPersonnel routingFormPerson : routingFormPersonnel) {
164: if (routingFormPerson.getPersonRoleCode().equals(
165: CO_PD_ROLE_CODE)) {
166: return true;
167: }
168: }
169:
170: return false;
171: }
172:
173: /**
174: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#getProjectDirector(java.util.List)
175: */
176: public RoutingFormPersonnel getProjectDirector(
177: List<RoutingFormPersonnel> routingFormPersonnel) {
178: for (RoutingFormPersonnel person : routingFormPersonnel) {
179: if (person.isProjectDirector()) {
180: return person;
181: }
182: }
183:
184: return null;
185: }
186:
187: /**
188: * @see org.kuali.module.kra.routingform.service.RoutingFormMainPageService#getContactPerson(java.util.List)
189: */
190: public RoutingFormPersonnel getContactPerson(
191: List<RoutingFormPersonnel> routingFormPersonnel) {
192: for (RoutingFormPersonnel person : routingFormPersonnel) {
193: if (person.isContactPerson()) {
194: return person;
195: }
196: }
197:
198: return null;
199: }
200:
201: /**
202: * Setup routing form submission types.
203: *
204: * @param routingFormDocument
205: */
206: private void setupRoutingFormSubmissionTypes(
207: RoutingFormDocument routingFormDocument) {
208: List<SubmissionType> submissionTypes = getSubmissionTypes();
209: List<RoutingFormSubmissionType> routingFormSubmissionTypes = new ArrayList<RoutingFormSubmissionType>();
210: for (SubmissionType submissionType : submissionTypes) {
211: routingFormSubmissionTypes
212: .add(new RoutingFormSubmissionType(
213: routingFormDocument.getDocumentNumber(),
214: submissionType));
215: }
216:
217: routingFormDocument
218: .setRoutingFormSubmissionTypes(routingFormSubmissionTypes);
219: }
220:
221: /**
222: * Setup routing form research type code.
223: *
224: * @param routingFormDocument
225: */
226: private void setupRoutingFormResearchTypeCodes(
227: RoutingFormDocument routingFormDocument) {
228: List<ResearchTypeCode> researchTypeCodes = getResearchTypeCodes();
229: List<RoutingFormResearchTypeCode> routingFormResearchTypeCodes = new ArrayList<RoutingFormResearchTypeCode>();
230: for (ResearchTypeCode researchTypeCode : researchTypeCodes) {
231: routingFormResearchTypeCodes
232: .add(new RoutingFormResearchTypeCode(
233: routingFormDocument.getDocumentNumber(),
234: researchTypeCode));
235: }
236:
237: routingFormDocument
238: .setRoutingFormResearchTypeCodes(routingFormResearchTypeCodes);
239: }
240:
241: /**
242: * Setup routing form purpose.
243: *
244: * @param routingFormDocument
245: */
246: private void setupRoutingFormPurposes(
247: RoutingFormDocument routingFormDocument) {
248: List<Purpose> purposes = purposeService.getPurposes();
249: List<RoutingFormPurpose> routingFormPurposes = new ArrayList<RoutingFormPurpose>();
250: for (Purpose purpose : purposes) {
251: routingFormPurposes.add(new RoutingFormPurpose(
252: routingFormDocument.getDocumentNumber(), purpose));
253: }
254:
255: routingFormDocument.setRoutingFormPurposes(routingFormPurposes);
256: }
257:
258: /**
259: * Setup routing form project type.
260: *
261: * @param routingFormDocument
262: */
263: private void setupRoutingFormProjectTypes(
264: RoutingFormDocument routingFormDocument) {
265: List<ProjectType> projectTypes = getProjectTypes();
266: List<RoutingFormProjectType> routingFormProjectTypes = new ArrayList<RoutingFormProjectType>();
267: for (ProjectType projectType : projectTypes) {
268: routingFormProjectTypes.add(new RoutingFormProjectType(
269: routingFormDocument.getDocumentNumber(),
270: projectType));
271: }
272:
273: routingFormDocument
274: .setRoutingFormProjectTypes(routingFormProjectTypes);
275: }
276:
277: /**
278: * Setup routing form person role.
279: *
280: * @param routingFormDocument
281: */
282: private void setupRoutingFormPersonRoles(
283: RoutingFormDocument routingFormDocument) {
284: List<PersonRole> personRoles = getPersonRoles();
285: List<RoutingFormPersonRole> routingFormPersonRoles = new ArrayList<RoutingFormPersonRole>();
286: for (PersonRole personRole : personRoles) {
287: routingFormPersonRoles
288: .add(new RoutingFormPersonRole(routingFormDocument
289: .getDocumentNumber(), personRole));
290: }
291:
292: routingFormDocument
293: .setRoutingFormPersonRoles(routingFormPersonRoles);
294: }
295:
296: /**
297: * Setup routing form due date types.
298: *
299: * @param routingFormDocument
300: */
301: private void setupRoutingFormDueDateTypes(
302: RoutingFormDocument routingFormDocument) {
303: List<DueDateType> dueDateTypes = getDueDateTypes();
304: List<RoutingFormDueDateType> routingFormDueDateTypes = new ArrayList<RoutingFormDueDateType>();
305: for (DueDateType dueDateType : dueDateTypes) {
306: routingFormDueDateTypes.add(new RoutingFormDueDateType(
307: routingFormDocument.getDocumentNumber(),
308: dueDateType));
309: }
310:
311: RoutingFormAgency routingFormAgency = new RoutingFormAgency();
312: routingFormAgency
313: .setRoutingFormDueDateTypes(routingFormDueDateTypes);
314: routingFormDocument.setRoutingFormAgency(routingFormAgency);
315: }
316:
317: /**
318: * Setter for BusinessObjectService property.
319: *
320: * @param businessObjectService businessObjectService
321: */
322: public void setBusinessObjectService(
323: BusinessObjectService businessObjectService) {
324: this .businessObjectService = businessObjectService;
325: }
326:
327: /**
328: * Setter for PurposeService property.
329: *
330: * @param purposeService purposeService
331: */
332: public void setPurposeService(PurposeService purposeService) {
333: this .purposeService = purposeService;
334: }
335:
336: public void setParameterService(ParameterService parameterService) {
337: this.parameterService = parameterService;
338: }
339:
340: }
|