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.krms.impl.repository;
017
018 import java.util.ArrayList;
019 import java.util.Collection;
020 import java.util.Collections;
021 import java.util.HashMap;
022 import java.util.List;
023 import java.util.Map;
024
025 import org.apache.commons.lang.StringUtils;
026 import org.kuali.rice.krad.service.BusinessObjectService;
027 import org.kuali.rice.krms.api.repository.term.TermDefinition;
028 import org.kuali.rice.krms.api.repository.term.TermResolverDefinition;
029 import org.kuali.rice.krms.api.repository.term.TermSpecificationDefinition;
030 import org.springframework.util.CollectionUtils;
031
032 /**
033 * Implementation of {@link TermBoService}
034 *
035 * @author Kuali Rice Team (rice.collab@kuali.org)
036 *
037 */
038 public class TermBoServiceImpl implements TermBoService {
039
040 private BusinessObjectService businessObjectService;
041
042 /**
043 * @param businessObjectService the businessObjectService to set
044 */
045 public void setBusinessObjectService(BusinessObjectService businessObjectService) {
046 this.businessObjectService = businessObjectService;
047 }
048
049 /**
050 * @see org.kuali.rice.krms.impl.repository.TermBoService#getTermSpecificationById(java.lang.String)
051 */
052 @Override
053 public TermSpecificationDefinition getTermSpecificationById(String id) {
054 TermSpecificationBo termSpecificationBo =
055 businessObjectService.findBySinglePrimaryKey(TermSpecificationBo.class, id);
056 return TermSpecificationDefinition.Builder.create(termSpecificationBo).build();
057 }
058
059 /**
060 * @see org.kuali.rice.krms.impl.repository.TermBoService#createTermSpecification(org.kuali.rice.krms.api.repository.term.TermSpecificationDefinition)
061 */
062 @Override
063 public TermSpecificationDefinition createTermSpecification(TermSpecificationDefinition termSpec) {
064 if (!StringUtils.isBlank(termSpec.getId())) {
065 throw new IllegalArgumentException("for creation, TermSpecification.id must be null");
066 }
067
068 TermSpecificationBo termSpecBo = TermSpecificationBo.from(termSpec);
069
070 businessObjectService.save(termSpecBo);
071
072 return TermSpecificationBo.to(termSpecBo);
073 }
074
075 /**
076 * @see org.kuali.rice.krms.impl.repository.TermBoService#createTermDefinition(org.kuali.rice.krms.api.repository.term.TermDefinition)
077 */
078 @Override
079 public TermDefinition createTermDefinition(TermDefinition termDef) {
080 if (!StringUtils.isBlank(termDef.getId())) {
081 throw new IllegalArgumentException("for creation, TermDefinition.id must be null");
082 }
083
084 TermBo termBo = TermBo.from(termDef);
085
086 businessObjectService.save(termBo);
087
088 return TermBo.to(termBo);
089 }
090
091 /**
092 * @see org.kuali.rice.krms.impl.repository.TermBoService#createTermResolver(org.kuali.rice.krms.api.repository.term.TermResolverDefinition)
093 */
094 @Override
095 public TermResolverDefinition createTermResolver(TermResolverDefinition termResolver) {
096 if (!StringUtils.isBlank(termResolver.getId())) {
097 throw new IllegalArgumentException("for creation, TermResolverDefinition.id must be null");
098 }
099
100 TermResolverBo termResolverBo = TermResolverBo.from(termResolver);
101
102 termResolverBo = (TermResolverBo)businessObjectService.save(termResolverBo);
103
104 return TermResolverBo.to(termResolverBo);
105 }
106
107 /**
108 * @see org.kuali.rice.krms.impl.repository.TermBoService#getTermById(java.lang.String)
109 */
110 @Override
111 public TermDefinition getTermById(String id) {
112 TermDefinition result = null;
113
114 if (StringUtils.isBlank(id)) {
115 throw new IllegalArgumentException("id must not be blank or null");
116 }
117 TermBo termBo = businessObjectService.findBySinglePrimaryKey(TermBo.class, id);
118
119 if (termBo != null) {
120 result= TermBo.to(termBo);
121 }
122
123 return result;
124 }
125
126 /**
127 * @see org.kuali.rice.krms.impl.repository.TermBoService#getTermResolverById(java.lang.String)
128 */
129 @Override
130 public TermResolverDefinition getTermResolverById(String id) {
131 TermResolverDefinition result = null;
132
133 if (StringUtils.isBlank(id)) {
134 throw new IllegalArgumentException("id must not be blank or null");
135 }
136 TermResolverBo termResolverBo = businessObjectService.findBySinglePrimaryKey(TermResolverBo.class, id);
137
138 if (termResolverBo != null) {
139 result = TermResolverBo.to(termResolverBo);
140 }
141
142 return result;
143 }
144
145 @Override
146 public List<TermResolverDefinition> getTermResolversByNamespace(String namespace) {
147 List<TermResolverDefinition> results = null;
148
149 if (StringUtils.isBlank(namespace)) {
150 throw new IllegalArgumentException("namespace must not be blank or null");
151 }
152
153 Map fieldValues = new HashMap();
154 fieldValues.put("namespace", namespace);
155
156 Collection<TermResolverBo> termResolverBos = businessObjectService.findMatching(TermResolverBo.class, fieldValues);
157
158 if (!CollectionUtils.isEmpty(termResolverBos)) {
159 results = new ArrayList<TermResolverDefinition>(termResolverBos.size());
160
161 for (TermResolverBo termResolverBo : termResolverBos) if (termResolverBo != null) {
162 results.add(TermResolverBo.to(termResolverBo));
163 }
164 } else {
165 results = Collections.emptyList();
166 }
167
168 return results;
169 }
170 }