001/** 002 * Copyright 2005-2017 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/* 017 * To change this template, choose Tools | Templates 018 * and open the template in the editor. 019 */ 020package org.kuali.rice.krms.impl.repository.mock; 021 022import java.util.HashMap; 023import java.util.LinkedHashSet; 024import java.util.Map; 025import java.util.Set; 026import org.kuali.rice.core.api.exception.RiceIllegalArgumentException; 027import org.kuali.rice.krms.api.repository.term.TermRepositoryService; 028import org.kuali.rice.krms.api.repository.term.TermResolverDefinition; 029import org.kuali.rice.krms.api.repository.term.TermSpecificationDefinition; 030 031/** 032 * 033 * @author nwright 034 */ 035public class KrmsTermResolverLoader { 036 037 private TermRepositoryService termRepositoryService = null; 038 039 public TermRepositoryService getTermRepositoryService() { 040 return termRepositoryService; 041 } 042 043 public void setTermRepositoryService(TermRepositoryService termRepositoryService) { 044 this.termRepositoryService = termRepositoryService; 045 } 046 047 public void loadTermResolver(String id, 048 String namespace, 049 String name, 050 String typeId, 051 String outputId, 052 String prereqId1, 053 String prereqId2, 054 String prereqId3) { 055 TermSpecificationDefinition.Builder output = 056 TermSpecificationDefinition.Builder.create(this.getTermRepositoryService().getTermSpecificationById(outputId)); 057 Set<TermSpecificationDefinition.Builder> prerequisites = 058 new LinkedHashSet<TermSpecificationDefinition.Builder>(); 059 if (prereqId1 != null && !prereqId1.isEmpty()) { 060 prerequisites.add(TermSpecificationDefinition.Builder.create(this.getTermRepositoryService().getTermSpecificationById(prereqId1))); 061 } 062 if (prereqId2 != null && !prereqId2.isEmpty()) { 063 prerequisites.add(TermSpecificationDefinition.Builder.create(this.getTermRepositoryService().getTermSpecificationById(prereqId2))); 064 } 065 if (prereqId3 != null && !prereqId3.isEmpty()) { 066 prerequisites.add(TermSpecificationDefinition.Builder.create(this.getTermRepositoryService().getTermSpecificationById(prereqId3))); 067 } 068 Map<String, String> attributes = new HashMap<String, String>(); 069 // TODO: findout what parameter names are used for! 070 Set<String> parameterNames = new LinkedHashSet<String>(); 071// create(String id, 072// String namespaceCode, 073// String name, 074// String typeId, 075// TermSpecificationDefinition.Builder output, 076// Set<TermSpecificationDefinition.Builder> prerequisites, 077// Map<String, String> attributes, 078// Set<String> parameterNames) 079 TermResolverDefinition.Builder bldr = TermResolverDefinition.Builder.create(id, 080 namespace, 081 name, 082 typeId, 083 output, 084 prerequisites, 085 attributes, 086 parameterNames); 087 bldr.setActive(true); 088 TermResolverDefinition existing = this.findExisting(bldr); 089 if (existing == null) { 090 this.getTermRepositoryService().createTermResolver(bldr.build()); 091 } else { 092 bldr.setVersionNumber(existing.getVersionNumber()); 093 this.getTermRepositoryService().updateTermResolver(bldr.build()); 094 } 095 } 096 097 private TermResolverDefinition findExisting(TermResolverDefinition.Builder bldr) { 098 if (bldr.getId() != null) { 099 try { 100 return this.getTermRepositoryService().getTermResolverById(bldr.getId()); 101 } catch (RiceIllegalArgumentException ex) { 102 return null; 103 } 104 } 105 return this.getTermRepositoryService().getTermResolverByNameAndNamespace(bldr.getName(), bldr.getNamespace()); 106 } 107 108 public void load() { 109 loadTermResolver("10000", "KS-SYS", "CompletedCourse", "10000", "10000", "", "", ""); 110 loadTermResolver("10001", "KS-SYS", "CompletedCourses", "10000", "10001", "", "", ""); 111 loadTermResolver("10002", "KS-SYS", "NumberOfCompletedCourses", "10000", "10002", "", "", ""); 112 loadTermResolver("10003", "KS-SYS", "NumberOfCreditsFromCompletedCourses", "10000", "10003", "", "", ""); 113 loadTermResolver("10004", "KS-SYS", "EnrolledCourses", "10000", "10004", "", "", ""); 114 loadTermResolver("10005", "KS-SYS", "GPAForCourses", "10000", "10005", "", "", ""); 115 loadTermResolver("10006", "KS-SYS", "GradeTypeForCourses", "10000", "10006", "", "", ""); 116 loadTermResolver("10007", "KS-SYS", "NumberOfCredits", "10000", "10007", "", "", ""); 117 loadTermResolver("10008", "KS-SYS", "NumberOfCreditsFromOrganization", "10000", "10008", "", "", ""); 118 loadTermResolver("10009", "KS-SYS", "AdminOrganizationPermissionRequired", "10000", "10009", "", "", ""); 119 loadTermResolver("10010", "KS-SYS", "ScoreOnTest", "10000", "10010", "", "", ""); 120 loadTermResolver("10011", "KS-SYS", "AdmittedToProgram", "10000", "10011", "", "", ""); 121 loadTermResolver("10012", "KS-SYS", "AdmittedToProgramLimitCoursesInOrgForDuration", "10000", "10012", "", "", ""); 122 loadTermResolver("10013", "KS-SYS", "FreeFormText", "10000", "10013", "", "", ""); 123 } 124}