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.type.KrmsTypeDefinition;
024import org.kuali.rice.krms.api.repository.type.KrmsTypeRepositoryService;
025
026/**
027 *
028 * @author nwright
029 */
030public class KrmsTypeLoader {
031
032    private KrmsTypeRepositoryService krmsTypeRepositoryService = null;
033
034    public KrmsTypeRepositoryService getKrmsTypeRepositoryService() {
035        return krmsTypeRepositoryService;
036    }
037
038    public void setKrmsTypeRepositoryService(KrmsTypeRepositoryService krmsTypeRepositoryService) {
039        this.krmsTypeRepositoryService = krmsTypeRepositoryService;
040    }
041
042    public void loadType(String id, String name, String nameSpace, String serviceName) {
043        KrmsTypeDefinition.Builder bldr = KrmsTypeDefinition.Builder.create(name, nameSpace);
044        bldr.setId(id);
045        bldr.setActive(true);
046        bldr.setServiceName(serviceName);
047        KrmsTypeDefinition existing = this.findExisting(bldr);
048        if (existing == null) {
049            this.getKrmsTypeRepositoryService().createKrmsType(bldr.build());
050        } else {
051            // consider comparing and only update if different!
052            bldr.setVersionNumber(existing.getVersionNumber());
053            this.getKrmsTypeRepositoryService().updateKrmsType(bldr.build());
054        }
055    }
056
057    private KrmsTypeDefinition findExisting(KrmsTypeDefinition.Builder bldr) {
058        if (bldr.getId() != null) {
059            try {
060                return this.getKrmsTypeRepositoryService().getTypeById(bldr.getId());
061            } catch (RiceIllegalArgumentException ex) {
062                return null;
063            }
064        }
065        return this.getKrmsTypeRepositoryService().getTypeByName(bldr.getNamespace(), bldr.getName());
066    }
067
068    public void load() {
069        // Contexts
070        loadType("10000", "kuali.krms.context.type.course", "KS-SYS", "contextTypeService");
071        loadType("10001", "kuali.krms.context.type.program", "KS-SYS", "contextTypeService");
072        loadType("10078", "kuali.krms.context.type.course.offering", "KS-SYS", "contextTypeService");
073// Agendas
074        loadType("10002", "kuali.krms.agenda.type.course.enrollmentEligibility", "KS-SYS", "agendaTypeService");
075        loadType("10003", "kuali.krms.agenda.type.course.creditConstraints", "KS-SYS", "agendaTypeService");
076        loadType("10004", "kuali.krms.agenda.type.schedule.eligibility", "KS-SYS", "agendaTypeService");
077// Rules
078        loadType("10005", "kuali.krms.rule.type.course.academicReadiness.antireq", "KS-SYS", "ruleTypeService");
079        loadType("10006", "kuali.krms.rule.type.course.academicReadiness.coreq", "KS-SYS", "ruleTypeService");
080        loadType("10008", "kuali.krms.rule.type.course.recommendedPreparation", "KS-SYS", "ruleTypeService");
081        loadType("10009", "kuali.krms.rule.type.course.academicReadiness.studentEligibility", "KS-SYS", "ruleTypeService");
082        loadType("10010", "kuali.krms.rule.type.course.academicReadiness.studentEligibilityPrereq", "KS-SYS", "ruleTypeService");
083        loadType("10011", "kuali.krms.rule.type.course.credit.repeatable", "KS-SYS", "ruleTypeService");
084        loadType("10012", "kuali.krms.rule.type.course.credit.restriction", "KS-SYS", "ruleTypeService");
085        loadType("10013", "kuali.krms.rule.type.program.completion", "KS-SYS", "ruleTypeService");
086        loadType("10014", "kuali.krms.rule.type.program.entrance", "KS-SYS", "ruleTypeService");
087        loadType("10015", "kuali.krms.rule.type.program.satisfactoryProgress", "KS-SYS", "ruleTypeService");
088        loadType("10016", "kuali.krms.rule.type.schedule.eligibility", "KS-SYS", "ruleTypeService");
089// Propositions
090        loadType("10017", "kuali.krms.proposition.type.success.compl.course", "KS-SYS", "simplePropositionTypeService");
091        loadType("10018", "kuali.krms.proposition.type.success.course.courseset.completed.all", "KS-SYS", "simplePropositionTypeService");
092        loadType("10019", "kuali.krms.proposition.type.success.course.courseset.completed.nof", "KS-SYS", "simplePropositionTypeService");
093        loadType("10020", "kuali.krms.proposition.type.course.courseset.completed.none", "KS-SYS", "simplePropositionTypeService");
094        loadType("10021", "kuali.krms.proposition.type.course.courseset.credits.completed.nof", "KS-SYS", "simplePropositionTypeService");
095        loadType("10022", "kuali.krms.proposition.type.course.courseset.credits.completed.none", "KS-SYS", "simplePropositionTypeService");
096        loadType("10023", "kuali.krms.proposition.type.course.courseset.enrolled.all", "KS-SYS", "simplePropositionTypeService");
097        loadType("10024", "kuali.krms.proposition.type.course.courseset.enrolled.nof", "KS-SYS", "simplePropositionTypeService");
098        loadType("10025", "kuali.krms.proposition.type.course.courseset.gpa.min", "KS-SYS", "simplePropositionTypeService");
099        loadType("10026", "kuali.krms.proposition.type.course.courseset.grade.max", "KS-SYS", "simplePropositionTypeService");
100        loadType("10027", "kuali.krms.proposition.type.course.courseset.grade.min", "KS-SYS", "simplePropositionTypeService");
101        loadType("10028", "kuali.krms.proposition.type.course.courseset.nof.grade.min", "KS-SYS", "simplePropositionTypeService");
102        loadType("10029", "kuali.krms.proposition.type.course.credits.repeat.max", "KS-SYS", "simplePropositionTypeService");
103        loadType("10030", "kuali.krms.proposition.type.course.enrolled", "KS-SYS", "simplePropositionTypeService");
104        loadType("10031", "kuali.krms.proposition.type.freeform.text", "KS-SYS", "simplePropositionTypeService");
105        loadType("10032", "kuali.krms.proposition.type.course.notcompleted", "KS-SYS", "simplePropositionTypeService");
106        loadType("10033", "kuali.krms.proposition.type.admitted.to.program.campus", "KS-SYS", "simplePropositionTypeService");
107        loadType("10034", "kuali.krms.proposition.type.permission.instructor.required", "KS-SYS", "simplePropositionTypeService");
108        loadType("10035", "kuali.krms.proposition.type.permission.admin.org", "KS-SYS", "simplePropositionTypeService");
109        loadType("10036", "kuali.krms.proposition.type.notadmitted.to.program", "KS-SYS", "simplePropositionTypeService");
110        loadType("10037", "kuali.krms.proposition.type.course.test.score.max", "KS-SYS", "simplePropositionTypeService");
111        loadType("10038", "kuali.krms.proposition.type.course.test.score.min", "KS-SYS", "simplePropositionTypeService");
112        loadType("10039", "kuali.krms.proposition.type.credits.earned.min", "KS-SYS", "simplePropositionTypeService");
113        loadType("10040", "kuali.krms.proposition.type.cumulative.gpa.min", "KS-SYS", "simplePropositionTypeService");
114        loadType("10041", "kuali.krms.proposition.type.duration.cumulative.gpa.min", "KS-SYS", "simplePropositionTypeService");
115        loadType("10042", "kuali.krms.proposition.type.drop.min.credit.hours.due.to.attribute", "KS-SYS", "simplePropositionTypeService");
116        loadType("10043", "kuali.krms.proposition.type.drop.min.credit.hours", "KS-SYS", "simplePropositionTypeService");
117        loadType("10044", "kuali.krms.proposition.type.exceeds.minutes.overlap.allowed", "KS-SYS", "simplePropositionTypeService");
118        loadType("10045", "kuali.krms.proposition.type.time.conflict.start.end", "KS-SYS", "simplePropositionTypeService");
119        loadType("10046", "kuali.krms.proposition.type.max.limit.courses.for.program", "KS-SYS", "simplePropositionTypeService");
120        loadType("10047", "kuali.krms.proposition.type.max.limit.credits.for.program", "KS-SYS", "simplePropositionTypeService");
121        loadType("10050", "kuali.krms.proposition.type.max.limit.courses.for.campus.duration", "KS-SYS", "simplePropositionTypeService");
122        loadType("10051", "kuali.krms.proposition.type.max.limit.credits.for.campus.duration", "KS-SYS", "simplePropositionTypeService");
123        loadType("10052", "kuali.krms.proposition.type.admitted.to.program", "KS-SYS", "simplePropositionTypeService");
124        loadType("10053", "kuali.krms.proposition.type.course.courseset.completed.nof", "KS-SYS", "simplePropositionTypeService");
125        loadType("10054", "kuali.krms.proposition.type.success.credit.courseset.completed.nof", "KS-SYS", "simplePropositionTypeService");
126        loadType("10055", "kuali.krms.proposition.type.success.credits.courseset.completed.nof.org", "KS-SYS", "simplePropositionTypeService");
127        loadType("10056", "kuali.krms.proposition.type.cant.add.to.activity.offering.due.to.state", "KS-SYS", "simplePropositionTypeService");
128        loadType("10057", "kuali.krms.proposition.type.no.repeat.course", "KS-SYS", "simplePropositionTypeService");
129        loadType("10058", "kuali.krms.proposition.type.no.repeat.courses", "KS-SYS", "simplePropositionTypeService");
130        loadType("10059", "kuali.krms.proposition.type.avail.seat", "KS-SYS", "simplePropositionTypeService");
131        loadType("10060", "kuali.krms.proposition.type.success.compl.course.as.of.term", "KS-SYS", "simplePropositionTypeService");
132        loadType("10061", "kuali.krms.proposition.type.success.compl.prior.to.term", "KS-SYS", "simplePropositionTypeService");
133        loadType("10062", "kuali.krms.proposition.type.success.compl.course.between.terms", "KS-SYS", "simplePropositionTypeService");
134        loadType("10064", "kuali.krms.proposition.type.notadmitted.to.program.in.class.standing", "KS-SYS", "simplePropositionTypeService");
135        loadType("10065", "kuali.krms.proposition.type.admitted.to.program.org", "KS-SYS", "simplePropositionTypeService");
136        loadType("10066", "kuali.krms.proposition.type.in.class.standing", "KS-SYS", "simplePropositionTypeService");
137        loadType("10067", "kuali.krms.proposition.type.greater.than.class.standing", "KS-SYS", "simplePropositionTypeService");
138        loadType("10068", "kuali.krms.proposition.type.less.than.class.standing", "KS-SYS", "simplePropositionTypeService");
139        loadType("10069", "kuali.krms.proposition.type.notin.class.standing", "KS-SYS", "simplePropositionTypeService");
140        loadType("10071", "kuali.krms.proposition.type.course.courseset.enrolled", "KS-SYS", "simplePropositionTypeService");
141        loadType("10072", "kuali.krms.proposition.type.no.repeat.course.nof", "KS-SYS", "simplePropositionTypeService");
142        loadType("10074", "kuali.krms.proposition.type.test.score.between.values", "KS-SYS", "simplePropositionTypeService");
143        loadType("10075", "kuali.krms.proposition.type.test.score", "KS-SYS", "simplePropositionTypeService");
144        loadType("10076", "kuali.krms.proposition.type.compound.and", "KS-SYS", "compoundPropositionTypeService");
145        loadType("10077", "kuali.krms.proposition.type.compound.or", "KS-SYS", "compoundPropositionTypeService");
146// Parameters
147        loadType("10100", "kuali.krms.proposition.parameter.type.term.number.of.completed.courses", "KS-SYS", "termPropositionParameterTypeService");
148        loadType("10101", "kuali.krms.proposition.parameter.type.operator.less.than.or.equal.to", "KS-SYS", "operatorPropositionParameterTypeService");
149        loadType("10102", "kuali.krms.proposition.parameter.type.constant.value.n", "KS-SYS", "constantPropositionParameterTypeService");
150        // term parameters
151        loadType("10103", "kuali.term.parameter.type.course.clu.id", "KS-SYS", "termParameterTypeService");
152        loadType("10104", "kuali.term.parameter.type.course.cluSet.id", "KS-SYS", "termParameterTypeService");
153        loadType("10105", "kuali.term.parameter.type.free.text", "KS-SYS", "termParameterTypeService");
154        loadType("10106", "kuali.term.parameter.type.grade.id", "KS-SYS", "termParameterTypeService");
155        loadType("10107", "kuali.term.parameter.type.org.id", "KS-SYS", "termParameterTypeService");
156        loadType("10108", "kuali.term.parameter.type.program.cluSet.id", "KS-SYS", "termParameterTypeService");
157    }
158}