001 /* 002 * Copyright 2006-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.test; 017 018 import org.apache.bcel.generic.NEW; 019 import org.kuali.rice.krad.service.BusinessObjectService; 020 import org.kuali.rice.krad.service.KRADServiceLocator; 021 import org.kuali.rice.krms.api.repository.context.ContextDefinition; 022 import org.kuali.rice.krms.api.repository.term.TermSpecificationDefinition; 023 import org.kuali.rice.krms.api.repository.type.KrmsAttributeDefinition; 024 import org.kuali.rice.krms.api.repository.type.KrmsAttributeDefinition.Builder; 025 import org.kuali.rice.krms.api.repository.type.KrmsTypeAttribute; 026 import org.kuali.rice.krms.api.repository.type.KrmsTypeDefinition; 027 import org.kuali.rice.krms.api.repository.type.KrmsTypeRepositoryService; 028 import org.kuali.rice.krms.impl.repository.ContextAttributeBo; 029 import org.kuali.rice.krms.impl.repository.ContextBoService; 030 import org.kuali.rice.krms.impl.repository.KrmsAttributeDefinitionService; 031 import org.kuali.rice.krms.impl.repository.TermBoService; 032 import org.kuali.rice.test.BaselineTestCase.BaselineMode; 033 import org.kuali.rice.test.BaselineTestCase.Mode; 034 035 import java.util.ArrayList; 036 import java.util.Collection; 037 import java.util.Collections; 038 import java.util.HashMap; 039 import java.util.List; 040 import java.util.Map; 041 042 @BaselineMode(Mode.ROLLBACK) 043 public abstract class KSLumAbstractBoTest extends KRMSTestCase { 044 045 private static final String ATTR_NUMBER_OF_CREDITS = "Number of Credits"; 046 private static final String ATTR_DEPT_ORG_NUMBER = "Dept Org Number"; 047 private static final String ATTR_PROPOSED_COURSE = "Proposed Course"; 048 private static final String ATTR_APPROVED_COURSE = "Approved Course"; 049 protected ContextBoService contextRepository; 050 protected KrmsTypeRepositoryService krmsTypeRepository; 051 protected KrmsAttributeDefinitionService krmsAttributeDefinitionService; 052 protected Map<String, KrmsAttributeDefinition> ksLumAttributeDefinitions = new HashMap<String, KrmsAttributeDefinition>(); 053 054 private TermBoService termBoService; 055 056 protected BusinessObjectService getBoService() { 057 return KRADServiceLocator.getBusinessObjectService(); 058 } 059 060 protected ContextDefinition createContextDefinition(String nameSpace, String name, 061 Map<String, String> contextAttributes) { 062 // Attributes for context; 063 List<KrmsTypeAttribute.Builder> contextAttributeBuilders = new ArrayList<KrmsTypeAttribute.Builder>(); 064 int contextAttrSequenceIndex = 0; 065 066 List<KrmsAttributeDefinition> attributeDefintions = new ArrayList<KrmsAttributeDefinition>(); 067 068 createAllLumAttributeDefinitions(nameSpace); 069 070 KrmsTypeDefinition krmsContextTypeDefinition = createContextType(nameSpace); 071 072 ContextDefinition contextDefinition = createContext(nameSpace, name, 073 krmsContextTypeDefinition); 074 075 // Context Attribute 076 // TODO: do this fur eel 077 for (KrmsAttributeDefinition contextTypeAttributeDefinition : attributeDefintions) { 078 ContextAttributeBo contextAttribute = new ContextAttributeBo(); 079 contextAttribute.setAttributeDefinitionId(contextTypeAttributeDefinition.getId()); 080 contextAttribute.setContextId(contextDefinition.getId()); 081 contextAttribute.setValue(contextAttributes.get(contextTypeAttributeDefinition.getName())); 082 getBoService().save(contextAttribute); 083 } 084 085 return contextDefinition; 086 } 087 088 public ContextDefinition createContext(String nameSpace, String name, 089 KrmsTypeDefinition krmsContextTypeDefinition) { 090 // Context 091 ContextDefinition.Builder contextBuilder = ContextDefinition.Builder.create(nameSpace, name); 092 // TODO NINA somthing wrong with Type contextBuilder.setTypeId(krmsContextTypeDefinition.getId()); 093 contextBuilder.setTypeId("T1003"); 094 ContextDefinition contextDefinition = contextBuilder.build(); 095 contextDefinition = contextRepository.createContext(contextDefinition); 096 return contextDefinition; 097 } 098 099 protected KrmsTypeDefinition createContextType(String nameSpace) { 100 // KrmsType for context 101 KrmsTypeDefinition.Builder krmsContextTypeDefnBuilder = KrmsTypeDefinition.Builder.create("KSLumContextType-Course", nameSpace); 102 krmsContextTypeDefnBuilder.setServiceName("myKSService"); 103 // 104 int contextAttrSequenceIndex = 0; 105 List<KrmsTypeAttribute.Builder> contextAttributeBuilders = new ArrayList<KrmsTypeAttribute.Builder>(); 106 for (KrmsAttributeDefinition attrDef : ksLumAttributeDefinitions.values()) { 107 contextAttributeBuilders.add(KrmsTypeAttribute.Builder.create(null, attrDef.getId(), 108 contextAttrSequenceIndex)); 109 contextAttrSequenceIndex += 1; 110 111 } 112 krmsContextTypeDefnBuilder.setAttributes(contextAttributeBuilders); 113 // 114 KrmsTypeDefinition krmsContextTypeDefinition = krmsContextTypeDefnBuilder.build(); 115 krmsContextTypeDefinition = krmsTypeRepository.createKrmsType(krmsContextTypeDefinition); 116 return krmsContextTypeDefinition; 117 } 118 119 120 121 protected void createAllLumAttributeDefinitions( 122 String nameSpace) { 123 // Create all the attributes... 124 createNumberOfCreditsAttributeDefinition(nameSpace); 125 createDeptOrgNumberAttributeDefinition(nameSpace); 126 createProposedCourseAttributeDefinition(nameSpace); 127 createApprovedCourseAttributeDefinition(nameSpace); 128 } 129 130 private void createNumberOfCreditsAttributeDefinition( 131 String nameSpace) { 132 KrmsAttributeDefinition.Builder numberOfCreditsBuilder = KrmsAttributeDefinition.Builder.create(null, ATTR_NUMBER_OF_CREDITS, nameSpace); 133 numberOfCreditsBuilder.setLabel(numberOfCreditsBuilder.getName()); 134 numberOfCreditsBuilder.setDescription(numberOfCreditsBuilder.getName()); 135 // 136 KrmsAttributeDefinition attributeDefinition = krmsAttributeDefinitionService.createAttributeDefinition(numberOfCreditsBuilder.build()); 137 ksLumAttributeDefinitions.put(attributeDefinition.getName(),attributeDefinition); 138 } 139 140 private void createDeptOrgNumberAttributeDefinition( 141 String nameSpace) { 142 KrmsAttributeDefinition.Builder deptOrgNumberBuilder = KrmsAttributeDefinition.Builder.create(null, ATTR_DEPT_ORG_NUMBER, nameSpace); 143 deptOrgNumberBuilder.setLabel(deptOrgNumberBuilder.getName()); 144 deptOrgNumberBuilder.setDescription(deptOrgNumberBuilder.getName()); 145 // 146 KrmsAttributeDefinition attributeDefinition = krmsAttributeDefinitionService.createAttributeDefinition(deptOrgNumberBuilder.build()); 147 ksLumAttributeDefinitions.put(attributeDefinition.getName(),attributeDefinition); 148 } 149 150 private void createProposedCourseAttributeDefinition( 151 String nameSpace) { 152 KrmsAttributeDefinition.Builder proposedCourseBuilder = KrmsAttributeDefinition.Builder.create(null, ATTR_PROPOSED_COURSE, nameSpace); 153 proposedCourseBuilder.setLabel(proposedCourseBuilder.getName()); 154 proposedCourseBuilder.setDescription(proposedCourseBuilder.getName()); 155 // 156 KrmsAttributeDefinition attributeDefinition = krmsAttributeDefinitionService.createAttributeDefinition(proposedCourseBuilder.build()); 157 ksLumAttributeDefinitions.put(attributeDefinition.getName(),attributeDefinition); 158 } 159 160 private void createApprovedCourseAttributeDefinition( 161 String nameSpace) { 162 KrmsAttributeDefinition.Builder approvedCourseBuilder = KrmsAttributeDefinition.Builder.create(null, ATTR_APPROVED_COURSE, nameSpace); 163 approvedCourseBuilder.setLabel(approvedCourseBuilder.getName()); 164 approvedCourseBuilder.setDescription(approvedCourseBuilder.getName()); 165 // 166 KrmsAttributeDefinition attributeDefinition = krmsAttributeDefinitionService.createAttributeDefinition(approvedCourseBuilder.build()); 167 ksLumAttributeDefinitions.put(attributeDefinition.getName(),attributeDefinition); 168 } 169 170 171 172 // private KrmsAttributeDefinition createAttributeDefinition(String nameSpace, 173 // String attrName) { 174 // 175 // KrmsAttributeDefinition.Builder contextTypeAttributeDefnBuilder = KrmsAttributeDefinition.Builder.create(null, attrName, nameSpace); 176 // contextTypeAttributeDefnBuilder.setLabel(attrName + " attribute label"); 177 // KrmsAttributeDefinition contextTypeAttributeDefinition = krmsAttributeDefinitionService.createAttributeDefinition(contextTypeAttributeDefnBuilder.build()); 178 // return contextTypeAttributeDefinition; 179 // } 180 181 protected KrmsTypeDefinition createKrmsGenericTypeDefinition(String nameSpace, String serviceName, 182 String attributeDefinitionLabel, String attributeDefinitionName) { 183 KrmsTypeDefinition krmsGenericTypeDefinition = krmsTypeRepository.getTypeByName(nameSpace, "Event"); 184 185 if (null == krmsGenericTypeDefinition) { 186 187 // Attribute Defn for generic type; 188 KrmsAttributeDefinition.Builder genericTypeAttributeDefnBuilder = KrmsAttributeDefinition.Builder.create(null, 189 attributeDefinitionName, nameSpace); 190 genericTypeAttributeDefnBuilder.setLabel(attributeDefinitionLabel); 191 KrmsAttributeDefinition genericTypeAttributeDefinition1 = krmsAttributeDefinitionService.createAttributeDefinition(genericTypeAttributeDefnBuilder.build()); 192 193 // Attr for generic type; 194 KrmsTypeAttribute.Builder genericTypeAttrBuilder = KrmsTypeAttribute.Builder.create(null, genericTypeAttributeDefinition1.getId(), 1); 195 196 // Can use this generic type for KRMS bits that don't actually rely on services on the bus at this point in time 197 KrmsTypeDefinition.Builder krmsGenericTypeDefnBuilder = KrmsTypeDefinition.Builder.create("KrmsTestGenericType", nameSpace); 198 krmsGenericTypeDefnBuilder.setServiceName(serviceName); 199 krmsGenericTypeDefnBuilder.setAttributes(Collections.singletonList(genericTypeAttrBuilder)); 200 krmsGenericTypeDefinition = krmsTypeRepository.createKrmsType(krmsGenericTypeDefnBuilder.build()); 201 202 } 203 204 return krmsGenericTypeDefinition; 205 } 206 207 }