1b560db11fb9e51750f8da2048ed53200dab857a
[policy/apex-pdp.git] / testsuites / integration / integration-common / src / main / java / org / onap / policy / apex / testsuites / integration / common / model / SampleDomainModelFactory.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.testsuites.integration.common.model;
22
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.Map;
26 import java.util.Set;
27 import java.util.TreeMap;
28 import java.util.TreeSet;
29 import org.onap.policy.apex.model.basicmodel.concepts.ApexRuntimeException;
30 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
31 import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
32 import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
33 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
34 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum;
35 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums;
36 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
37 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
38 import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
39 import org.onap.policy.apex.model.eventmodel.concepts.AxEvents;
40 import org.onap.policy.apex.model.eventmodel.concepts.AxField;
41 import org.onap.policy.apex.model.policymodel.concepts.AxLogicReader;
42 import org.onap.policy.apex.model.policymodel.concepts.AxPolicies;
43 import org.onap.policy.apex.model.policymodel.concepts.AxPolicy;
44 import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
45 import org.onap.policy.apex.model.policymodel.concepts.AxState;
46 import org.onap.policy.apex.model.policymodel.concepts.AxStateOutput;
47 import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskOutputType;
48 import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskReference;
49 import org.onap.policy.apex.model.policymodel.concepts.AxTask;
50 import org.onap.policy.apex.model.policymodel.concepts.AxTaskLogic;
51 import org.onap.policy.apex.model.policymodel.concepts.AxTaskParameter;
52 import org.onap.policy.apex.model.policymodel.concepts.AxTaskSelectionLogic;
53 import org.onap.policy.apex.model.policymodel.concepts.AxTasks;
54 import org.onap.policy.apex.model.policymodel.handling.PolicyLogicReader;
55
56 /**
57  * This class creates sample Policy Models.
58  *
59  * @author Liam Fallon (liam.fallon@ericsson.com)
60  */
61 public class SampleDomainModelFactory {
62     // Recurring string constants
63     private static final String TASK = "Task_";
64     private static final String PARAMETER2 = "Parameter2";
65     private static final String PARAMETER1 = "Parameter1";
66     private static final String DEFAULT_VALUE2 = "DefaultValue2";
67     private static final String DEFAULT_VALUE1 = "DefaultValue1";
68     private static final String PARAMETER0 = "Parameter0";
69     private static final String DEFAULT_VALUE0 = "DefaultValue0";
70     private static final String TASK_SELECTION_LIGIC = "TaskSelectionLigic";
71     private static final String TEST_ACT_STATE_TIME = "TestActStateTime";
72     private static final String TEST_ACT_CASE_SELECTED = "TestActCaseSelected";
73     private static final String TEST_DECIDE_STATE_TIME = "TestDecideStateTime";
74     private static final String TEST_DECIDE_CASE_SELECTED = "TestDecideCaseSelected";
75     private static final String TEST_ESTABLISH_STATE_TIME = "TestEstablishStateTime";
76     private static final String TEST_ESTABLISH_CASE_SELECTED = "TestEstablishCaseSelected";
77     private static final String DECIDE = "Decide";
78     private static final String TEST_MATCH_STATE_TIME = "TestMatchStateTime";
79     private static final String TEST_MATCH_CASE_SELECTED = "TestMatchCaseSelected";
80     private static final String ESTABLISH = "Establish";
81     private static final String TEST_MATCH_CASE = "TestMatchCase";
82     private static final String MATCH = "Match";
83     private static final String DEFAULT_SOURCE = "Outside";
84     private static final String DEFAULT_NAMESPACE = "org.onap.policy.apex.sample.events";
85     private static final String TEST_TEMPERATURE = "TestTemperature";
86     private static final String TEST_TIMESTAMP = "TestTimestamp";
87     private static final String TEST_SLOGAN = "TestSlogan";
88     private static final String DEFAULT_VERSION = "0.0.1";
89
90     private static final int THIRD_ENTRY = 3;
91
92     /**
93      * Get a sample policy model.
94      *
95      * @param axLogicExecutorType The type of logic executor, the scripting language being used
96      * @return the sample policy model
97      */
98     // CHECKSTYLE:OFF: checkstyle:maximumMethodLength
99     public AxPolicyModel getSamplePolicyModel(final String axLogicExecutorType) {
100         AxContextSchema testSlogan = new AxContextSchema(new AxArtifactKey(TEST_SLOGAN, DEFAULT_VERSION), "Java",
101                         "java.lang.String");
102         AxContextSchema testCase = new AxContextSchema(new AxArtifactKey("TestCase", DEFAULT_VERSION), "Java",
103                         "java.lang.Byte");
104         AxContextSchema testTimestamp = new AxContextSchema(new AxArtifactKey(TEST_TIMESTAMP, DEFAULT_VERSION), "Java",
105                         "java.lang.Long");
106         AxContextSchema testTemperature = new AxContextSchema(new AxArtifactKey(TEST_TEMPERATURE, DEFAULT_VERSION),
107                         "Java", "java.lang.Double");
108
109         AxContextSchema testContextItem000 = new AxContextSchema(
110                         new AxArtifactKey("TestContextItem000", DEFAULT_VERSION), "Java",
111                         "org.onap.policy.apex.context.test.concepts.TestContextItem000");
112         AxContextSchema testContextItem001 = new AxContextSchema(
113                         new AxArtifactKey("TestContextItem001", DEFAULT_VERSION), "Java",
114                         "org.onap.policy.apex.context.test.concepts.TestContextItem001");
115         AxContextSchema testContextItem002 = new AxContextSchema(
116                         new AxArtifactKey("TestContextItem002", DEFAULT_VERSION), "Java",
117                         "org.onap.policy.apex.context.test.concepts.TestContextItem002");
118         AxContextSchema testContextItem003 = new AxContextSchema(
119                         new AxArtifactKey("TestContextItem003", DEFAULT_VERSION), "Java",
120                         "org.onap.policy.apex.context.test.concepts.TestContextItem003");
121         AxContextSchema testContextItem004 = new AxContextSchema(
122                         new AxArtifactKey("TestContextItem004", DEFAULT_VERSION), "Java",
123                         "org.onap.policy.apex.context.test.concepts.TestContextItem004");
124         AxContextSchema testContextItem005 = new AxContextSchema(
125                         new AxArtifactKey("TestContextItem005", DEFAULT_VERSION), "Java",
126                         "org.onap.policy.apex.context.test.concepts.TestContextItem005");
127         AxContextSchema testContextItem006 = new AxContextSchema(
128                         new AxArtifactKey("TestContextItem006", DEFAULT_VERSION), "Java",
129                         "org.onap.policy.apex.context.test.concepts.TestContextItem006");
130         AxContextSchema testContextItem007 = new AxContextSchema(
131                         new AxArtifactKey("TestContextItem007", DEFAULT_VERSION), "Java",
132                         "org.onap.policy.apex.context.test.concepts.TestContextItem007");
133         AxContextSchema testContextItem008 = new AxContextSchema(
134                         new AxArtifactKey("TestContextItem008", DEFAULT_VERSION), "Java",
135                         "org.onap.policy.apex.context.test.concepts.TestContextItem008");
136         AxContextSchema testContextItem009 = new AxContextSchema(
137                         new AxArtifactKey("TestContextItem009", DEFAULT_VERSION), "Java",
138                         "org.onap.policy.apex.context.test.concepts.TestContextItem009");
139         AxContextSchema testContextItem00A = new AxContextSchema(
140                         new AxArtifactKey("TestContextItem00A", DEFAULT_VERSION), "Java",
141                         "org.onap.policy.apex.context.test.concepts.TestContextItem00A");
142         AxContextSchema testContextItem00B = new AxContextSchema(
143                         new AxArtifactKey("TestContextItem00B", DEFAULT_VERSION), "Java",
144                         "org.onap.policy.apex.context.test.concepts.TestContextItem00B");
145         AxContextSchema testContextItem00C = new AxContextSchema(
146                         new AxArtifactKey("TestContextItem00C", DEFAULT_VERSION), "Java",
147                         "org.onap.policy.apex.context.test.concepts.TestContextItem00C");
148
149         AxContextSchema testPolicyContextItem = new AxContextSchema(
150                         new AxArtifactKey("TestPolicyContextItem", DEFAULT_VERSION), "Java",
151                         "org.onap.policy.apex.context.test.concepts.TestPolicyContextItem");
152         AxContextSchema testGlobalContextItem = new AxContextSchema(
153                         new AxArtifactKey("TestGlobalContextItem", DEFAULT_VERSION), "Java",
154                         "org.onap.policy.apex.context.test.concepts.TestGlobalContextItem");
155         AxContextSchema testExternalContextItem = new AxContextSchema(
156                         new AxArtifactKey("TestExternalContextItem", DEFAULT_VERSION), "Java",
157                         "org.onap.policy.apex.context.test.concepts.TestExternalContextItem");
158
159         AxContextSchemas axContextSchemas = new AxContextSchemas(new AxArtifactKey("TestDatatypes", DEFAULT_VERSION));
160         axContextSchemas.getSchemasMap().put(testSlogan.getKey(), testSlogan);
161         axContextSchemas.getSchemasMap().put(testCase.getKey(), testCase);
162         axContextSchemas.getSchemasMap().put(testTimestamp.getKey(), testTimestamp);
163         axContextSchemas.getSchemasMap().put(testTemperature.getKey(), testTemperature);
164
165         axContextSchemas.getSchemasMap().put(testContextItem000.getKey(), testContextItem000);
166         axContextSchemas.getSchemasMap().put(testContextItem001.getKey(), testContextItem001);
167         axContextSchemas.getSchemasMap().put(testContextItem002.getKey(), testContextItem002);
168         axContextSchemas.getSchemasMap().put(testContextItem003.getKey(), testContextItem003);
169         axContextSchemas.getSchemasMap().put(testContextItem004.getKey(), testContextItem004);
170         axContextSchemas.getSchemasMap().put(testContextItem005.getKey(), testContextItem005);
171         axContextSchemas.getSchemasMap().put(testContextItem006.getKey(), testContextItem006);
172         axContextSchemas.getSchemasMap().put(testContextItem007.getKey(), testContextItem007);
173         axContextSchemas.getSchemasMap().put(testContextItem008.getKey(), testContextItem008);
174         axContextSchemas.getSchemasMap().put(testContextItem009.getKey(), testContextItem009);
175         axContextSchemas.getSchemasMap().put(testContextItem00A.getKey(), testContextItem00A);
176         axContextSchemas.getSchemasMap().put(testContextItem00B.getKey(), testContextItem00B);
177         axContextSchemas.getSchemasMap().put(testContextItem00C.getKey(), testContextItem00C);
178
179         axContextSchemas.getSchemasMap().put(testPolicyContextItem.getKey(), testPolicyContextItem);
180         axContextSchemas.getSchemasMap().put(testGlobalContextItem.getKey(), testGlobalContextItem);
181         axContextSchemas.getSchemasMap().put(testExternalContextItem.getKey(), testExternalContextItem);
182
183         AxEvent event0000 = new AxEvent(new AxArtifactKey("Event0000", DEFAULT_VERSION),
184                         DEFAULT_NAMESPACE);
185         event0000.setSource(DEFAULT_SOURCE);
186         event0000.setTarget(MATCH);
187         event0000.getParameterMap().put(TEST_SLOGAN,
188                         new AxField(new AxReferenceKey(event0000.getKey(), TEST_SLOGAN), testSlogan.getKey()));
189         event0000.getParameterMap().put(TEST_MATCH_CASE,
190                         new AxField(new AxReferenceKey(event0000.getKey(), TEST_MATCH_CASE), testCase.getKey()));
191         event0000.getParameterMap().put(TEST_TIMESTAMP,
192                         new AxField(new AxReferenceKey(event0000.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
193         event0000.getParameterMap().put(TEST_TEMPERATURE, new AxField(
194                         new AxReferenceKey(event0000.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
195
196         AxEvent event0001 = new AxEvent(new AxArtifactKey("Event0001", DEFAULT_VERSION),
197                         DEFAULT_NAMESPACE);
198         event0001.setSource(MATCH);
199         event0001.setTarget(ESTABLISH);
200         event0001.getParameterMap().put(TEST_SLOGAN,
201                         new AxField(new AxReferenceKey(event0001.getKey(), TEST_SLOGAN), testSlogan.getKey()));
202         event0001.getParameterMap().put(TEST_MATCH_CASE,
203                         new AxField(new AxReferenceKey(event0001.getKey(), TEST_MATCH_CASE), testCase.getKey()));
204         event0001.getParameterMap().put(TEST_TIMESTAMP,
205                         new AxField(new AxReferenceKey(event0001.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
206         event0001.getParameterMap().put(TEST_TEMPERATURE, new AxField(
207                         new AxReferenceKey(event0001.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
208         event0001.getParameterMap().put(TEST_MATCH_CASE_SELECTED, new AxField(
209                         new AxReferenceKey(event0001.getKey(), TEST_MATCH_CASE_SELECTED), testCase.getKey()));
210         event0001.getParameterMap().put(TEST_MATCH_STATE_TIME, new AxField(
211                         new AxReferenceKey(event0001.getKey(), TEST_MATCH_STATE_TIME), testTimestamp.getKey()));
212
213         AxEvent event0002 = new AxEvent(new AxArtifactKey("Event0002", DEFAULT_VERSION),
214                         DEFAULT_NAMESPACE);
215         event0002.setSource(ESTABLISH);
216         event0002.setTarget(DECIDE);
217         event0002.getParameterMap().put(TEST_SLOGAN,
218                         new AxField(new AxReferenceKey(event0002.getKey(), TEST_SLOGAN), testSlogan.getKey()));
219         event0002.getParameterMap().put(TEST_MATCH_CASE,
220                         new AxField(new AxReferenceKey(event0002.getKey(), TEST_MATCH_CASE), testCase.getKey()));
221         event0002.getParameterMap().put(TEST_TIMESTAMP,
222                         new AxField(new AxReferenceKey(event0002.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
223         event0002.getParameterMap().put(TEST_TEMPERATURE, new AxField(
224                         new AxReferenceKey(event0002.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
225         event0002.getParameterMap().put(TEST_MATCH_CASE_SELECTED, new AxField(
226                         new AxReferenceKey(event0002.getKey(), TEST_MATCH_CASE_SELECTED), testCase.getKey()));
227         event0002.getParameterMap().put(TEST_MATCH_STATE_TIME, new AxField(
228                         new AxReferenceKey(event0002.getKey(), TEST_MATCH_STATE_TIME), testTimestamp.getKey()));
229         event0002.getParameterMap().put(TEST_ESTABLISH_CASE_SELECTED, new AxField(
230                         new AxReferenceKey(event0002.getKey(), TEST_ESTABLISH_CASE_SELECTED), testCase.getKey()));
231         event0002.getParameterMap().put(TEST_ESTABLISH_STATE_TIME, new AxField(
232                         new AxReferenceKey(event0002.getKey(), TEST_ESTABLISH_STATE_TIME), testTimestamp.getKey()));
233
234         AxEvent event0003 = new AxEvent(new AxArtifactKey("Event0003", DEFAULT_VERSION),
235                         DEFAULT_NAMESPACE);
236         event0003.setSource(DECIDE);
237         event0003.setTarget("Act");
238         event0003.getParameterMap().put(TEST_SLOGAN,
239                         new AxField(new AxReferenceKey(event0003.getKey(), TEST_SLOGAN), testSlogan.getKey()));
240         event0003.getParameterMap().put(TEST_MATCH_CASE,
241                         new AxField(new AxReferenceKey(event0003.getKey(), TEST_MATCH_CASE), testCase.getKey()));
242         event0003.getParameterMap().put(TEST_TIMESTAMP,
243                         new AxField(new AxReferenceKey(event0003.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
244         event0003.getParameterMap().put(TEST_TEMPERATURE, new AxField(
245                         new AxReferenceKey(event0003.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
246         event0003.getParameterMap().put(TEST_MATCH_CASE_SELECTED, new AxField(
247                         new AxReferenceKey(event0003.getKey(), TEST_MATCH_CASE_SELECTED), testCase.getKey()));
248         event0003.getParameterMap().put(TEST_MATCH_STATE_TIME, new AxField(
249                         new AxReferenceKey(event0003.getKey(), TEST_MATCH_STATE_TIME), testTimestamp.getKey()));
250         event0003.getParameterMap().put(TEST_ESTABLISH_CASE_SELECTED, new AxField(
251                         new AxReferenceKey(event0003.getKey(), TEST_ESTABLISH_CASE_SELECTED), testCase.getKey()));
252         event0003.getParameterMap().put(TEST_ESTABLISH_STATE_TIME, new AxField(
253                         new AxReferenceKey(event0003.getKey(), TEST_ESTABLISH_STATE_TIME), testTimestamp.getKey()));
254         event0003.getParameterMap().put(TEST_DECIDE_CASE_SELECTED, new AxField(
255                         new AxReferenceKey(event0003.getKey(), TEST_DECIDE_CASE_SELECTED), testCase.getKey()));
256         event0003.getParameterMap().put(TEST_DECIDE_STATE_TIME, new AxField(
257                         new AxReferenceKey(event0003.getKey(), TEST_DECIDE_STATE_TIME), testTimestamp.getKey()));
258
259         AxEvent event0004 = new AxEvent(new AxArtifactKey("Event0004", DEFAULT_VERSION),
260                         DEFAULT_NAMESPACE);
261         event0004.setSource("Act");
262         event0004.setTarget(DEFAULT_SOURCE);
263         event0004.getParameterMap().put(TEST_SLOGAN,
264                         new AxField(new AxReferenceKey(event0004.getKey(), TEST_SLOGAN), testSlogan.getKey()));
265         event0004.getParameterMap().put(TEST_MATCH_CASE,
266                         new AxField(new AxReferenceKey(event0004.getKey(), TEST_MATCH_CASE), testCase.getKey()));
267         event0004.getParameterMap().put(TEST_TIMESTAMP,
268                         new AxField(new AxReferenceKey(event0004.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
269         event0004.getParameterMap().put(TEST_TEMPERATURE, new AxField(
270                         new AxReferenceKey(event0004.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
271         event0004.getParameterMap().put(TEST_MATCH_CASE_SELECTED, new AxField(
272                         new AxReferenceKey(event0004.getKey(), TEST_MATCH_CASE_SELECTED), testCase.getKey()));
273         event0004.getParameterMap().put(TEST_MATCH_STATE_TIME, new AxField(
274                         new AxReferenceKey(event0004.getKey(), TEST_MATCH_STATE_TIME), testTimestamp.getKey()));
275         event0004.getParameterMap().put(TEST_ESTABLISH_CASE_SELECTED, new AxField(
276                         new AxReferenceKey(event0004.getKey(), TEST_ESTABLISH_CASE_SELECTED), testCase.getKey()));
277         event0004.getParameterMap().put(TEST_ESTABLISH_STATE_TIME, new AxField(
278                         new AxReferenceKey(event0004.getKey(), TEST_ESTABLISH_STATE_TIME), testTimestamp.getKey()));
279         event0004.getParameterMap().put(TEST_DECIDE_CASE_SELECTED, new AxField(
280                         new AxReferenceKey(event0004.getKey(), TEST_DECIDE_CASE_SELECTED), testCase.getKey()));
281         event0004.getParameterMap().put(TEST_DECIDE_STATE_TIME, new AxField(
282                         new AxReferenceKey(event0004.getKey(), TEST_DECIDE_STATE_TIME), testTimestamp.getKey()));
283         event0004.getParameterMap().put(TEST_ACT_CASE_SELECTED,
284                         new AxField(new AxReferenceKey(event0004.getKey(), TEST_ACT_CASE_SELECTED), testCase.getKey()));
285         event0004.getParameterMap().put(TEST_ACT_STATE_TIME, new AxField(
286                         new AxReferenceKey(event0004.getKey(), TEST_ACT_STATE_TIME), testTimestamp.getKey()));
287
288         AxEvent event0100 = new AxEvent(new AxArtifactKey("Event0100", DEFAULT_VERSION),
289                         DEFAULT_NAMESPACE);
290         event0100.setSource(DEFAULT_SOURCE);
291         event0100.setTarget(MATCH);
292         event0100.getParameterMap().put(TEST_SLOGAN,
293                         new AxField(new AxReferenceKey(event0100.getKey(), TEST_SLOGAN), testSlogan.getKey()));
294         event0100.getParameterMap().put(TEST_MATCH_CASE,
295                         new AxField(new AxReferenceKey(event0100.getKey(), TEST_MATCH_CASE), testCase.getKey()));
296         event0100.getParameterMap().put(TEST_TIMESTAMP,
297                         new AxField(new AxReferenceKey(event0100.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
298         event0100.getParameterMap().put(TEST_TEMPERATURE, new AxField(
299                         new AxReferenceKey(event0100.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
300
301         AxEvent event0101 = new AxEvent(new AxArtifactKey("Event0101", DEFAULT_VERSION),
302                         DEFAULT_NAMESPACE);
303         event0101.setSource(MATCH);
304         event0101.setTarget(ESTABLISH);
305         event0101.getParameterMap().put(TEST_SLOGAN,
306                         new AxField(new AxReferenceKey(event0101.getKey(), TEST_SLOGAN), testSlogan.getKey()));
307         event0101.getParameterMap().put(TEST_MATCH_CASE,
308                         new AxField(new AxReferenceKey(event0101.getKey(), TEST_MATCH_CASE), testCase.getKey()));
309         event0101.getParameterMap().put(TEST_TIMESTAMP,
310                         new AxField(new AxReferenceKey(event0101.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
311         event0101.getParameterMap().put(TEST_TEMPERATURE, new AxField(
312                         new AxReferenceKey(event0101.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
313         event0101.getParameterMap().put(TEST_MATCH_CASE_SELECTED, new AxField(
314                         new AxReferenceKey(event0101.getKey(), TEST_MATCH_CASE_SELECTED), testCase.getKey()));
315         event0101.getParameterMap().put(TEST_MATCH_STATE_TIME, new AxField(
316                         new AxReferenceKey(event0101.getKey(), TEST_MATCH_STATE_TIME), testTimestamp.getKey()));
317
318         AxEvent event0102 = new AxEvent(new AxArtifactKey("Event0102", DEFAULT_VERSION),
319                         DEFAULT_NAMESPACE);
320         event0102.setSource(ESTABLISH);
321         event0102.setTarget(DECIDE);
322         event0102.getParameterMap().put(TEST_SLOGAN,
323                         new AxField(new AxReferenceKey(event0102.getKey(), TEST_SLOGAN), testSlogan.getKey()));
324         event0102.getParameterMap().put(TEST_MATCH_CASE,
325                         new AxField(new AxReferenceKey(event0102.getKey(), TEST_MATCH_CASE), testCase.getKey()));
326         event0102.getParameterMap().put(TEST_TIMESTAMP,
327                         new AxField(new AxReferenceKey(event0102.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
328         event0102.getParameterMap().put(TEST_TEMPERATURE, new AxField(
329                         new AxReferenceKey(event0102.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
330         event0102.getParameterMap().put(TEST_MATCH_CASE_SELECTED, new AxField(
331                         new AxReferenceKey(event0102.getKey(), TEST_MATCH_CASE_SELECTED), testCase.getKey()));
332         event0102.getParameterMap().put(TEST_MATCH_STATE_TIME, new AxField(
333                         new AxReferenceKey(event0102.getKey(), TEST_MATCH_STATE_TIME), testTimestamp.getKey()));
334         event0102.getParameterMap().put(TEST_ESTABLISH_CASE_SELECTED, new AxField(
335                         new AxReferenceKey(event0102.getKey(), TEST_ESTABLISH_CASE_SELECTED), testCase.getKey()));
336         event0102.getParameterMap().put(TEST_ESTABLISH_STATE_TIME, new AxField(
337                         new AxReferenceKey(event0102.getKey(), TEST_ESTABLISH_STATE_TIME), testTimestamp.getKey()));
338
339         AxEvent event0103 = new AxEvent(new AxArtifactKey("Event0103", DEFAULT_VERSION),
340                         DEFAULT_NAMESPACE);
341         event0103.setSource(DECIDE);
342         event0103.setTarget("Act");
343         event0103.getParameterMap().put(TEST_SLOGAN,
344                         new AxField(new AxReferenceKey(event0103.getKey(), TEST_SLOGAN), testSlogan.getKey()));
345         event0103.getParameterMap().put(TEST_MATCH_CASE,
346                         new AxField(new AxReferenceKey(event0103.getKey(), TEST_MATCH_CASE), testCase.getKey()));
347         event0103.getParameterMap().put(TEST_TIMESTAMP,
348                         new AxField(new AxReferenceKey(event0103.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
349         event0103.getParameterMap().put(TEST_TEMPERATURE, new AxField(
350                         new AxReferenceKey(event0103.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
351         event0103.getParameterMap().put(TEST_MATCH_CASE_SELECTED, new AxField(
352                         new AxReferenceKey(event0103.getKey(), TEST_MATCH_CASE_SELECTED), testCase.getKey()));
353         event0103.getParameterMap().put(TEST_MATCH_STATE_TIME, new AxField(
354                         new AxReferenceKey(event0103.getKey(), TEST_MATCH_STATE_TIME), testTimestamp.getKey()));
355         event0103.getParameterMap().put(TEST_ESTABLISH_CASE_SELECTED, new AxField(
356                         new AxReferenceKey(event0103.getKey(), TEST_ESTABLISH_CASE_SELECTED), testCase.getKey()));
357         event0103.getParameterMap().put(TEST_ESTABLISH_STATE_TIME, new AxField(
358                         new AxReferenceKey(event0103.getKey(), TEST_ESTABLISH_STATE_TIME), testTimestamp.getKey()));
359         event0103.getParameterMap().put(TEST_DECIDE_CASE_SELECTED, new AxField(
360                         new AxReferenceKey(event0103.getKey(), TEST_DECIDE_CASE_SELECTED), testCase.getKey()));
361         event0103.getParameterMap().put(TEST_DECIDE_STATE_TIME, new AxField(
362                         new AxReferenceKey(event0103.getKey(), TEST_DECIDE_STATE_TIME), testTimestamp.getKey()));
363
364         AxEvent event0104 = new AxEvent(new AxArtifactKey("Event0104", DEFAULT_VERSION),
365                         DEFAULT_NAMESPACE);
366         event0104.setSource("Act");
367         event0104.setTarget(DEFAULT_SOURCE);
368         event0104.getParameterMap().put(TEST_SLOGAN,
369                         new AxField(new AxReferenceKey(event0104.getKey(), TEST_SLOGAN), testSlogan.getKey()));
370         event0104.getParameterMap().put(TEST_MATCH_CASE,
371                         new AxField(new AxReferenceKey(event0104.getKey(), TEST_MATCH_CASE), testCase.getKey()));
372         event0104.getParameterMap().put(TEST_TIMESTAMP,
373                         new AxField(new AxReferenceKey(event0104.getKey(), TEST_TIMESTAMP), testTimestamp.getKey()));
374         event0104.getParameterMap().put(TEST_TEMPERATURE, new AxField(
375                         new AxReferenceKey(event0104.getKey(), TEST_TEMPERATURE), testTemperature.getKey()));
376         event0104.getParameterMap().put(TEST_MATCH_CASE_SELECTED, new AxField(
377                         new AxReferenceKey(event0104.getKey(), TEST_MATCH_CASE_SELECTED), testCase.getKey()));
378         event0104.getParameterMap().put(TEST_MATCH_STATE_TIME, new AxField(
379                         new AxReferenceKey(event0104.getKey(), TEST_MATCH_STATE_TIME), testTimestamp.getKey()));
380         event0104.getParameterMap().put(TEST_ESTABLISH_CASE_SELECTED, new AxField(
381                         new AxReferenceKey(event0104.getKey(), TEST_ESTABLISH_CASE_SELECTED), testCase.getKey()));
382         event0104.getParameterMap().put(TEST_ESTABLISH_STATE_TIME, new AxField(
383                         new AxReferenceKey(event0104.getKey(), TEST_ESTABLISH_STATE_TIME), testTimestamp.getKey()));
384         event0104.getParameterMap().put(TEST_DECIDE_CASE_SELECTED, new AxField(
385                         new AxReferenceKey(event0104.getKey(), TEST_DECIDE_CASE_SELECTED), testCase.getKey()));
386         event0104.getParameterMap().put(TEST_DECIDE_STATE_TIME, new AxField(
387                         new AxReferenceKey(event0104.getKey(), TEST_DECIDE_STATE_TIME), testTimestamp.getKey()));
388         event0104.getParameterMap().put(TEST_ACT_CASE_SELECTED,
389                         new AxField(new AxReferenceKey(event0104.getKey(), TEST_ACT_CASE_SELECTED), testCase.getKey()));
390         event0104.getParameterMap().put(TEST_ACT_STATE_TIME, new AxField(
391                         new AxReferenceKey(event0104.getKey(), TEST_ACT_STATE_TIME), testTimestamp.getKey()));
392
393         AxEvents events = new AxEvents(new AxArtifactKey("Events", DEFAULT_VERSION));
394         events.getEventMap().put(event0000.getKey(), event0000);
395         events.getEventMap().put(event0001.getKey(), event0001);
396         events.getEventMap().put(event0002.getKey(), event0002);
397         events.getEventMap().put(event0003.getKey(), event0003);
398         events.getEventMap().put(event0004.getKey(), event0004);
399         events.getEventMap().put(event0100.getKey(), event0100);
400         events.getEventMap().put(event0101.getKey(), event0101);
401         events.getEventMap().put(event0102.getKey(), event0102);
402         events.getEventMap().put(event0103.getKey(), event0103);
403         events.getEventMap().put(event0104.getKey(), event0104);
404
405         AxContextAlbum externalContextAlbum = new AxContextAlbum(
406                         new AxArtifactKey("ExternalContextAlbum", DEFAULT_VERSION), "EXTERNAL", false,
407                         testExternalContextItem.getKey());
408         AxContextAlbum globalContextAlbum = new AxContextAlbum(new AxArtifactKey("GlobalContextAlbum", DEFAULT_VERSION),
409                         "GLOBAL", true, testGlobalContextItem.getKey());
410         AxContextAlbum policy0ContextAlbum = new AxContextAlbum(
411                         new AxArtifactKey("Policy0ContextAlbum", DEFAULT_VERSION), "APPLICATION", true,
412                         testPolicyContextItem.getKey());
413         AxContextAlbum policy1ContextAlbum = new AxContextAlbum(
414                         new AxArtifactKey("Policy1ContextAlbum", DEFAULT_VERSION), "APPLICATION", true,
415                         testPolicyContextItem.getKey());
416
417         AxContextAlbums albums = new AxContextAlbums(new AxArtifactKey("Context", DEFAULT_VERSION));
418         albums.getAlbumsMap().put(externalContextAlbum.getKey(), externalContextAlbum);
419         albums.getAlbumsMap().put(globalContextAlbum.getKey(), globalContextAlbum);
420         albums.getAlbumsMap().put(policy0ContextAlbum.getKey(), policy0ContextAlbum);
421         albums.getAlbumsMap().put(policy1ContextAlbum.getKey(), policy1ContextAlbum);
422
423         Set<AxArtifactKey> referenceKeySet0 = new TreeSet<>();
424         referenceKeySet0.add(policy0ContextAlbum.getKey());
425         referenceKeySet0.add(policy1ContextAlbum.getKey());
426         referenceKeySet0.add(globalContextAlbum.getKey());
427         referenceKeySet0.add(externalContextAlbum.getKey());
428
429         Set<AxArtifactKey> referenceKeySet1 = new TreeSet<>();
430         referenceKeySet1.add(policy0ContextAlbum.getKey());
431         referenceKeySet1.add(globalContextAlbum.getKey());
432
433         Set<AxArtifactKey> referenceKeySet2 = new TreeSet<>();
434         referenceKeySet2.add(policy1ContextAlbum.getKey());
435         referenceKeySet2.add(globalContextAlbum.getKey());
436
437         Set<AxArtifactKey> referenceKeySet3 = new TreeSet<>();
438         referenceKeySet3.add(globalContextAlbum.getKey());
439         referenceKeySet3.add(externalContextAlbum.getKey());
440
441         List<Set<AxArtifactKey>> referenceKeySetList = new ArrayList<>();
442         referenceKeySetList.add(referenceKeySet0);
443         referenceKeySetList.add(referenceKeySet1);
444         referenceKeySetList.add(referenceKeySet2);
445         referenceKeySetList.add(referenceKeySet3);
446
447         AxTasks tasks = new AxTasks(new AxArtifactKey("Tasks", DEFAULT_VERSION));
448         tasks.getTaskMap().putAll(getTaskMap(MATCH, event0000.getParameterMap(), event0001.getParameterMap(),
449                         referenceKeySetList, axLogicExecutorType));
450         tasks.getTaskMap().putAll(getTaskMap(ESTABLISH, event0001.getParameterMap(), event0002.getParameterMap(),
451                         referenceKeySetList, axLogicExecutorType));
452         tasks.getTaskMap().putAll(getTaskMap(DECIDE, event0002.getParameterMap(), event0003.getParameterMap(),
453                         referenceKeySetList, axLogicExecutorType));
454         tasks.getTaskMap().putAll(getTaskMap("Act", event0003.getParameterMap(), event0004.getParameterMap(),
455                         referenceKeySetList, axLogicExecutorType));
456
457         Set<AxArtifactKey> matchTasks = new TreeSet<>();
458         Set<AxArtifactKey> establishTasks = new TreeSet<>();
459         Set<AxArtifactKey> decideTasks = new TreeSet<>();
460         Set<AxArtifactKey> actTasks = new TreeSet<>();
461         for (AxTask task : tasks.getTaskMap().values()) {
462             if (task.getKey().getName().contains(MATCH)) {
463                 matchTasks.add(task.getKey());
464             }
465             if (task.getKey().getName().contains(ESTABLISH)) {
466                 establishTasks.add(task.getKey());
467             }
468             if (task.getKey().getName().contains(DECIDE)) {
469                 decideTasks.add(task.getKey());
470             }
471             if (task.getKey().getName().contains("Act")) {
472                 actTasks.add(task.getKey());
473             }
474         }
475         List<Set<AxArtifactKey>> taskReferenceList = new ArrayList<>();
476         taskReferenceList.add(matchTasks);
477         taskReferenceList.add(establishTasks);
478         taskReferenceList.add(decideTasks);
479         taskReferenceList.add(actTasks);
480
481         List<AxArtifactKey> p0InEventList = new ArrayList<>();
482         p0InEventList.add(event0000.getKey());
483         p0InEventList.add(event0001.getKey());
484         p0InEventList.add(event0002.getKey());
485         p0InEventList.add(event0003.getKey());
486
487         List<AxArtifactKey> p0OutEventList = new ArrayList<>();
488         p0OutEventList.add(event0001.getKey());
489         p0OutEventList.add(event0002.getKey());
490         p0OutEventList.add(event0003.getKey());
491         p0OutEventList.add(event0004.getKey());
492
493         List<AxArtifactKey> p0defaultTaskList = new ArrayList<>();
494         p0defaultTaskList.add(tasks.get("Task_Match0").getKey());
495         p0defaultTaskList.add(tasks.get("Task_Establish2").getKey());
496         p0defaultTaskList.add(tasks.get("Task_Decide3").getKey());
497         p0defaultTaskList.add(tasks.get("Task_Act1").getKey());
498
499         List<AxArtifactKey> p1InEventList = new ArrayList<>();
500         p1InEventList.add(event0100.getKey());
501         p1InEventList.add(event0101.getKey());
502         p1InEventList.add(event0102.getKey());
503         p1InEventList.add(event0103.getKey());
504
505         List<AxArtifactKey> p1OutEventList = new ArrayList<>();
506         p1OutEventList.add(event0101.getKey());
507         p1OutEventList.add(event0102.getKey());
508         p1OutEventList.add(event0103.getKey());
509         p1OutEventList.add(event0104.getKey());
510
511         List<AxArtifactKey> p1defaultTaskList = new ArrayList<>();
512         p1defaultTaskList.add(tasks.get("Task_Match3").getKey());
513         p1defaultTaskList.add(tasks.get("Task_Establish1").getKey());
514         p1defaultTaskList.add(tasks.get("Task_Decide3").getKey());
515         p1defaultTaskList.add(tasks.get("Task_Act0").getKey());
516
517         Set<AxArtifactKey> p0ReferenceKeySet0 = new TreeSet<>();
518         p0ReferenceKeySet0.add(policy0ContextAlbum.getKey());
519         p0ReferenceKeySet0.add(globalContextAlbum.getKey());
520
521         Set<AxArtifactKey> p0ReferenceKeySet1 = new TreeSet<>();
522         p0ReferenceKeySet1.add(policy1ContextAlbum.getKey());
523         p0ReferenceKeySet1.add(globalContextAlbum.getKey());
524         p0ReferenceKeySet1.add(externalContextAlbum.getKey());
525
526         Set<AxArtifactKey> p0ReferenceKeySet2 = new TreeSet<>();
527         p0ReferenceKeySet2.add(policy0ContextAlbum.getKey());
528         p0ReferenceKeySet2.add(globalContextAlbum.getKey());
529         p0ReferenceKeySet2.add(externalContextAlbum.getKey());
530
531         Set<AxArtifactKey> p0ReferenceKeySet3 = new TreeSet<>();
532         p0ReferenceKeySet3.add(globalContextAlbum.getKey());
533
534         List<Set<AxArtifactKey>> p0ReferenceKeySetList = new ArrayList<>();
535         p0ReferenceKeySetList.add(p0ReferenceKeySet0);
536         p0ReferenceKeySetList.add(p0ReferenceKeySet1);
537         p0ReferenceKeySetList.add(p0ReferenceKeySet2);
538         p0ReferenceKeySetList.add(p0ReferenceKeySet3);
539
540         AxPolicy policy0 = new AxPolicy(new AxArtifactKey("Policy0", DEFAULT_VERSION));
541         policy0.setTemplate("MEDA");
542         policy0.setStateMap(getStateMap(policy0.getKey(), p0InEventList, p0OutEventList, p0ReferenceKeySetList,
543                         axLogicExecutorType, p0defaultTaskList, taskReferenceList));
544         policy0.setFirstState(policy0.getStateMap().get(MATCH).getKey().getLocalName());
545
546         Set<AxArtifactKey> p1ReferenceKeySet0 = new TreeSet<>();
547         p1ReferenceKeySet0.add(policy1ContextAlbum.getKey());
548         p1ReferenceKeySet0.add(globalContextAlbum.getKey());
549         p1ReferenceKeySet0.add(externalContextAlbum.getKey());
550
551         Set<AxArtifactKey> p1ReferenceKeySet1 = new TreeSet<>();
552         p1ReferenceKeySet1.add(policy1ContextAlbum.getKey());
553         p1ReferenceKeySet1.add(globalContextAlbum.getKey());
554         p1ReferenceKeySet1.add(externalContextAlbum.getKey());
555
556         Set<AxArtifactKey> p1ReferenceKeySet2 = new TreeSet<>();
557         p1ReferenceKeySet2.add(policy1ContextAlbum.getKey());
558         p1ReferenceKeySet2.add(globalContextAlbum.getKey());
559         p1ReferenceKeySet2.add(externalContextAlbum.getKey());
560
561         Set<AxArtifactKey> p1ReferenceKeySet3 = new TreeSet<>();
562         p1ReferenceKeySet3.add(globalContextAlbum.getKey());
563
564         List<Set<AxArtifactKey>> p1ReferenceKeySetList = new ArrayList<>();
565         p1ReferenceKeySetList.add(p1ReferenceKeySet0);
566         p1ReferenceKeySetList.add(p1ReferenceKeySet1);
567         p1ReferenceKeySetList.add(p1ReferenceKeySet2);
568         p1ReferenceKeySetList.add(p1ReferenceKeySet3);
569
570         AxPolicy policy1 = new AxPolicy(new AxArtifactKey("Policy1", DEFAULT_VERSION));
571         policy1.setTemplate("MEDA");
572         policy1.setStateMap(getStateMap(policy1.getKey(), p1InEventList, p1OutEventList, p1ReferenceKeySetList,
573                         axLogicExecutorType, p1defaultTaskList, taskReferenceList));
574         policy1.setFirstState(policy1.getStateMap().get(MATCH).getKey().getLocalName());
575
576         AxPolicies policies = new AxPolicies(new AxArtifactKey("Policies", DEFAULT_VERSION));
577         policies.getPolicyMap().put(policy0.getKey(), policy0);
578         policies.getPolicyMap().put(policy1.getKey(), policy1);
579
580         AxKeyInformation keyInformation = new AxKeyInformation(new AxArtifactKey("KeyInformation", DEFAULT_VERSION));
581         AxPolicyModel policyModel = new AxPolicyModel(
582                         new AxArtifactKey("SamplePolicyModel" + axLogicExecutorType, DEFAULT_VERSION));
583         policyModel.setKeyInformation(keyInformation);
584         policyModel.setPolicies(policies);
585         policyModel.setEvents(events);
586         policyModel.setTasks(tasks);
587         policyModel.setAlbums(albums);
588         policyModel.setSchemas(axContextSchemas);
589         policyModel.getKeyInformation().generateKeyInfo(policyModel);
590
591         AxValidationResult result = policyModel.validate(new AxValidationResult());
592         if (!result.getValidationResult().equals(AxValidationResult.ValidationResult.VALID)) {
593             throw new ApexRuntimeException("model " + policyModel.getId() + " is not valid" + result);
594         }
595         return policyModel;
596     }
597
598     /**
599      * Gets the state map.
600      *
601      * @param policyKey the policy key
602      * @param inEventKeyList the in event key list
603      * @param outEventKeyList the out event key list
604      * @param referenceKeySetList the reference key set list
605      * @param axLogicExecutorType the ax logic executor type
606      * @param defaultTaskList the default task list
607      * @param taskKeySetList the task key set list
608      * @return the state map
609      */
610     private Map<String, AxState> getStateMap(final AxArtifactKey policyKey, final List<AxArtifactKey> inEventKeyList,
611                     final List<AxArtifactKey> outEventKeyList, final List<Set<AxArtifactKey>> referenceKeySetList,
612                     final String axLogicExecutorType, final List<AxArtifactKey> defaultTaskList,
613                     final List<Set<AxArtifactKey>> taskKeySetList) {
614
615         AxState actState = new AxState(new AxReferenceKey(policyKey, "Act"));
616         actState.setTrigger(inEventKeyList.get(3));
617         AxStateOutput act2Out = new AxStateOutput(actState.getKey(), AxReferenceKey.getNullKey(),
618                         outEventKeyList.get(3));
619         actState.getStateOutputs().put(act2Out.getKey().getLocalName(), act2Out);
620         actState.setContextAlbumReferences(referenceKeySetList.get(3));
621
622         AxLogicReader logicReader = new PolicyLogicReader().setLogicPackage(this.getClass().getPackage().getName())
623                         .setDefaultLogic("DefaultStateLogic");
624         actState.setTaskSelectionLogic(new AxTaskSelectionLogic(actState.getKey(), TASK_SELECTION_LIGIC,
625                         axLogicExecutorType, logicReader));
626         actState.setDefaultTask(defaultTaskList.get(3));
627         for (AxArtifactKey taskKey : taskKeySetList.get(3)) {
628             actState.getTaskReferences().put(taskKey, new AxStateTaskReference(actState.getKey(), taskKey,
629                             AxStateTaskOutputType.DIRECT, act2Out.getKey()));
630         }
631
632         AxState decideState = new AxState(new AxReferenceKey(policyKey, DECIDE));
633         decideState.setTrigger(inEventKeyList.get(2));
634         AxStateOutput decide2Act = new AxStateOutput(decideState.getKey(), actState.getKey(), outEventKeyList.get(2));
635         decideState.getStateOutputs().put(decide2Act.getKey().getLocalName(), decide2Act);
636         decideState.setContextAlbumReferences(referenceKeySetList.get(2));
637         decideState.setTaskSelectionLogic(new AxTaskSelectionLogic(decideState.getKey(), TASK_SELECTION_LIGIC,
638                         axLogicExecutorType, logicReader));
639         decideState.setDefaultTask(defaultTaskList.get(2));
640         for (AxArtifactKey taskKey : taskKeySetList.get(2)) {
641             decideState.getTaskReferences().put(taskKey, new AxStateTaskReference(decideState.getKey(), taskKey,
642                             AxStateTaskOutputType.DIRECT, decide2Act.getKey()));
643         }
644
645         AxState establishState = new AxState(new AxReferenceKey(policyKey, ESTABLISH));
646         establishState.setTrigger(inEventKeyList.get(1));
647         AxStateOutput establish2Decide = new AxStateOutput(establishState.getKey(), decideState.getKey(),
648                         outEventKeyList.get(1));
649         establishState.getStateOutputs().put(establish2Decide.getKey().getLocalName(), establish2Decide);
650         establishState.setContextAlbumReferences(referenceKeySetList.get(1));
651         establishState.setTaskSelectionLogic(new AxTaskSelectionLogic(establishState.getKey(), TASK_SELECTION_LIGIC,
652                         axLogicExecutorType, logicReader));
653         establishState.setDefaultTask(defaultTaskList.get(1));
654         for (AxArtifactKey taskKey : taskKeySetList.get(1)) {
655             establishState.getTaskReferences().put(taskKey, new AxStateTaskReference(establishState.getKey(), taskKey,
656                             AxStateTaskOutputType.DIRECT, establish2Decide.getKey()));
657         }
658
659         AxState matchState = new AxState(new AxReferenceKey(policyKey, MATCH));
660         matchState.setTrigger(inEventKeyList.get(0));
661         AxStateOutput match2Establish = new AxStateOutput(matchState.getKey(), establishState.getKey(),
662                         outEventKeyList.get(0));
663         matchState.getStateOutputs().put(match2Establish.getKey().getLocalName(), match2Establish);
664         matchState.setContextAlbumReferences(referenceKeySetList.get(0));
665         matchState.setTaskSelectionLogic(new AxTaskSelectionLogic(matchState.getKey(), TASK_SELECTION_LIGIC,
666                         axLogicExecutorType, logicReader));
667         matchState.setDefaultTask(defaultTaskList.get(0));
668         for (AxArtifactKey taskKey : taskKeySetList.get(0)) {
669             matchState.getTaskReferences().put(taskKey, new AxStateTaskReference(matchState.getKey(), taskKey,
670                             AxStateTaskOutputType.DIRECT, match2Establish.getKey()));
671         }
672
673         Map<String, AxState> stateMap = new TreeMap<>();
674         stateMap.put(matchState.getKey().getLocalName(), matchState);
675         stateMap.put(establishState.getKey().getLocalName(), establishState);
676         stateMap.put(decideState.getKey().getLocalName(), decideState);
677         stateMap.put(actState.getKey().getLocalName(), actState);
678
679         return stateMap;
680     }
681     // CHECKSTYLE:ON: checkstyle:maximumMethodLength
682
683     /**
684      * Gets the task map.
685      *
686      * @param state the state
687      * @param inputFields the input fields
688      * @param outputFields the output fields
689      * @param referenceKeySetList the reference key set list
690      * @param axLogicExecutorType the ax logic executor type
691      * @return the task map
692      */
693     private Map<AxArtifactKey, AxTask> getTaskMap(final String state, final Map<String, AxField> inputFields,
694                     final Map<String, AxField> outputFields, final List<Set<AxArtifactKey>> referenceKeySetList,
695                     final String axLogicExecutorType) {
696
697         AxTask testTask0 = new AxTask(new AxArtifactKey(TASK + state + "0", DEFAULT_VERSION));
698         testTask0.duplicateInputFields(inputFields);
699         testTask0.duplicateOutputFields(outputFields);
700         AxTaskParameter parameter00 = new AxTaskParameter(new AxReferenceKey(testTask0.getKey(), PARAMETER0),
701                         DEFAULT_VALUE0);
702         AxTaskParameter parameter01 = new AxTaskParameter(new AxReferenceKey(testTask0.getKey(), PARAMETER1),
703                         DEFAULT_VALUE1);
704         AxTaskParameter parameter02 = new AxTaskParameter(new AxReferenceKey(testTask0.getKey(), PARAMETER2),
705                         DEFAULT_VALUE2);
706         testTask0.getTaskParameters().put(parameter00.getKey().getLocalName(), parameter00);
707         testTask0.getTaskParameters().put(parameter01.getKey().getLocalName(), parameter01);
708         testTask0.getTaskParameters().put(parameter02.getKey().getLocalName(), parameter02);
709         testTask0.setContextAlbumReferences(referenceKeySetList.get(0));
710
711         AxLogicReader logicReader = new PolicyLogicReader().setLogicPackage(this.getClass().getPackage().getName())
712                         .setDefaultLogic("DefaultTaskLogic");
713         testTask0.setTaskLogic(getTaskLogic(testTask0, logicReader, axLogicExecutorType, state, "2"));
714
715         AxTask testTask1 = new AxTask(new AxArtifactKey(TASK + state + "1", DEFAULT_VERSION));
716         testTask1.duplicateInputFields(inputFields);
717         testTask1.duplicateOutputFields(outputFields);
718         AxTaskParameter parameter10 = new AxTaskParameter(new AxReferenceKey(testTask1.getKey(), PARAMETER0),
719                         DEFAULT_VALUE0);
720         AxTaskParameter parameter11 = new AxTaskParameter(new AxReferenceKey(testTask1.getKey(), PARAMETER1),
721                         DEFAULT_VALUE1);
722         testTask1.getTaskParameters().put(parameter10.getKey().getLocalName(), parameter10);
723         testTask1.getTaskParameters().put(parameter11.getKey().getLocalName(), parameter11);
724         testTask1.setContextAlbumReferences(referenceKeySetList.get(1));
725         testTask1.setTaskLogic(getTaskLogic(testTask1, logicReader, axLogicExecutorType, state, "3"));
726
727         AxTask testTask2 = new AxTask(new AxArtifactKey(TASK + state + "2", DEFAULT_VERSION));
728         testTask2.duplicateInputFields(inputFields);
729         testTask2.duplicateOutputFields(outputFields);
730         AxTaskParameter parameter20 = new AxTaskParameter(new AxReferenceKey(testTask2.getKey(), PARAMETER0),
731                         DEFAULT_VALUE0);
732         testTask2.getTaskParameters().put(parameter20.getKey().getLocalName(), parameter20);
733         testTask2.setContextAlbumReferences(referenceKeySetList.get(2));
734         testTask2.setTaskLogic(getTaskLogic(testTask2, logicReader, axLogicExecutorType, state, "0"));
735
736         AxTask testTask3 = new AxTask(new AxArtifactKey(TASK + state + "3", DEFAULT_VERSION));
737         testTask3.duplicateInputFields(inputFields);
738         testTask3.duplicateOutputFields(outputFields);
739         AxTaskParameter parameter30 = new AxTaskParameter(new AxReferenceKey(testTask3.getKey(), PARAMETER0),
740                         DEFAULT_VALUE0);
741         testTask3.getTaskParameters().put(parameter30.getKey().getLocalName(), parameter30);
742         testTask3.setContextAlbumReferences(referenceKeySetList.get(THIRD_ENTRY));
743         testTask3.setTaskLogic(getTaskLogic(testTask3, logicReader, axLogicExecutorType, state, "1"));
744
745         Map<AxArtifactKey, AxTask> taskMap = new TreeMap<>();
746         taskMap.put(testTask0.getKey(), testTask0);
747         taskMap.put(testTask1.getKey(), testTask1);
748         taskMap.put(testTask2.getKey(), testTask2);
749         taskMap.put(testTask3.getKey(), testTask3);
750
751         return taskMap;
752     }
753
754     /**
755      * Gets the task logic.
756      *
757      * @param task the task
758      * @param logicReader the logic reader
759      * @param logicFlavour the logic flavour
760      * @param stateName the state name
761      * @param caseToUse the case to use
762      * @return the task logic
763      */
764     private AxTaskLogic getTaskLogic(final AxTask task, final AxLogicReader logicReader, final String logicFlavour,
765                     final String stateName, final String caseToUse) {
766         AxTaskLogic axLogic = new AxTaskLogic(new AxReferenceKey(task.getKey(), "_TaskLogic"), logicFlavour,
767                         logicReader);
768
769         axLogic.setLogic(axLogic.getLogic().replaceAll("<STATE_NAME>", stateName)
770                         .replaceAll("<TASK_NAME>", task.getKey().getName())
771                         .replaceAll("<RANDOM_BYTE_VALUE>", caseToUse));
772
773         return axLogic;
774     }
775 }