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