View Javadoc

1   /**
2    * Copyright 2010 The Kuali Foundation Licensed under the Educational Community License, Version 2.0 (the "License"); you may
3    * not use this file except in compliance with the License. You may obtain a copy of the License at
4    * http://www.osedu.org/licenses/ECL-2.0 Unless required by applicable law or agreed to in writing, software distributed
5    * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
6    * implied. See the License for the specific language governing permissions and limitations under the License.
7    */
8   
9   package org.kuali.student.lum.program.server.metadata;
10  
11  import java.util.ArrayList;
12  import java.util.List;
13  
14  import org.kuali.student.common.assembly.data.ConstraintMetadata;
15  import org.kuali.student.common.assembly.dictionary.MetadataServiceImpl;
16  import org.kuali.student.common.dictionary.dto.FieldDefinition;
17  import org.kuali.student.common.dictionary.service.DictionaryService;
18  import org.kuali.student.common.dto.DtoConstants.DtoState;
19  import org.kuali.student.lum.lu.LUConstants;
20  
21  /**
22   * This class provides metadata lookup for service dto objects.
23   * 
24   * @author Kuali Student Team
25   */
26  public class ProgramMetadataServiceImpl extends MetadataServiceImpl {
27  
28      public ProgramMetadataServiceImpl() {
29  		super();
30  	}
31  
32  	public ProgramMetadataServiceImpl(DictionaryService... dictionaryServices) {
33          super(dictionaryServices);
34      }
35  
36      @Override
37      protected List<ConstraintMetadata> getConstraints(FieldDefinition fd, String type, String state, String nextState,
38              String workflowNode, String documentTypeName) {
39          List<ConstraintMetadata> constraints = new ArrayList<ConstraintMetadata>();
40          ConstraintMetadata constraintMetadata = new ConstraintMetadata();
41          //The nextState should not get a defaulted value when we're using Modify Program Proposal functionality.
42          String nextStateValue = nextState;
43          if (!LUConstants.PROPOSAL_TYPE_MAJOR_DISCIPLINE_MODIFY.equals(documentTypeName)) {
44              nextStateValue = getNextState(state);
45          }
46          updateConstraintMetadata(constraintMetadata, fd, type, getNonNullState(state), nextStateValue, workflowNode);
47          constraints.add(constraintMetadata);
48  
49          return constraints;
50      }
51  
52      private String getNonNullState(String state) {
53          return (null == state ? DtoState.DRAFT.toString() : state);
54      }
55  
56      private String getNextState(String state) {
57          if (null == state || DtoState.DRAFT.toString().equalsIgnoreCase(state)) {
58              return DtoState.APPROVED.toString();
59          } else if (DtoState.APPROVED.toString().equalsIgnoreCase(state)) {
60              return DtoState.ACTIVE.toString();
61          } else if (DtoState.ACTIVE.toString().equalsIgnoreCase(state)) {
62              return DtoState.SUPERSEDED.toString();
63          }
64          return null;
65      }
66  }