001 /** 002 * Copyright 2010 The Kuali Foundation Licensed under the Educational Community License, Version 2.0 (the "License"); you may 003 * not use this file except in compliance with the License. You may obtain a copy of the License at 004 * http://www.osedu.org/licenses/ECL-2.0 Unless required by applicable law or agreed to in writing, software distributed 005 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 006 * implied. See the License for the specific language governing permissions and limitations under the License. 007 */ 008 009 package org.kuali.student.lum.program.server.metadata; 010 011 import java.util.ArrayList; 012 import java.util.List; 013 014 import org.kuali.student.r1.common.assembly.data.ConstraintMetadata; 015 import org.kuali.student.r1.common.assembly.dictionary.MetadataServiceImpl; 016 import org.kuali.student.r1.common.dictionary.dto.FieldDefinition; 017 import org.kuali.student.r1.common.dictionary.service.DictionaryService; 018 019 import org.kuali.student.r2.common.dto.ContextInfo; 020 import org.kuali.student.r2.common.dto.DtoConstants.DtoState; 021 import org.kuali.student.r2.lum.clu.CLUConstants; 022 023 024 /** 025 * This class provides metadata lookup for service dto objects. 026 * 027 * @author Kuali Student Team 028 */ 029 public class ProgramMetadataServiceImpl extends MetadataServiceImpl { 030 031 public ProgramMetadataServiceImpl() { 032 super(); 033 } 034 035 public ProgramMetadataServiceImpl(DictionaryService... dictionaryServices) { 036 super(dictionaryServices); 037 } 038 039 040 protected List<ConstraintMetadata> getConstraints(FieldDefinition fd, String type, String state, String nextState, 041 String workflowNode, String documentTypeName) { 042 List<ConstraintMetadata> constraints = new ArrayList<ConstraintMetadata>(); 043 ConstraintMetadata constraintMetadata = new ConstraintMetadata(); 044 //The nextState should not get a defaulted value when we're using Modify Program Proposal functionality. 045 String nextStateValue = nextState; 046 if (!CLUConstants.PROPOSAL_TYPE_MAJOR_DISCIPLINE_MODIFY.equals(documentTypeName)) { 047 nextStateValue = getNextState(state); 048 } 049 050 updateConstraintMetadata(constraintMetadata, fd, type, getNonNullState(state), nextStateValue, workflowNode); 051 constraints.add(constraintMetadata); 052 053 return constraints; 054 } 055 056 private String getNonNullState(String state) { 057 return (null == state ? DtoState.DRAFT.toString() : state); 058 } 059 060 private String getNextState(String state) { 061 if (null == state || DtoState.DRAFT.toString().equalsIgnoreCase(state)) { 062 return DtoState.APPROVED.toString(); 063 } else if (DtoState.APPROVED.toString().equalsIgnoreCase(state)) { 064 return DtoState.ACTIVE.toString(); 065 } else if (DtoState.ACTIVE.toString().equalsIgnoreCase(state)) { 066 return DtoState.SUPERSEDED.toString(); 067 } 068 return null; 069 } 070 }