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