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.List;
023import org.kuali.rice.krms.api.repository.type.KrmsTypeRepositoryService;
024import org.kuali.rice.krms.api.repository.typerelation.RelationshipType;
025import org.kuali.rice.krms.api.repository.typerelation.TypeTypeRelation;
026
027/**
028 *
029 * @author nwright
030 */
031public class KrmsTypeRelationLoader {
032
033    private KrmsTypeRepositoryService krmsTypeRepositoryService = null;
034
035    public KrmsTypeRepositoryService getKrmsTypeRepositoryService() {
036        return krmsTypeRepositoryService;
037    }
038
039    public void setKrmsTypeRepositoryService(KrmsTypeRepositoryService krmsTypeRepositoryService) {
040        this.krmsTypeRepositoryService = krmsTypeRepositoryService;
041    }
042
043    public void loadTypeRelation(String id, String fromTypeId, String toTypeId, String relType, Integer sequenceNumber) {
044        RelationshipType relationshipType = RelationshipType.USAGE_ALLOWED;
045        if (!relType.equals("A")) {
046            relationshipType = RelationshipType.UNKNOWN;
047        }
048        TypeTypeRelation.Builder bldr = TypeTypeRelation.Builder.create(fromTypeId, relationshipType, sequenceNumber, toTypeId);
049        bldr.setId(id);
050        bldr.setActive(true);
051        TypeTypeRelation existing = this.findExisting(bldr);
052        if (existing == null) {
053            this.getKrmsTypeRepositoryService().createTypeTypeRelation(bldr.build());
054        } else {
055            // consider comparing and only update if different!
056            bldr.setVersionNumber(existing.getVersionNumber());
057            this.getKrmsTypeRepositoryService().updateTypeTypeRelation(bldr.build());
058        }
059    }
060
061    private TypeTypeRelation findExisting(TypeTypeRelation.Builder bldr) {
062        List<TypeTypeRelation> list = this.getKrmsTypeRepositoryService().findTypeTypeRelationsByFromType(bldr.getFromTypeId());
063        for (TypeTypeRelation rel : list) {
064            if (bldr.getToTypeId().equals(rel.getToTypeId())) {
065                return rel;
066            }
067        }
068        return null;
069    }
070
071    public void load() {
072        // agendas for contexts
073        loadTypeRelation("10000", "10000", "10002", "A", 1);
074        loadTypeRelation("10001", "10000", "10003", "A", 6);
075        loadTypeRelation("10010", "10001", "10014", "A", 1);
076        loadTypeRelation("10011", "10001", "10015", "A", 2);
077        loadTypeRelation("10009", "10001", "10013", "A", 3);
078// rules for agendas
079        loadTypeRelation("10006", "10002", "10010", "A", 2);
080        loadTypeRelation("10003", "10002", "10006", "A", 3);
081        loadTypeRelation("10005", "10002", "10008", "A", 4);
082        loadTypeRelation("10002", "10002", "10005", "A", 5);
083        loadTypeRelation("10008", "10003", "10012", "A", 7);
084        loadTypeRelation("10007", "10003", "10011", "A", 8);
085        loadTypeRelation("10012", "10004", "10016", "A", 2);
086// propositions for rules
087        loadTypeRelation("10030", "10005", "10021", "A", 1);
088        loadTypeRelation("10057", "10005", "10032", "A", 1);
089        loadTypeRelation("10026", "10005", "10020", "A", 2);
090        loadTypeRelation("10033", "10005", "10022", "A", 3);
091        loadTypeRelation("10067", "10005", "10037", "A", 5);
092        loadTypeRelation("10055", "10006", "10031", "A", 0);
093        loadTypeRelation("10054", "10006", "10030", "A", 1);
094        loadTypeRelation("10036", "10006", "10024", "A", 2);
095        loadTypeRelation("10035", "10006", "10023", "A", 3);
096        loadTypeRelation("10014", "10008", "10017", "A", 1);
097        loadTypeRelation("10059", "10009", "10033", "A", 2);
098        loadTypeRelation("10065", "10009", "10036", "A", 3);
099        loadTypeRelation("10056", "10010", "10031", "A", 0);
100        loadTypeRelation("10015", "10010", "10017", "A", 1);
101        loadTypeRelation("10114", "10010", "10040", "A", 1);
102        loadTypeRelation("10116", "10010", "10052", "A", 1);
103        loadTypeRelation("10113", "10010", "10054", "A", 1);
104        loadTypeRelation("10115", "10010", "10055", "A", 1);
105        loadTypeRelation("10019", "10010", "10018", "A", 2);
106        loadTypeRelation("10023", "10010", "10019", "A", 3);
107        loadTypeRelation("10038", "10010", "10025", "A", 6);
108        loadTypeRelation("10045", "10010", "10027", "A", 7);
109        loadTypeRelation("10049", "10010", "10028", "A", 8);
110        loadTypeRelation("10042", "10010", "10026", "A", 9);
111        loadTypeRelation("10060", "10010", "10033", "A", 11);
112        loadTypeRelation("10066", "10010", "10036", "A", 12);
113        loadTypeRelation("10062", "10010", "10034", "A", 13);
114        loadTypeRelation("10064", "10010", "10035", "A", 14);
115        loadTypeRelation("10070", "10010", "10038", "A", 15);
116        loadTypeRelation("10108", "10010", "10074", "A", 15);
117        loadTypeRelation("10111", "10010", "10075", "A", 15);
118        loadTypeRelation("10053", "10011", "10029", "A", 1);
119        loadTypeRelation("10058", "10012", "10032", "A", 1);
120        loadTypeRelation("10027", "10012", "10020", "A", 2);
121        loadTypeRelation("10039", "10013", "10025", "A", 4);
122        loadTypeRelation("10072", "10013", "10039", "A", 5);
123        loadTypeRelation("10024", "10013", "10019", "A", 10);
124        loadTypeRelation("10020", "10013", "10018", "A", 11);
125        loadTypeRelation("10031", "10013", "10021", "A", 12);
126        loadTypeRelation("10046", "10013", "10027", "A", 13);
127        loadTypeRelation("10050", "10013", "10028", "A", 14);
128        loadTypeRelation("10016", "10013", "10017", "A", 16);
129        loadTypeRelation("10073", "10013", "10040", "A", 18);
130        loadTypeRelation("10040", "10014", "10025", "A", 5);
131        loadTypeRelation("10071", "10014", "10038", "A", 6);
132        loadTypeRelation("10109", "10014", "10074", "A", 6);
133        loadTypeRelation("10112", "10014", "10075", "A", 6);
134        loadTypeRelation("10025", "10014", "10019", "A", 9);
135        loadTypeRelation("10028", "10014", "10020", "A", 10);
136        loadTypeRelation("10021", "10014", "10018", "A", 11);
137        loadTypeRelation("10032", "10014", "10021", "A", 12);
138        loadTypeRelation("10034", "10014", "10022", "A", 13);
139        loadTypeRelation("10068", "10014", "10037", "A", 15);
140        loadTypeRelation("10047", "10014", "10027", "A", 16);
141        loadTypeRelation("10051", "10014", "10028", "A", 17);
142        loadTypeRelation("10043", "10014", "10026", "A", 18);
143        loadTypeRelation("10017", "10014", "10017", "A", 19);
144        loadTypeRelation("10052", "10015", "10028", "A", 5);
145        loadTypeRelation("10074", "10015", "10040", "A", 6);
146        loadTypeRelation("10075", "10015", "10041", "A", 7);
147        loadTypeRelation("10076", "10016", "10042", "A", 2);
148        loadTypeRelation("10077", "10016", "10043", "A", 2);
149        loadTypeRelation("10078", "10016", "10044", "A", 2);
150        loadTypeRelation("10079", "10016", "10045", "A", 2);
151        loadTypeRelation("10080", "10016", "10046", "A", 2);
152        loadTypeRelation("10081", "10016", "10047", "A", 2);
153        loadTypeRelation("10084", "10016", "10050", "A", 2);
154        loadTypeRelation("10085", "10016", "10051", "A", 2);
155        loadTypeRelation("10086", "10016", "10052", "A", 2);
156        loadTypeRelation("10087", "10016", "10053", "A", 2);
157        loadTypeRelation("10088", "10016", "10054", "A", 2);
158        loadTypeRelation("10089", "10016", "10055", "A", 2);
159        loadTypeRelation("10090", "10016", "10056", "A", 2);
160        loadTypeRelation("10091", "10016", "10057", "A", 2);
161        loadTypeRelation("10092", "10016", "10058", "A", 2);
162        loadTypeRelation("10093", "10016", "10059", "A", 2);
163        loadTypeRelation("10094", "10016", "10060", "A", 2);
164        loadTypeRelation("10095", "10016", "10061", "A", 2);
165        loadTypeRelation("10096", "10016", "10062", "A", 2);
166        loadTypeRelation("10098", "10016", "10064", "A", 2);
167        loadTypeRelation("10099", "10016", "10065", "A", 2);
168        loadTypeRelation("10100", "10016", "10066", "A", 2);
169        loadTypeRelation("10101", "10016", "10067", "A", 2);
170        loadTypeRelation("10102", "10016", "10068", "A", 2);
171        loadTypeRelation("10103", "10016", "10069", "A", 2);
172        loadTypeRelation("10105", "10016", "10071", "A", 2);
173        loadTypeRelation("10106", "10016", "10072", "A", 2);
174// parameters for propositions
175        loadTypeRelation("10019-A-10100", "10019", "10100", "A", 1);
176        loadTypeRelation("10019-A-10102", "10019", "10102", "A", 2);
177        loadTypeRelation("10019-A-10101", "10019", "10101", "A", 3);
178        // TERM PARAMETER
179        loadTypeRelation("10100-A-10104", "10100", "10104", "A", 1);
180    }
181}