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.criteria.CriteriaLookupService; 020import org.kuali.rice.core.api.criteria.GenericQueryResults; 021import org.kuali.rice.core.api.criteria.LookupCustomizer; 022import org.kuali.rice.core.api.criteria.QueryByCriteria; 023import org.kuali.rice.core.api.exception.RiceIllegalArgumentException; 024import org.kuali.rice.kim.api.group.GroupQueryResults; 025import org.kuali.rice.krad.service.BusinessObjectService; 026import org.kuali.rice.location.api.campus.Campus; 027import org.kuali.rice.location.api.campus.CampusQueryResults; 028import org.kuali.rice.location.api.campus.CampusService; 029import org.kuali.rice.location.api.campus.CampusType; 030import org.kuali.rice.location.api.campus.CampusTypeQueryResults; 031 032import javax.jws.WebParam; 033import java.util.ArrayList; 034import java.util.Collections; 035import java.util.List; 036 037import static java.util.Collections.singletonMap; 038 039public class CampusServiceImpl implements CampusService { 040 041 private BusinessObjectService boService; 042 private CriteriaLookupService criteriaLookupService; 043 044 /** 045 * @see org.kuali.rice.location.api.campus.CampusService#getCampus(String code) 046 */ 047 @Override 048 public Campus getCampus(String code) { 049 if (StringUtils.isBlank(code)) { 050 throw new RiceIllegalArgumentException("code is blank"); 051 } 052 053 CampusBo campusBo = boService.findByPrimaryKey(CampusBo.class, singletonMap("code", code)); 054 055 return CampusBo.to(campusBo); 056 } 057 058 /** 059 * @see org.kuali.rice.location.api.campus.CampusService#findAllCampuses 060 */ 061 @Override 062 public List<Campus> findAllCampuses() { 063 List<CampusBo> campusBos = (List<CampusBo>) boService.findMatching(CampusBo.class, singletonMap("active", "true")); 064 065 return this.convertListOfCampusBosToImmutables(campusBos); 066 } 067 068 /** 069 * @see org.kuali.rice.location.api.campus.CampusService#getCampusType(String code) 070 */ 071 @Override 072 public CampusType getCampusType(String code) { 073 if (StringUtils.isBlank(code)) { 074 throw new RiceIllegalArgumentException("code is blank"); 075 } 076 077 CampusTypeBo campusTypeBo = boService.findByPrimaryKey(CampusTypeBo.class, singletonMap("code", code)); 078 079 return CampusTypeBo.to(campusTypeBo); 080 } 081 082 /** 083 * @see org.kuali.rice.location.api.campus.CampusService#findAllCampusTypes 084 */ 085 @Override 086 public List<CampusType> findAllCampusTypes() { 087 List<CampusTypeBo> campusTypeBos = (List<CampusTypeBo>)boService.findMatching(CampusTypeBo.class, singletonMap("active", "true")); 088 return this.convertListOfCampusTypesBosToImmutables(campusTypeBos); 089 } 090 091 @Override 092 public CampusQueryResults findCampuses(QueryByCriteria queryByCriteria) throws RiceIllegalArgumentException { 093 incomingParamCheck(queryByCriteria, "queryByCriteria"); 094 095 GenericQueryResults<CampusBo> results = criteriaLookupService.lookup(CampusBo.class, queryByCriteria); 096 097 CampusQueryResults.Builder builder = CampusQueryResults.Builder.create(); 098 builder.setMoreResultsAvailable(results.isMoreResultsAvailable()); 099 builder.setTotalRowCount(results.getTotalRowCount()); 100 101 final List<Campus.Builder> ims = new ArrayList<Campus.Builder>(); 102 for (CampusBo bo : results.getResults()) { 103 ims.add(Campus.Builder.create(bo)); 104 } 105 106 builder.setResults(ims); 107 return builder.build(); 108 } 109 110 @Override 111 public CampusTypeQueryResults findCampusTypes(QueryByCriteria queryByCriteria) throws RiceIllegalArgumentException { 112 incomingParamCheck(queryByCriteria, "query"); 113 114 GenericQueryResults<CampusTypeBo> results = criteriaLookupService.lookup(CampusTypeBo.class, queryByCriteria); 115 116 CampusTypeQueryResults.Builder builder = CampusTypeQueryResults.Builder.create(); 117 builder.setMoreResultsAvailable(results.isMoreResultsAvailable()); 118 builder.setTotalRowCount(results.getTotalRowCount()); 119 120 final List<CampusType.Builder> ims = new ArrayList<CampusType.Builder>(); 121 for (CampusTypeBo bo : results.getResults()) { 122 ims.add(CampusType.Builder.create(bo)); 123 } 124 125 builder.setResults(ims); 126 return builder.build(); 127 } 128 129 public void setBusinessObjectService(BusinessObjectService boService) { 130 this.boService = boService; 131 } 132 133 private List<Campus> convertListOfCampusBosToImmutables(List<CampusBo> campusBos) { 134 ArrayList<Campus> campuses = new ArrayList<Campus>(); 135 for (CampusBo bo : campusBos) { 136 Campus campus = CampusBo.to(bo); 137 campuses.add(campus) ; 138 } 139 return Collections.unmodifiableList(campuses); 140 } 141 142 private List<CampusType> convertListOfCampusTypesBosToImmutables(List<CampusTypeBo> campusTypeBos) { 143 ArrayList<CampusType> campusTypes = new ArrayList<CampusType>(); 144 for (CampusTypeBo bo : campusTypeBos) { 145 CampusType campusType = CampusTypeBo.to(bo); 146 campusTypes.add(campusType) ; 147 } 148 return Collections.unmodifiableList(campusTypes); 149 } 150 151 private void incomingParamCheck(Object object, String name) { 152 if (object == null) { 153 throw new RiceIllegalArgumentException(name + " was null"); 154 } else if (object instanceof String 155 && StringUtils.isBlank((String) object)) { 156 throw new RiceIllegalArgumentException(name + " was blank"); 157 } 158 } 159 160 /** 161 * Sets the criteriaLookupService attribute value. 162 * 163 * @param criteriaLookupService The criteriaLookupService to set. 164 */ 165 public void setCriteriaLookupService(final CriteriaLookupService criteriaLookupService) { 166 this.criteriaLookupService = criteriaLookupService; 167 } 168}