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 org.kuali.rice.core.api.exception.RiceIllegalArgumentException;
023import org.kuali.rice.krms.api.repository.term.TermRepositoryService;
024import org.kuali.rice.krms.api.repository.term.TermSpecificationDefinition;
025
026/**
027 *
028 * @author nwright
029 */
030public class KrmsTermSpecificationLoader {
031    
032    private TermRepositoryService termRepositoryService = null;
033    
034    public TermRepositoryService getTermRepositoryService() {
035        return termRepositoryService;
036    }
037    
038    public void setTermRepositoryService(TermRepositoryService termRepositoryService) {
039        this.termRepositoryService = termRepositoryService;
040    }
041    
042    public void loadTermSpec(String id, String name, String type, String description, String namespace) {
043        TermSpecificationDefinition.Builder bldr = TermSpecificationDefinition.Builder.create(id, name, namespace, type);
044        bldr.setDescription(description);
045        bldr.setId(id);
046        bldr.setActive(true);
047        TermSpecificationDefinition existing = this.findExisting(bldr);
048        if (existing == null) {
049            this.getTermRepositoryService().createTermSpecification(bldr.build());
050        } else {
051            bldr.setVersionNumber(existing.getVersionNumber());
052            this.getTermRepositoryService().updateTermSpecification(bldr.build());
053        }
054    }
055    
056    private TermSpecificationDefinition findExisting(TermSpecificationDefinition.Builder bldr) {
057        if (bldr.getId() != null) {
058            try {
059                return this.getTermRepositoryService().getTermSpecificationById(bldr.getId());
060            } catch (RiceIllegalArgumentException ex) {
061                return null;
062            }
063        }
064        return this.getTermRepositoryService().getTermSpecificationByNameAndNamespace(bldr.getName(), bldr.getNamespace());
065    }
066    
067    public void load() {
068        loadTermSpec("10000", "CompletedCourse", "java.lang.Boolean", "Completed course", "KS-SYS");
069        loadTermSpec("10001", "CompletedCourses", "java.lang.Boolean", "Completed courses", "KS-SYS");
070        loadTermSpec("10002", "NumberOfCompletedCourses", "java.lang.Integer", " Number of completed courses", "KS-SYS");
071        loadTermSpec("10003", "NumberOfCreditsFromCompletedCourses", "java.lang.Integer", "Number of credits from completed courses", "KS-SYS");
072        loadTermSpec("10004", "EnrolledCourses", "java.lang.Integer", "Enrolled courses", "KS-SYS");
073        loadTermSpec("10005", "GPAForCourses", "java.lang.Integer", "GPA for courses", "KS-SYS");
074        loadTermSpec("10006", "GradeTypeForCourses", "java.lang.Integer", "Grade type for courses", "KS-SYS");
075        loadTermSpec("10007", "NumberOfCredits", "java.lang.Integer", "Number of credits", "KS-SYS");
076        loadTermSpec("10008", "NumberOfCreditsFromOrganization", "java.lang.Integer", "Number of credits from organization", "KS-SYS");
077        loadTermSpec("10009", "AdminOrganizationPermissionRequired", "java.lang.Boolean", "Admin organization permission required", "KS-SYS");
078        loadTermSpec("10010", "ScoreOnTest", "java.lang.Integer", "Score on test", "KS-SYS");
079        loadTermSpec("10011", "AdmittedToProgram", "java.lang.Boolean", "Admitted to program", "KS-SYS");
080        loadTermSpec("10012", "AdmittedToProgramLimitCoursesInOrgForDuration", "java.lang.Integer", "Admitted to program limit courses in organization for duration", "KS-SYS");
081        loadTermSpec("10013", "FreeFormText", "java.lang.Boolean", "Free Form Text", "KS-SYS");
082    }
083}