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}