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.HashMap;
020: import java.util.List;
021: import java.util.Map;
022:
023: import org.kuali.core.service.BusinessObjectService;
024: import org.kuali.kfs.KFSPropertyConstants;
025: import org.kuali.module.kra.routingform.bo.QuestionType;
026: import org.kuali.module.kra.routingform.bo.RoutingFormQuestion;
027: import org.kuali.module.kra.routingform.document.RoutingFormDocument;
028: import org.kuali.module.kra.routingform.service.RoutingFormProjectDetailsService;
029:
030: public class RoutingFormProjectDetailsServiceImpl implements
031: RoutingFormProjectDetailsService {
032:
033: private BusinessObjectService businessObjectService;
034:
035: public void setupOtherProjectDetailsQuestions(
036: RoutingFormDocument routingFormDocument) {
037: List<QuestionType> questionTypes = getAllQuestionTypes();
038: List<RoutingFormQuestion> questions = new ArrayList<RoutingFormQuestion>();
039: for (QuestionType questionType : questionTypes) {
040: questions.add(new RoutingFormQuestion(routingFormDocument
041: .getDocumentNumber(), questionType));
042: }
043: routingFormDocument.setRoutingFormQuestions(questions);
044: }
045:
046: public void reconcileOtherProjectDetailsQuestions(
047: RoutingFormDocument routingFormDocument) {
048: List<RoutingFormQuestion> questions = routingFormDocument
049: .getRoutingFormQuestions();
050: List<RoutingFormQuestion> newQuestions = new ArrayList<RoutingFormQuestion>();
051: List<QuestionType> questionTypes = getAllQuestionTypes();
052: List indexList = new ArrayList();
053: for (RoutingFormQuestion question : questions) {
054: QuestionType currentType = question.getQuestion();
055: if (questionTypes.contains(currentType)) {
056: newQuestions.add(question);
057: indexList.add(questionTypes.indexOf(currentType));
058: }
059: }
060: for (int i = 0; i < questionTypes.size(); i++) {
061: if (!indexList.contains(i)) {
062: newQuestions.add(new RoutingFormQuestion(
063: routingFormDocument.getDocumentNumber(),
064: questionTypes.get(i)));
065: }
066: }
067: routingFormDocument.setRoutingFormQuestions(newQuestions);
068: }
069:
070: private List<QuestionType> getAllQuestionTypes() {
071: Map criteria = new HashMap();
072: criteria
073: .put(
074: KFSPropertyConstants.DATA_OBJECT_MAINTENANCE_CODE_ACTIVE_INDICATOR,
075: true);
076: List<QuestionType> questionTypes = (List<QuestionType>) businessObjectService
077: .findMatchingOrderBy(QuestionType.class, criteria,
078: "questionTypeSortNumber", true);
079: return questionTypes;
080: }
081:
082: public List<String> getNotificationWorkgroups(String documentNumber) {
083: Map fieldValues = new HashMap();
084: fieldValues.put("documentNumber", documentNumber);
085: List<RoutingFormQuestion> questions = new ArrayList<RoutingFormQuestion>(
086: businessObjectService.findMatching(
087: RoutingFormQuestion.class, fieldValues));
088: List<String> workgroups = new ArrayList<String>();
089: for (RoutingFormQuestion question : questions) {
090: if (question.getQuestion() != null) {
091: if (question.getQuestion()
092: .getQuestionTypeWorkgroupName() != null
093: && (question.getQuestion()
094: .getQuestionTypeNotificationValue() != null
095: && question
096: .getYesNoIndicator()
097: .equals(
098: question
099: .getQuestion()
100: .getQuestionTypeNotificationValue()) || question
101: .getQuestion()
102: .getQuestionTypeNotificationValue()
103: .equals("A"))) {
104: workgroups.add(question.getQuestion()
105: .getQuestionTypeWorkgroupName());
106: }
107: }
108: }
109: return workgroups;
110: }
111:
112: /**
113: * Sets the businessObjectService attribute value.
114: *
115: * @param businessObjectService The businessObjectService to set.
116: */
117: public void setBusinessObjectService(
118: BusinessObjectService businessObjectService) {
119: this.businessObjectService = businessObjectService;
120: }
121: }
|