001    /**
002     * Copyright 2005-2011 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     */
016    package org.kuali.rice.location.impl.campus;
017    
018    import org.apache.commons.lang.StringUtils;
019    import org.kuali.rice.core.api.exception.RiceIllegalArgumentException;
020    import org.kuali.rice.krad.service.BusinessObjectService;
021    import org.kuali.rice.location.api.campus.Campus;
022    import org.kuali.rice.location.api.campus.CampusService;
023    import org.kuali.rice.location.api.campus.CampusType;
024    
025    import java.util.ArrayList;
026    import java.util.Collections;
027    import java.util.List;
028    
029    import static java.util.Collections.singletonMap;
030    
031    public class CampusServiceImpl implements CampusService {
032    
033            private BusinessObjectService boService;
034            
035            /**
036         * @see org.kuali.rice.location.api.campus.CampusService#getCampus(String code)
037         */
038            @Override
039            public Campus getCampus(String code) {
040                    if (StringUtils.isBlank(code)) {
041                throw new RiceIllegalArgumentException("code is blank");
042            }
043    
044            CampusBo campusBo = boService.findByPrimaryKey(CampusBo.class, singletonMap("code", code));
045    
046            return CampusBo.to(campusBo);
047            }
048    
049            /**
050         * @see org.kuali.rice.location.api.campus.CampusService#findAllCampuses
051         */
052            @Override
053            public List<Campus> findAllCampuses() {
054                    List<CampusBo> campusBos = (List<CampusBo>) boService.findMatching(CampusBo.class, singletonMap("active", "true"));
055    
056            return this.convertListOfCampusBosToImmutables(campusBos);
057            }
058    
059            /**
060         * @see org.kuali.rice.location.api.campus.CampusService#getCampusType(String code)
061         */
062            @Override
063            public CampusType getCampusType(String code) {
064                    if (StringUtils.isBlank(code)) {
065                throw new RiceIllegalArgumentException("code is blank");
066            }
067    
068                    CampusTypeBo campusTypeBo = boService.findByPrimaryKey(CampusTypeBo.class, singletonMap("code", code));
069    
070            return CampusTypeBo.to(campusTypeBo);
071            }
072    
073            /**
074         * @see org.kuali.rice.location.api.campus.CampusService#findAllCampusTypes
075         */
076            @Override
077            public List<CampusType> findAllCampusTypes() {
078                    List<CampusTypeBo> campusTypeBos = (List<CampusTypeBo>)boService.findMatching(CampusTypeBo.class, singletonMap("active", "true"));
079                    return this.convertListOfCampusTypesBosToImmutables(campusTypeBos);
080            }
081        
082        public void setBusinessObjectService(BusinessObjectService boService) {
083            this.boService = boService;
084        }
085    
086        private List<Campus> convertListOfCampusBosToImmutables(List<CampusBo> campusBos) {
087            ArrayList<Campus> campuses = new ArrayList<Campus>();
088            for (CampusBo bo : campusBos) {
089                Campus campus = CampusBo.to(bo);
090                campuses.add(campus) ;
091            }
092            return Collections.unmodifiableList(campuses);
093        }
094        
095        private List<CampusType> convertListOfCampusTypesBosToImmutables(List<CampusTypeBo> campusTypeBos) {
096            ArrayList<CampusType> campusTypes = new ArrayList<CampusType>();
097            for (CampusTypeBo bo : campusTypeBos) {
098                CampusType campusType = CampusTypeBo.to(bo);
099                campusTypes.add(campusType) ;
100            }
101            return Collections.unmodifiableList(campusTypes);
102        }
103    }