001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.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/ecl2.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 */
016package org.kuali.rice.location.impl.campus;
017
018import org.apache.commons.lang.StringUtils;
019import org.kuali.rice.core.api.exception.RiceIllegalArgumentException;
020import org.kuali.rice.core.api.uif.RemotableAttributeField;
021import org.kuali.rice.kim.api.KimConstants;
022import org.kuali.rice.kim.api.type.KimAttributeField;
023import org.kuali.rice.kns.kim.role.RoleTypeServiceBase;
024
025import java.util.ArrayList;
026import java.util.Collections;
027import java.util.List;
028
029public class CampusRoleTypeServiceImpl extends RoleTypeServiceBase {
030
031    @Override
032    protected List<String> getRequiredAttributes() {
033        final List<String> attrs = new ArrayList<String>(super.getRequiredAttributes());
034        attrs.add(KimConstants.AttributeConstants.CAMPUS_CODE);
035        return Collections.unmodifiableList(attrs);
036    }
037
038    @Override
039    public List<String> getWorkflowRoutingAttributes(String routeLevel) {
040        if (StringUtils.isBlank(routeLevel)) {
041            throw new RiceIllegalArgumentException("routeLevel was blank or null");
042        }
043
044        final List<String> attrs = new ArrayList<String>(super.getWorkflowRoutingAttributes(routeLevel));
045        attrs.add(KimConstants.AttributeConstants.CAMPUS_CODE);
046        return Collections.unmodifiableList(attrs);
047    }
048
049        @Override
050        public List<KimAttributeField> getAttributeDefinitions(String kimTypeId) {
051                if (StringUtils.isBlank(kimTypeId)) {
052            throw new RiceIllegalArgumentException("kimTypeId was null or blank");
053        }
054
055        List<KimAttributeField> map = new ArrayList<KimAttributeField>(super.getAttributeDefinitions(kimTypeId));
056
057                for (int i = 0; i < map.size(); i++) {
058            final KimAttributeField definition = map.get(i);
059                        if (KimConstants.AttributeConstants.CAMPUS_CODE.equals(definition.getAttributeField().getName())) {
060                                KimAttributeField.Builder b = KimAttributeField.Builder.create(definition);
061
062                RemotableAttributeField.Builder fb =  b.getAttributeField();
063                fb.setRequired(true);
064
065                b.setAttributeField(fb);
066                map.set(i, b.build());
067                        }
068                }
069                return Collections.unmodifiableList(map);
070        }
071}