3766432117a963091767f3dae48170800ff250a6
[policy/apex-pdp.git] /
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.examples.aadm.model;
22
23 import org.onap.policy.apex.model.basicmodel.concepts.ApexRuntimeException;
24 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
25 import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
26 import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
27 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
28 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum;
29 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums;
30 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
31 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
32 import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
33 import org.onap.policy.apex.model.eventmodel.concepts.AxEvents;
34 import org.onap.policy.apex.model.eventmodel.concepts.AxField;
35 import org.onap.policy.apex.model.policymodel.concepts.AxLogicReader;
36 import org.onap.policy.apex.model.policymodel.concepts.AxPolicies;
37 import org.onap.policy.apex.model.policymodel.concepts.AxPolicy;
38 import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
39 import org.onap.policy.apex.model.policymodel.concepts.AxState;
40 import org.onap.policy.apex.model.policymodel.concepts.AxStateOutput;
41 import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskOutputType;
42 import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskReference;
43 import org.onap.policy.apex.model.policymodel.concepts.AxTask;
44 import org.onap.policy.apex.model.policymodel.concepts.AxTaskLogic;
45 import org.onap.policy.apex.model.policymodel.concepts.AxTaskSelectionLogic;
46 import org.onap.policy.apex.model.policymodel.concepts.AxTasks;
47 import org.onap.policy.apex.model.policymodel.handling.PolicyLogicReader;
48
49 /**
50  * The Class AADMDomainModelFactory.
51  */
52 public class AadmDomainModelFactory {
53     /**
54      * Gets the AADM policy model.
55      *
56      * @return the AADM policy model
57      */
58     // CHECKSTYLE:OFF: checkstyle
59     public AxPolicyModel getAadmPolicyModel() {
60         // CHECKSTYLE:ON: checkstyle
61         // Data types for event parameters
62         final AxContextSchema imsi = new AxContextSchema(new AxArtifactKey("IMSI", "0.0.1"), "Java", "java.lang.Long");
63         final AxContextSchema ueIpAddress =
64                 new AxContextSchema(new AxArtifactKey("UEIPAddress", "0.0.1"), "Java", "java.lang.String");
65         final AxContextSchema nwIpAddress =
66                 new AxContextSchema(new AxArtifactKey("NWIPAddress", "0.0.1"), "Java", "java.lang.String");
67         final AxContextSchema dosFlag =
68                 new AxContextSchema(new AxArtifactKey("DOSFlag", "0.0.1"), "Java", "java.lang.Boolean");
69         final AxContextSchema roundTripTime =
70                 new AxContextSchema(new AxArtifactKey("RoundTripTime", "0.0.1"), "Java", "java.lang.Long");
71         final AxContextSchema applicationName =
72                 new AxContextSchema(new AxArtifactKey("ApplicationName", "0.0.1"), "Java", "java.lang.String");
73         final AxContextSchema protocolGroup =
74                 new AxContextSchema(new AxArtifactKey("ProtocolGroup", "0.0.1"), "Java", "java.lang.String");
75         final AxContextSchema eNodeBId =
76                 new AxContextSchema(new AxArtifactKey("ENodeBID", "0.0.1"), "Java", "java.lang.Long");
77         final AxContextSchema httpHostClass =
78                 new AxContextSchema(new AxArtifactKey("HttpHostClass", "0.0.1"), "Java", "java.lang.String");
79         final AxContextSchema tcpOnFlag =
80                 new AxContextSchema(new AxArtifactKey("TCPOnFlag", "0.0.1"), "Java", "java.lang.Boolean");
81         final AxContextSchema probeOnFlag =
82                 new AxContextSchema(new AxArtifactKey("ProbeOnFlag", "0.0.1"), "Java", "java.lang.Boolean");
83         final AxContextSchema blacklistOnFlag =
84                 new AxContextSchema(new AxArtifactKey("BlacklistOnFlag", "0.0.1"), "Java", "java.lang.Boolean");
85         final AxContextSchema averageThroughput =
86                 new AxContextSchema(new AxArtifactKey("AverageThroughput", "0.0.1"), "Java", "java.lang.Double");
87         final AxContextSchema serviceRequestCount =
88                 new AxContextSchema(new AxArtifactKey("ServiceRequestCount", "0.0.1"), "Java", "java.lang.Integer");
89         final AxContextSchema attchCount =
90                 new AxContextSchema(new AxArtifactKey("AttachCount", "0.0.1"), "Java", "java.lang.Integer");
91         final AxContextSchema subscriberCount =
92                 new AxContextSchema(new AxArtifactKey("SubscriberCount", "0.0.1"), "Java", "java.lang.Integer");
93         final AxContextSchema averageServiceRequest =
94                 new AxContextSchema(new AxArtifactKey("AverageServiceRequest", "0.0.1"), "Java", "java.lang.Double");
95         final AxContextSchema averageAttach =
96                 new AxContextSchema(new AxArtifactKey("AverageAttach", "0.0.1"), "Java", "java.lang.Double");
97         final AxContextSchema actionTask =
98                 new AxContextSchema(new AxArtifactKey("ActionTask", "0.0.1"), "Java", "java.lang.String");
99         final AxContextSchema version =
100                 new AxContextSchema(new AxArtifactKey("Version", "0.0.1"), "Java", "java.lang.String");
101         final AxContextSchema profile =
102                 new AxContextSchema(new AxArtifactKey("Profile", "0.0.1"), "Java", "java.lang.String");
103         final AxContextSchema threshold =
104                 new AxContextSchema(new AxArtifactKey("Threshold", "0.0.1"), "Java", "java.lang.Long");
105         final AxContextSchema triggerSpec =
106                 new AxContextSchema(new AxArtifactKey("TriggerSpec", "0.0.1"), "Java", "java.lang.String");
107         final AxContextSchema periodicEventCount =
108                 new AxContextSchema(new AxArtifactKey("PeriodicEventCount", "0.0.1"), "Java", "java.lang.Long");
109         final AxContextSchema periodicDelay =
110                 new AxContextSchema(new AxArtifactKey("PeriodicDelay", "0.0.1"), "Java", "java.lang.Long");
111         final AxContextSchema periodicTime =
112                 new AxContextSchema(new AxArtifactKey("PeriodicTime", "0.0.1"), "Java", "java.lang.Long");
113
114         final AxContextSchemas aadmContextSchemas = new AxContextSchemas(new AxArtifactKey("AADMDatatypes", "0.0.1"));
115         aadmContextSchemas.getSchemasMap().put(imsi.getKey(), imsi);
116         aadmContextSchemas.getSchemasMap().put(ueIpAddress.getKey(), ueIpAddress);
117         aadmContextSchemas.getSchemasMap().put(nwIpAddress.getKey(), nwIpAddress);
118         aadmContextSchemas.getSchemasMap().put(dosFlag.getKey(), dosFlag);
119         aadmContextSchemas.getSchemasMap().put(roundTripTime.getKey(), roundTripTime);
120         aadmContextSchemas.getSchemasMap().put(applicationName.getKey(), applicationName);
121         aadmContextSchemas.getSchemasMap().put(protocolGroup.getKey(), protocolGroup);
122         aadmContextSchemas.getSchemasMap().put(eNodeBId.getKey(), eNodeBId);
123         aadmContextSchemas.getSchemasMap().put(httpHostClass.getKey(), httpHostClass);
124         aadmContextSchemas.getSchemasMap().put(tcpOnFlag.getKey(), tcpOnFlag);
125         aadmContextSchemas.getSchemasMap().put(probeOnFlag.getKey(), probeOnFlag);
126         aadmContextSchemas.getSchemasMap().put(blacklistOnFlag.getKey(), blacklistOnFlag);
127         aadmContextSchemas.getSchemasMap().put(averageThroughput.getKey(), averageThroughput);
128         aadmContextSchemas.getSchemasMap().put(serviceRequestCount.getKey(), serviceRequestCount);
129         aadmContextSchemas.getSchemasMap().put(attchCount.getKey(), attchCount);
130         aadmContextSchemas.getSchemasMap().put(subscriberCount.getKey(), subscriberCount);
131         aadmContextSchemas.getSchemasMap().put(averageServiceRequest.getKey(), averageServiceRequest);
132         aadmContextSchemas.getSchemasMap().put(averageAttach.getKey(), averageAttach);
133         aadmContextSchemas.getSchemasMap().put(actionTask.getKey(), actionTask);
134         aadmContextSchemas.getSchemasMap().put(version.getKey(), version);
135         aadmContextSchemas.getSchemasMap().put(profile.getKey(), profile);
136         aadmContextSchemas.getSchemasMap().put(threshold.getKey(), threshold);
137         aadmContextSchemas.getSchemasMap().put(triggerSpec.getKey(), triggerSpec);
138         aadmContextSchemas.getSchemasMap().put(periodicEventCount.getKey(), periodicEventCount);
139         aadmContextSchemas.getSchemasMap().put(periodicDelay.getKey(), periodicDelay);
140         aadmContextSchemas.getSchemasMap().put(periodicTime.getKey(), periodicTime);
141
142         final AxEvent aadmEvent =
143                 new AxEvent(new AxArtifactKey("AADMEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events");
144         aadmEvent.setSource("External");
145         aadmEvent.setTarget("Apex");
146         aadmEvent.getParameterMap().put("IMSI",
147                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "IMSI"), imsi.getKey()));
148         aadmEvent.getParameterMap().put("ENODEB_ID",
149                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "ENODEB_ID"), eNodeBId.getKey()));
150         aadmEvent.getParameterMap().put("IMSI_IP",
151                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "IMSI_IP"), ueIpAddress.getKey()));
152         aadmEvent.getParameterMap().put("NW_IP",
153                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "NW_IP"), nwIpAddress.getKey()));
154         aadmEvent.getParameterMap().put("DoS",
155                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "DoS"), dosFlag.getKey()));
156         aadmEvent.getParameterMap().put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", new AxField(
157                 new AxReferenceKey(aadmEvent.getKey(), "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX"), roundTripTime.getKey()));
158         aadmEvent.getParameterMap().put("TCP_UE_SIDE_AVG_THROUGHPUT", new AxField(
159                 new AxReferenceKey(aadmEvent.getKey(), "TCP_UE_SIDE_AVG_THROUGHPUT"), averageThroughput.getKey()));
160         aadmEvent.getParameterMap().put("APPLICATION",
161                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "APPLICATION"), applicationName.getKey()));
162         aadmEvent.getParameterMap().put("protocol_group",
163                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "protocol_group"), protocolGroup.getKey()));
164         aadmEvent.getParameterMap().put("http_host_class",
165                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "http_host_class"), httpHostClass.getKey()));
166         aadmEvent.getParameterMap().put("PROBE_ON",
167                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey()));
168         aadmEvent.getParameterMap().put("TCP_ON",
169                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey()));
170         aadmEvent.getParameterMap().put("SGW_IP_ADDRESS",
171                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "SGW_IP_ADDRESS"), nwIpAddress.getKey()));
172         aadmEvent.getParameterMap().put("UE_IP_ADDRESS",
173                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "UE_IP_ADDRESS"), ueIpAddress.getKey()));
174         aadmEvent.getParameterMap().put("SERVICE_REQUEST_COUNT", new AxField(
175                 new AxReferenceKey(aadmEvent.getKey(), "SERVICE_REQUEST_COUNT"), serviceRequestCount.getKey()));
176         aadmEvent.getParameterMap().put("ATTACH_COUNT",
177                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "ATTACH_COUNT"), attchCount.getKey()));
178         aadmEvent.getParameterMap().put("NUM_SUBSCRIBERS",
179                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "NUM_SUBSCRIBERS"), subscriberCount.getKey()));
180         aadmEvent.getParameterMap().put("AVG_SUBSCRIBER_SERVICE_REQUEST",
181                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "AVG_SUBSCRIBER_SERVICE_REQUEST"),
182                         averageServiceRequest.getKey()));
183         aadmEvent.getParameterMap().put("AVG_SUBSCRIBER_ATTACH",
184                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "AVG_SUBSCRIBER_ATTACH"), averageAttach.getKey()));
185         aadmEvent.getParameterMap().put("ACTTASK",
186                 new AxField(new AxReferenceKey(aadmEvent.getKey(), "ACTTASK"), actionTask.getKey()));
187
188         final AxEvent aadmXStreamActEvent = new AxEvent(new AxArtifactKey("XSTREAM_AADM_ACT_EVENT", "0.0.1"),
189                 "org.onap.policy.apex.examples.aadm.events");
190         aadmXStreamActEvent.setSource("Apex");
191         aadmXStreamActEvent.setTarget("External");
192         aadmXStreamActEvent.getParameterMap().put("IMSI",
193                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "IMSI"), imsi.getKey()));
194         aadmXStreamActEvent.getParameterMap().put("IMSI_IP",
195                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "IMSI_IP"), ueIpAddress.getKey()));
196         aadmXStreamActEvent.getParameterMap().put("ENODEB_ID",
197                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "ENODEB_ID"), eNodeBId.getKey()));
198         aadmXStreamActEvent.getParameterMap().put("NW_IP",
199                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "NW_IP"), nwIpAddress.getKey()));
200         aadmXStreamActEvent.getParameterMap().put("ACTTASK",
201                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "ACTTASK"), actionTask.getKey()));
202         aadmXStreamActEvent.getParameterMap().put("PROBE_ON",
203                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey()));
204         aadmXStreamActEvent.getParameterMap().put("TCP_ON",
205                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey()));
206         aadmXStreamActEvent.getParameterMap().put("VERSION",
207                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "VERSION"), version.getKey()));
208         aadmXStreamActEvent.getParameterMap().put("TRIGGER_SPEC",
209                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "TRIGGER_SPEC"), triggerSpec.getKey()));
210         aadmXStreamActEvent.getParameterMap().put("MAJ_MIN_MAINT_VERSION", new AxField(
211                 new AxReferenceKey(aadmXStreamActEvent.getKey(), "MAJ_MIN_MAINT_VERSION"), version.getKey()));
212         aadmXStreamActEvent.getParameterMap().put("BLACKLIST_ON", new AxField(
213                 new AxReferenceKey(aadmXStreamActEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey()));
214         aadmXStreamActEvent.getParameterMap().put("PROFILE",
215                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "PROFILE"), profile.getKey()));
216         aadmXStreamActEvent.getParameterMap().put("THRESHOLD",
217                 new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "THRESHOLD"), threshold.getKey()));
218
219         final AxEvent vMmeEvent =
220                 new AxEvent(new AxArtifactKey("VMMEEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events");
221         vMmeEvent.setSource("External");
222         vMmeEvent.setTarget("Apex");
223         vMmeEvent.getParameterMap().put("IMSI",
224                 new AxField(new AxReferenceKey(vMmeEvent.getKey(), "IMSI"), imsi.getKey()));
225         vMmeEvent.getParameterMap().put("ENODEB_ID",
226                 new AxField(new AxReferenceKey(vMmeEvent.getKey(), "ENODEB_ID"), eNodeBId.getKey()));
227         vMmeEvent.getParameterMap().put("IMSI_IP",
228                 new AxField(new AxReferenceKey(vMmeEvent.getKey(), "IMSI_IP"), ueIpAddress.getKey()));
229         vMmeEvent.getParameterMap().put("NW_IP",
230                 new AxField(new AxReferenceKey(vMmeEvent.getKey(), "NW_IP"), nwIpAddress.getKey()));
231         vMmeEvent.getParameterMap().put("PROFILE",
232                 new AxField(new AxReferenceKey(vMmeEvent.getKey(), "PROFILE"), profile.getKey()));
233         vMmeEvent.getParameterMap().put("THRESHOLD",
234                 new AxField(new AxReferenceKey(vMmeEvent.getKey(), "THRESHOLD"), threshold.getKey()));
235
236         final AxEvent sapcEvent =
237                 new AxEvent(new AxArtifactKey("SAPCEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events");
238         sapcEvent.setSource("External");
239         sapcEvent.setTarget("Apex");
240         sapcEvent.getParameterMap().put("IMSI",
241                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "IMSI"), imsi.getKey()));
242         sapcEvent.getParameterMap().put("ENODEB_ID",
243                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "ENODEB_ID"), eNodeBId.getKey()));
244         sapcEvent.getParameterMap().put("IMSI_IP",
245                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "IMSI_IP"), ueIpAddress.getKey()));
246         sapcEvent.getParameterMap().put("NW_IP",
247                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "NW_IP"), nwIpAddress.getKey()));
248         sapcEvent.getParameterMap().put("PROFILE",
249                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "PROFILE"), profile.getKey()));
250         sapcEvent.getParameterMap().put("THRESHOLD",
251                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "THRESHOLD"), threshold.getKey()));
252         sapcEvent.getParameterMap().put("TCP_ON",
253                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey()));
254         sapcEvent.getParameterMap().put("PROBE_ON",
255                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey()));
256         sapcEvent.getParameterMap().put("VERSION",
257                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "VERSION"), version.getKey()));
258         sapcEvent.getParameterMap().put("BLACKLIST_ON",
259                 new AxField(new AxReferenceKey(sapcEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey()));
260
261         final AxEvent sapcBlacklistSubscriberEvent =
262                 new AxEvent(new AxArtifactKey("SAPCBlacklistSubscriberEvent", "0.0.1"),
263                         "org.onap.policy.apex.examples.aadm.events");
264         sapcBlacklistSubscriberEvent.setSource("Apex");
265         sapcBlacklistSubscriberEvent.setTarget("External");
266         sapcBlacklistSubscriberEvent.getParameterMap().put("IMSI",
267                 new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "IMSI"), imsi.getKey()));
268         sapcBlacklistSubscriberEvent.getParameterMap().put("PROFILE",
269                 new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "PROFILE"), profile.getKey()));
270         sapcBlacklistSubscriberEvent.getParameterMap().put("BLACKLIST_ON", new AxField(
271                 new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey()));
272         sapcBlacklistSubscriberEvent.getParameterMap().put("IMSI_IP", new AxField(
273                 new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "IMSI_IP"), ueIpAddress.getKey()));
274         sapcBlacklistSubscriberEvent.getParameterMap().put("NW_IP",
275                 new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "NW_IP"), nwIpAddress.getKey()));
276         sapcBlacklistSubscriberEvent.getParameterMap().put("PROBE_ON", new AxField(
277                 new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey()));
278         sapcBlacklistSubscriberEvent.getParameterMap().put("TCP_ON",
279                 new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey()));
280
281         final AxEvent periodicEvent =
282                 new AxEvent(new AxArtifactKey("PeriodicEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events");
283         periodicEvent.setSource("System");
284         periodicEvent.setTarget("Apex");
285         periodicEvent.getParameterMap().put("PERIODIC_EVENT_COUNT", new AxField(
286                 new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_EVENT_COUNT"), periodicEventCount.getKey()));
287         periodicEvent.getParameterMap().put("PERIODIC_DELAY",
288                 new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_DELAY"), periodicDelay.getKey()));
289         periodicEvent.getParameterMap().put("PERIODIC_FIRST_TIME",
290                 new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_FIRST_TIME"), periodicTime.getKey()));
291         periodicEvent.getParameterMap().put("PERIODIC_CURRENT_TIME", new AxField(
292                 new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_CURRENT_TIME"), periodicTime.getKey()));
293         periodicEvent.getParameterMap().put("PERIODIC_LAST_TIME",
294                 new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_LAST_TIME"), periodicTime.getKey()));
295
296         final AxEvents aadmEvents = new AxEvents(new AxArtifactKey("AADMEvents", "0.0.1"));
297         aadmEvents.getEventMap().put(aadmEvent.getKey(), aadmEvent);
298         aadmEvents.getEventMap().put(aadmXStreamActEvent.getKey(), aadmXStreamActEvent);
299         aadmEvents.getEventMap().put(vMmeEvent.getKey(), vMmeEvent);
300         aadmEvents.getEventMap().put(sapcEvent.getKey(), sapcEvent);
301         aadmEvents.getEventMap().put(sapcBlacklistSubscriberEvent.getKey(), sapcBlacklistSubscriberEvent);
302         aadmEvents.getEventMap().put(periodicEvent.getKey(), periodicEvent);
303
304         // Data types for context
305         final AxContextSchema eNodeBStatus = new AxContextSchema(new AxArtifactKey("ENodeBStatus", "0.0.1"), "Java",
306                 "org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus");
307         final AxContextSchema imsiStatus = new AxContextSchema(new AxArtifactKey("IMSIStatus", "0.0.1"), "Java",
308                 "org.onap.policy.apex.examples.aadm.concepts.ImsiStatus");
309         final AxContextSchema ipAddressStatus = new AxContextSchema(new AxArtifactKey("IPAddressStatus", "0.0.1"),
310                 "Java", "org.onap.policy.apex.examples.aadm.concepts.IpAddressStatus");
311         aadmContextSchemas.getSchemasMap().put(eNodeBStatus.getKey(), eNodeBStatus);
312         aadmContextSchemas.getSchemasMap().put(imsiStatus.getKey(), imsiStatus);
313         aadmContextSchemas.getSchemasMap().put(ipAddressStatus.getKey(), ipAddressStatus);
314
315         // Three context albums for AADM
316         final AxContextAlbum eNodeBStatusAlbum = new AxContextAlbum(new AxArtifactKey("ENodeBStatusAlbum", "0.0.1"),
317                 "APPLICATION", true, eNodeBStatus.getKey());
318         final AxContextAlbum imsiStatusAlbum = new AxContextAlbum(new AxArtifactKey("IMSIStatusAlbum", "0.0.1"),
319                 "APPLICATION", true, imsiStatus.getKey());
320         final AxContextAlbum ipAddressStatusAlbum = new AxContextAlbum(
321                 new AxArtifactKey("IPAddressStatusAlbum", "0.0.1"), "APPLICATION", true, ipAddressStatus.getKey());
322
323         final AxContextAlbums aadmAlbums = new AxContextAlbums(new AxArtifactKey("AADMContext", "0.0.1"));
324         aadmAlbums.getAlbumsMap().put(eNodeBStatusAlbum.getKey(), eNodeBStatusAlbum);
325         aadmAlbums.getAlbumsMap().put(imsiStatusAlbum.getKey(), imsiStatusAlbum);
326         aadmAlbums.getAlbumsMap().put(ipAddressStatusAlbum.getKey(), ipAddressStatusAlbum);
327
328         // Tasks
329         final AxLogicReader logicReader =
330                 new PolicyLogicReader().setLogicPackage(this.getClass().getPackage().getName()).setDefaultLogic(null);
331
332         final AxTask aadmMatchTask = new AxTask(new AxArtifactKey("AADMMatchTask", "0.0.1"));
333         aadmMatchTask.duplicateInputFields(aadmEvent.getParameterMap());
334         aadmMatchTask.duplicateOutputFields(aadmEvent.getParameterMap());
335         aadmMatchTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey());
336         aadmMatchTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
337         aadmMatchTask.getContextAlbumReferences().add(ipAddressStatusAlbum.getKey());
338         aadmMatchTask.setTaskLogic(new AxTaskLogic(aadmMatchTask.getKey(), "TaskLogic", "MVEL", logicReader));
339
340         final AxTask aadmEstablishTask = new AxTask(new AxArtifactKey("AADMEstablishTask", "0.0.1"));
341         aadmEstablishTask.duplicateInputFields(aadmEvent.getParameterMap());
342         aadmEstablishTask.duplicateOutputFields(aadmEvent.getParameterMap());
343         logicReader.setDefaultLogic("Default_TaskLogic");
344         aadmEstablishTask.setTaskLogic(new AxTaskLogic(aadmEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader));
345
346         final AxTask aadmDecideTask = new AxTask(new AxArtifactKey("AADMDecideTask", "0.0.1"));
347         aadmDecideTask.duplicateInputFields(aadmEvent.getParameterMap());
348         aadmDecideTask.duplicateOutputFields(aadmEvent.getParameterMap());
349         aadmDecideTask.setTaskLogic(new AxTaskLogic(aadmDecideTask.getKey(), "TaskLogic", "MVEL", logicReader));
350
351         logicReader.setDefaultLogic(null);
352
353         final AxTask aadmDoSSuggestionActTask = new AxTask(new AxArtifactKey("AADMDoSSuggestionActTask", "0.0.1"));
354         aadmDoSSuggestionActTask.duplicateInputFields(aadmEvent.getParameterMap());
355         aadmDoSSuggestionActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap());
356         aadmDoSSuggestionActTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey());
357         aadmDoSSuggestionActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
358         aadmDoSSuggestionActTask
359                 .setTaskLogic(new AxTaskLogic(aadmDoSSuggestionActTask.getKey(), "TaskLogic", "MVEL", logicReader));
360
361         final AxTask aadmNoActTask = new AxTask(new AxArtifactKey("AADMNoActTask", "0.0.1"));
362         aadmNoActTask.duplicateInputFields(aadmEvent.getParameterMap());
363         aadmNoActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap());
364         aadmNoActTask.setTaskLogic(new AxTaskLogic(aadmNoActTask.getKey(), "TaskLogic", "MVEL", logicReader));
365
366         final AxTask aadmDoSProvenActTask = new AxTask(new AxArtifactKey("AADMDoSProvenActTask", "0.0.1"));
367         aadmDoSProvenActTask.duplicateInputFields(aadmEvent.getParameterMap());
368         aadmDoSProvenActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap());
369         aadmDoSProvenActTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey());
370         aadmDoSProvenActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
371         aadmDoSProvenActTask
372                 .setTaskLogic(new AxTaskLogic(aadmDoSProvenActTask.getKey(), "TaskLogic", "MVEL", logicReader));
373
374         final AxTask vMmeMatchTask = new AxTask(new AxArtifactKey("VMMEMatchTask", "0.0.1"));
375         vMmeMatchTask.duplicateInputFields(vMmeEvent.getParameterMap());
376         vMmeMatchTask.duplicateOutputFields(vMmeEvent.getParameterMap());
377         vMmeMatchTask.setTaskLogic(new AxTaskLogic(vMmeMatchTask.getKey(), "TaskLogic", "MVEL", logicReader));
378
379         final AxTask vMmeEstablishTask = new AxTask(new AxArtifactKey("VMMEEstablishTask", "0.0.1"));
380         vMmeEstablishTask.duplicateInputFields(vMmeEvent.getParameterMap());
381         vMmeEstablishTask.duplicateOutputFields(vMmeEvent.getParameterMap());
382         logicReader.setDefaultLogic("Default_TaskLogic");
383         vMmeEstablishTask.setTaskLogic(new AxTaskLogic(vMmeEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader));
384
385         final AxTask vMmeDecideTask = new AxTask(new AxArtifactKey("VMMEDecideTask", "0.0.1"));
386         vMmeDecideTask.duplicateInputFields(vMmeEvent.getParameterMap());
387         vMmeDecideTask.duplicateOutputFields(vMmeEvent.getParameterMap());
388         vMmeDecideTask.setTaskLogic(new AxTaskLogic(vMmeDecideTask.getKey(), "TaskLogic", "MVEL", logicReader));
389
390         final AxTask vMmeNoActTask = new AxTask(new AxArtifactKey("VMMENoActTask", "0.0.1"));
391         vMmeNoActTask.duplicateInputFields(vMmeEvent.getParameterMap());
392         vMmeNoActTask.duplicateOutputFields(vMmeEvent.getParameterMap());
393         vMmeNoActTask.setTaskLogic(new AxTaskLogic(vMmeNoActTask.getKey(), "TaskLogic", "MVEL", logicReader));
394
395         final AxTask vMmeActTask = new AxTask(new AxArtifactKey("VMMEActTask", "0.0.1"));
396         vMmeActTask.duplicateInputFields(vMmeEvent.getParameterMap());
397         vMmeActTask.duplicateOutputFields(vMmeEvent.getParameterMap());
398         logicReader.setDefaultLogic(null);
399         vMmeActTask.setTaskLogic(new AxTaskLogic(vMmeActTask.getKey(), "TaskLogic", "MVEL", logicReader));
400
401         final AxTask sapcMatchTask = new AxTask(new AxArtifactKey("SAPCMatchTask", "0.0.1"));
402         sapcMatchTask.duplicateInputFields(sapcEvent.getParameterMap());
403         sapcMatchTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
404         sapcMatchTask.setTaskLogic(new AxTaskLogic(sapcMatchTask.getKey(), "TaskLogic", "MVEL", logicReader));
405
406         final AxTask sapcEstablishTask = new AxTask(new AxArtifactKey("SAPCEstablishTask", "0.0.1"));
407         sapcEstablishTask.duplicateInputFields(sapcEvent.getParameterMap());
408         sapcEstablishTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
409         logicReader.setDefaultLogic("Default_TaskLogic");
410         sapcEstablishTask.setTaskLogic(new AxTaskLogic(sapcEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader));
411
412         final AxTask sapcDecideTask = new AxTask(new AxArtifactKey("SAPCDecideTask", "0.0.1"));
413         sapcDecideTask.duplicateInputFields(sapcEvent.getParameterMap());
414         sapcDecideTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
415         sapcDecideTask.setTaskLogic(new AxTaskLogic(sapcDecideTask.getKey(), "TaskLogic", "MVEL", logicReader));
416
417         final AxTask sapcActTask = new AxTask(new AxArtifactKey("SAPCActTask", "0.0.1"));
418         sapcActTask.duplicateInputFields(sapcEvent.getParameterMap());
419         sapcActTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
420         sapcActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
421         logicReader.setDefaultLogic(null);
422         sapcActTask.setTaskLogic(new AxTaskLogic(sapcActTask.getKey(), "TaskLogic", "MVEL", logicReader));
423
424         logicReader.setDefaultLogic("Default_TaskLogic");
425
426         final AxTask periodicMatchTask = new AxTask(new AxArtifactKey("PeriodicMatchTask", "0.0.1"));
427         periodicMatchTask.duplicateInputFields(periodicEvent.getParameterMap());
428         periodicMatchTask.duplicateOutputFields(periodicEvent.getParameterMap());
429         periodicMatchTask.setTaskLogic(new AxTaskLogic(periodicMatchTask.getKey(), "TaskLogic", "MVEL", logicReader));
430
431         final AxTask periodicEstablishTask = new AxTask(new AxArtifactKey("PeriodicEstablishTask", "0.0.1"));
432         periodicEstablishTask.duplicateInputFields(periodicEvent.getParameterMap());
433         periodicEstablishTask.duplicateOutputFields(periodicEvent.getParameterMap());
434         periodicEstablishTask
435                 .setTaskLogic(new AxTaskLogic(periodicEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader));
436
437         final AxTask periodicDecideTask = new AxTask(new AxArtifactKey("PeriodicDecideTask", "0.0.1"));
438         periodicDecideTask.duplicateInputFields(periodicEvent.getParameterMap());
439         periodicDecideTask.duplicateOutputFields(periodicEvent.getParameterMap());
440         periodicDecideTask.setTaskLogic(new AxTaskLogic(periodicDecideTask.getKey(), "TaskLogic", "MVEL", logicReader));
441
442         final AxTask periodicActTask = new AxTask(new AxArtifactKey("PeriodicActTask", "0.0.1"));
443         periodicActTask.duplicateInputFields(periodicEvent.getParameterMap());
444         periodicActTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
445         periodicActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
446         logicReader.setDefaultLogic(null);
447         periodicActTask.setTaskLogic(new AxTaskLogic(periodicActTask.getKey(), "TaskLogic", "MVEL", logicReader));
448
449         final AxTasks aadmTasks = new AxTasks(new AxArtifactKey("AADMTasks", "0.0.1"));
450         aadmTasks.getTaskMap().put(aadmMatchTask.getKey(), aadmMatchTask);
451         aadmTasks.getTaskMap().put(aadmEstablishTask.getKey(), aadmEstablishTask);
452         aadmTasks.getTaskMap().put(aadmDecideTask.getKey(), aadmDecideTask);
453         aadmTasks.getTaskMap().put(aadmDoSSuggestionActTask.getKey(), aadmDoSSuggestionActTask);
454         aadmTasks.getTaskMap().put(aadmNoActTask.getKey(), aadmNoActTask);
455         aadmTasks.getTaskMap().put(aadmDoSProvenActTask.getKey(), aadmDoSProvenActTask);
456         aadmTasks.getTaskMap().put(vMmeMatchTask.getKey(), vMmeMatchTask);
457         aadmTasks.getTaskMap().put(vMmeEstablishTask.getKey(), vMmeEstablishTask);
458         aadmTasks.getTaskMap().put(vMmeDecideTask.getKey(), vMmeDecideTask);
459         aadmTasks.getTaskMap().put(vMmeNoActTask.getKey(), vMmeNoActTask);
460         aadmTasks.getTaskMap().put(vMmeActTask.getKey(), vMmeActTask);
461         aadmTasks.getTaskMap().put(sapcMatchTask.getKey(), sapcMatchTask);
462         aadmTasks.getTaskMap().put(sapcEstablishTask.getKey(), sapcEstablishTask);
463         aadmTasks.getTaskMap().put(sapcDecideTask.getKey(), sapcDecideTask);
464         aadmTasks.getTaskMap().put(sapcActTask.getKey(), sapcActTask);
465         aadmTasks.getTaskMap().put(periodicMatchTask.getKey(), periodicMatchTask);
466         aadmTasks.getTaskMap().put(periodicEstablishTask.getKey(), periodicEstablishTask);
467         aadmTasks.getTaskMap().put(periodicDecideTask.getKey(), periodicDecideTask);
468         aadmTasks.getTaskMap().put(periodicActTask.getKey(), periodicActTask);
469
470         // Policies
471         logicReader.setDefaultLogic(null);
472
473         final AxPolicy aadmPolicy = new AxPolicy(new AxArtifactKey("AADMPolicy", "0.0.1"));
474         aadmPolicy.setTemplate("MEDA");
475
476         final AxState aadmActState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Act"));
477         aadmActState.setTrigger(aadmEvent.getKey());
478         final AxStateOutput aadmAct2Out =
479                 new AxStateOutput(aadmActState.getKey(), AxReferenceKey.getNullKey(), aadmXStreamActEvent.getKey());
480         aadmActState.getStateOutputs().put(aadmAct2Out.getKey().getLocalName(), aadmAct2Out);
481         aadmActState.getContextAlbumReferences().add(ipAddressStatusAlbum.getKey());
482         aadmActState.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
483         aadmActState.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey());
484         aadmActState.setTaskSelectionLogic(
485                 new AxTaskSelectionLogic(aadmActState.getKey(), "TaskSelectionLogic", "MVEL", logicReader));
486         aadmActState.setDefaultTask(aadmNoActTask.getKey());
487         aadmActState.getTaskReferences().put(aadmNoActTask.getKey(), new AxStateTaskReference(aadmActState.getKey(),
488                 aadmNoActTask.getKey(), AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey()));
489         aadmActState.getTaskReferences().put(aadmDoSSuggestionActTask.getKey(),
490                 new AxStateTaskReference(aadmActState.getKey(), aadmDoSSuggestionActTask.getKey(),
491                         AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey()));
492         aadmActState.getTaskReferences().put(aadmDoSProvenActTask.getKey(),
493                 new AxStateTaskReference(aadmActState.getKey(), aadmDoSProvenActTask.getKey(),
494                         AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey()));
495
496         logicReader.setDefaultLogic("Default_TaskSelectionLogic");
497
498         final AxState aadmDecideState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Decide"));
499         aadmDecideState.setTrigger(aadmEvent.getKey());
500         final AxStateOutput aadmDec2Act =
501                 new AxStateOutput(aadmDecideState.getKey(), aadmActState.getKey(), aadmEvent.getKey());
502         aadmDecideState.getStateOutputs().put(aadmDec2Act.getKey().getLocalName(), aadmDec2Act);
503         aadmDecideState.setTaskSelectionLogic(
504                 new AxTaskSelectionLogic(aadmDecideState.getKey(), "TaskSelectionLogic", "MVEL", logicReader));
505         aadmDecideState.setDefaultTask(aadmDecideTask.getKey());
506         aadmDecideState.getTaskReferences().put(aadmDecideTask.getKey(), new AxStateTaskReference(
507                 aadmDecideState.getKey(), aadmDecideTask.getKey(), AxStateTaskOutputType.DIRECT, aadmDec2Act.getKey()));
508
509         final AxState aadmEstablishState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Establish"));
510         aadmEstablishState.setTrigger(aadmEvent.getKey());
511         final AxStateOutput aadmEst2Dec =
512                 new AxStateOutput(aadmEstablishState.getKey(), aadmDecideState.getKey(), aadmEvent.getKey());
513         aadmEstablishState.getStateOutputs().put(aadmEst2Dec.getKey().getLocalName(), aadmEst2Dec);
514         aadmEstablishState.setTaskSelectionLogic(
515                 new AxTaskSelectionLogic(aadmEstablishState.getKey(), "TaskSelectionLogic", "MVEL", logicReader));
516         aadmEstablishState.setDefaultTask(aadmEstablishTask.getKey());
517         aadmEstablishState.getTaskReferences().put(aadmEstablishTask.getKey(),
518                 new AxStateTaskReference(aadmEstablishState.getKey(), aadmEstablishTask.getKey(),
519                         AxStateTaskOutputType.DIRECT, aadmEst2Dec.getKey()));
520
521         final AxState aadmMatchState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Match"));
522         aadmMatchState.setTrigger(aadmEvent.getKey());
523         final AxStateOutput aadmMat2Est =
524                 new AxStateOutput(aadmMatchState.getKey(), aadmEstablishState.getKey(), aadmEvent.getKey());
525         aadmMatchState.getStateOutputs().put(aadmMat2Est.getKey().getLocalName(), aadmMat2Est);
526         aadmMatchState.setTaskSelectionLogic(
527                 new AxTaskSelectionLogic(aadmMatchState.getKey(), "TaskSelectionLogic", "MVEL", logicReader));
528         aadmMatchState.setDefaultTask(aadmMatchTask.getKey());
529         aadmMatchState.getTaskReferences().put(aadmMatchTask.getKey(), new AxStateTaskReference(aadmMatchState.getKey(),
530                 aadmMatchTask.getKey(), AxStateTaskOutputType.DIRECT, aadmMat2Est.getKey()));
531
532         aadmPolicy.setFirstState(aadmMatchState.getKey().getLocalName());
533         aadmPolicy.getStateMap().put(aadmMatchState.getKey().getLocalName(), aadmMatchState);
534         aadmPolicy.getStateMap().put(aadmEstablishState.getKey().getLocalName(), aadmEstablishState);
535         aadmPolicy.getStateMap().put(aadmDecideState.getKey().getLocalName(), aadmDecideState);
536         aadmPolicy.getStateMap().put(aadmActState.getKey().getLocalName(), aadmActState);
537
538         final AxPolicy vMmePolicy = new AxPolicy(new AxArtifactKey("VMMEPolicy", "0.0.1"));
539         vMmePolicy.setTemplate("MEDA");
540
541         final AxState vMmeActState = new AxState(new AxReferenceKey(vMmePolicy.getKey(), "Act"));
542         vMmeActState.setTrigger(vMmeEvent.getKey());
543         final AxStateOutput vMmeAct2Out =
544                 new AxStateOutput(vMmeActState.getKey(), AxReferenceKey.getNullKey(), vMmeEvent.getKey());
545         vMmeActState.getStateOutputs().put(vMmeAct2Out.getKey().getLocalName(), vMmeAct2Out);
546         vMmeActState.setDefaultTask(vMmeActTask.getKey());
547         vMmeActState.getTaskReferences().put(vMmeActTask.getKey(), new AxStateTaskReference(vMmeActState.getKey(),
548                 vMmeActTask.getKey(), AxStateTaskOutputType.DIRECT, vMmeAct2Out.getKey()));
549         vMmeActState.getTaskReferences().put(vMmeNoActTask.getKey(), new AxStateTaskReference(vMmeActState.getKey(),
550                 vMmeNoActTask.getKey(), AxStateTaskOutputType.DIRECT, vMmeAct2Out.getKey()));
551
552         final AxState vMmeDecideState = new AxState(new AxReferenceKey(vMmePolicy.getKey(), "Decide"));
553         vMmeDecideState.setTrigger(vMmeEvent.getKey());
554         final AxStateOutput vMmeDec2Act =
555                 new AxStateOutput(vMmeDecideState.getKey(), vMmeActState.getKey(), vMmeEvent.getKey());
556         vMmeDecideState.getStateOutputs().put(vMmeDec2Act.getKey().getLocalName(), vMmeDec2Act);
557         vMmeDecideState.setDefaultTask(vMmeDecideTask.getKey());
558         vMmeDecideState.getTaskReferences().put(vMmeDecideTask.getKey(), new AxStateTaskReference(
559                 vMmeDecideState.getKey(), vMmeDecideTask.getKey(), AxStateTaskOutputType.DIRECT, vMmeDec2Act.getKey()));
560
561         final AxState vMmeEstablishState = new AxState(new AxReferenceKey(vMmePolicy.getKey(), "Establish"));
562         vMmeEstablishState.setTrigger(vMmeEvent.getKey());
563         final AxStateOutput vMmeEst2Dec =
564                 new AxStateOutput(vMmeEstablishState.getKey(), vMmeDecideState.getKey(), vMmeEvent.getKey());
565         vMmeEstablishState.getStateOutputs().put(vMmeEst2Dec.getKey().getLocalName(), vMmeEst2Dec);
566         vMmeEstablishState.setDefaultTask(vMmeEstablishTask.getKey());
567         vMmeEstablishState.getTaskReferences().put(vMmeEstablishTask.getKey(),
568                 new AxStateTaskReference(vMmeEstablishState.getKey(), vMmeEstablishTask.getKey(),
569                         AxStateTaskOutputType.DIRECT, vMmeEst2Dec.getKey()));
570
571         final AxState vMmeMatchState = new AxState(new AxReferenceKey(vMmePolicy.getKey(), "Match"));
572         vMmeMatchState.setTrigger(vMmeEvent.getKey());
573         final AxStateOutput vMmeMat2Est =
574                 new AxStateOutput(vMmeMatchState.getKey(), vMmeEstablishState.getKey(), vMmeEvent.getKey());
575         vMmeMatchState.getStateOutputs().put(vMmeMat2Est.getKey().getLocalName(), vMmeMat2Est);
576         vMmeMatchState.setDefaultTask(vMmeMatchTask.getKey());
577         vMmeMatchState.getTaskReferences().put(vMmeMatchTask.getKey(), new AxStateTaskReference(vMmeMatchState.getKey(),
578                 vMmeMatchTask.getKey(), AxStateTaskOutputType.DIRECT, vMmeMat2Est.getKey()));
579
580         vMmePolicy.setFirstState(vMmeMatchState.getKey().getLocalName());
581         vMmePolicy.getStateMap().put(vMmeMatchState.getKey().getLocalName(), vMmeMatchState);
582         vMmePolicy.getStateMap().put(vMmeEstablishState.getKey().getLocalName(), vMmeEstablishState);
583         vMmePolicy.getStateMap().put(vMmeDecideState.getKey().getLocalName(), vMmeDecideState);
584         vMmePolicy.getStateMap().put(vMmeActState.getKey().getLocalName(), vMmeActState);
585
586         final AxPolicy sapcPolicy = new AxPolicy(new AxArtifactKey("SAPCPolicy", "0.0.1"));
587         sapcPolicy.setTemplate("MEDA");
588
589         final AxState sapcActState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Act"));
590         sapcActState.setTrigger(sapcEvent.getKey());
591         final AxStateOutput sapcAct2Out = new AxStateOutput(sapcActState.getKey(), AxReferenceKey.getNullKey(),
592                 sapcBlacklistSubscriberEvent.getKey());
593         sapcActState.getStateOutputs().put(sapcAct2Out.getKey().getLocalName(), sapcAct2Out);
594         sapcActState.setDefaultTask(sapcActTask.getKey());
595         sapcActState.getTaskReferences().put(sapcActTask.getKey(), new AxStateTaskReference(sapcActState.getKey(),
596                 sapcActTask.getKey(), AxStateTaskOutputType.DIRECT, sapcAct2Out.getKey()));
597
598         final AxState sapcDecideState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Decide"));
599         sapcDecideState.setTrigger(sapcEvent.getKey());
600         final AxStateOutput sapcDec2Act =
601                 new AxStateOutput(sapcDecideState.getKey(), sapcActState.getKey(), sapcEvent.getKey());
602         sapcDecideState.getStateOutputs().put(sapcDec2Act.getKey().getLocalName(), sapcDec2Act);
603         sapcDecideState.setDefaultTask(sapcDecideTask.getKey());
604         sapcDecideState.getTaskReferences().put(sapcDecideTask.getKey(), new AxStateTaskReference(
605                 sapcDecideState.getKey(), sapcDecideTask.getKey(), AxStateTaskOutputType.DIRECT, sapcDec2Act.getKey()));
606
607         final AxState sapcEstablishState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Establish"));
608         sapcEstablishState.setTrigger(sapcEvent.getKey());
609         final AxStateOutput sapcEst2Dec =
610                 new AxStateOutput(sapcEstablishState.getKey(), sapcDecideState.getKey(), sapcEvent.getKey());
611         sapcEstablishState.getStateOutputs().put(sapcEst2Dec.getKey().getLocalName(), sapcEst2Dec);
612         sapcEstablishState.setDefaultTask(sapcEstablishTask.getKey());
613         sapcEstablishState.getTaskReferences().put(sapcEstablishTask.getKey(),
614                 new AxStateTaskReference(sapcEstablishState.getKey(), sapcEstablishTask.getKey(),
615                         AxStateTaskOutputType.DIRECT, sapcEst2Dec.getKey()));
616
617         final AxState sapcMatchState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Match"));
618         sapcMatchState.setTrigger(aadmXStreamActEvent.getKey());
619         final AxStateOutput sapcMat2Est =
620                 new AxStateOutput(sapcMatchState.getKey(), sapcEstablishState.getKey(), sapcEvent.getKey());
621         sapcMatchState.getStateOutputs().put(sapcMat2Est.getKey().getLocalName(), sapcMat2Est);
622         sapcMatchState.setDefaultTask(sapcMatchTask.getKey());
623         sapcMatchState.getTaskReferences().put(sapcMatchTask.getKey(), new AxStateTaskReference(sapcMatchState.getKey(),
624                 sapcMatchTask.getKey(), AxStateTaskOutputType.DIRECT, sapcMat2Est.getKey()));
625
626         sapcPolicy.setFirstState(sapcMatchState.getKey().getLocalName());
627         sapcPolicy.getStateMap().put(sapcMatchState.getKey().getLocalName(), sapcMatchState);
628         sapcPolicy.getStateMap().put(sapcEstablishState.getKey().getLocalName(), sapcEstablishState);
629         sapcPolicy.getStateMap().put(sapcDecideState.getKey().getLocalName(), sapcDecideState);
630         sapcPolicy.getStateMap().put(sapcActState.getKey().getLocalName(), sapcActState);
631
632         final AxPolicy periodicPolicy = new AxPolicy(new AxArtifactKey("PeriodicPolicy", "0.0.1"));
633         periodicPolicy.setTemplate("MEDA");
634
635         final AxState periodicActState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Act"));
636         periodicActState.setTrigger(periodicEvent.getKey());
637         final AxStateOutput perAct2Out = new AxStateOutput(periodicActState.getKey(), AxReferenceKey.getNullKey(),
638                 sapcBlacklistSubscriberEvent.getKey());
639         periodicActState.getStateOutputs().put(perAct2Out.getKey().getLocalName(), perAct2Out);
640         periodicActState.setDefaultTask(periodicActTask.getKey());
641         periodicActState.getTaskReferences().put(periodicActTask.getKey(),
642                 new AxStateTaskReference(periodicActState.getKey(), periodicActTask.getKey(),
643                         AxStateTaskOutputType.DIRECT, perAct2Out.getKey()));
644
645         final AxState periodicDecideState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Decide"));
646         periodicDecideState.setTrigger(periodicEvent.getKey());
647         final AxStateOutput perDec2Act =
648                 new AxStateOutput(periodicDecideState.getKey(), periodicActState.getKey(), periodicEvent.getKey());
649         periodicDecideState.getStateOutputs().put(perDec2Act.getKey().getLocalName(), perDec2Act);
650         periodicDecideState.setDefaultTask(periodicDecideTask.getKey());
651         periodicDecideState.getTaskReferences().put(periodicDecideTask.getKey(),
652                 new AxStateTaskReference(periodicDecideState.getKey(), periodicDecideTask.getKey(),
653                         AxStateTaskOutputType.DIRECT, perDec2Act.getKey()));
654
655         final AxState periodicEstablishState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Establish"));
656         periodicEstablishState.setTrigger(periodicEvent.getKey());
657         final AxStateOutput perEst2Dec = new AxStateOutput(periodicEstablishState.getKey(),
658                 periodicDecideState.getKey(), periodicEvent.getKey());
659         periodicEstablishState.getStateOutputs().put(perEst2Dec.getKey().getLocalName(), perEst2Dec);
660         periodicEstablishState.setDefaultTask(periodicEstablishTask.getKey());
661         periodicEstablishState.getTaskReferences().put(periodicEstablishTask.getKey(),
662                 new AxStateTaskReference(periodicEstablishState.getKey(), periodicEstablishTask.getKey(),
663                         AxStateTaskOutputType.DIRECT, perEst2Dec.getKey()));
664
665         final AxState periodicMatchState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Match"));
666         periodicMatchState.setTrigger(periodicEvent.getKey());
667         final AxStateOutput perMat2Est =
668                 new AxStateOutput(periodicMatchState.getKey(), periodicEstablishState.getKey(), periodicEvent.getKey());
669         periodicMatchState.getStateOutputs().put(perMat2Est.getKey().getLocalName(), perMat2Est);
670         periodicMatchState.setDefaultTask(periodicMatchTask.getKey());
671         periodicMatchState.getTaskReferences().put(periodicMatchTask.getKey(),
672                 new AxStateTaskReference(periodicMatchState.getKey(), periodicMatchTask.getKey(),
673                         AxStateTaskOutputType.DIRECT, perMat2Est.getKey()));
674
675         periodicPolicy.setFirstState(periodicMatchState.getKey().getLocalName());
676         periodicPolicy.getStateMap().put(periodicMatchState.getKey().getLocalName(), periodicMatchState);
677         periodicPolicy.getStateMap().put(periodicEstablishState.getKey().getLocalName(), periodicEstablishState);
678         periodicPolicy.getStateMap().put(periodicDecideState.getKey().getLocalName(), periodicDecideState);
679         periodicPolicy.getStateMap().put(periodicActState.getKey().getLocalName(), periodicActState);
680
681         final AxPolicies aadmPolicies = new AxPolicies(new AxArtifactKey("AADMPolicies", "0.0.1"));
682         aadmPolicies.getPolicyMap().put(aadmPolicy.getKey(), aadmPolicy);
683         aadmPolicies.getPolicyMap().put(vMmePolicy.getKey(), vMmePolicy);
684         aadmPolicies.getPolicyMap().put(sapcPolicy.getKey(), sapcPolicy);
685         aadmPolicies.getPolicyMap().put(periodicPolicy.getKey(), periodicPolicy);
686
687         final AxKeyInformation keyInformation = new AxKeyInformation(new AxArtifactKey("AADMKeyInformation", "0.0.1"));
688         final AxPolicyModel aadmPolicyModel = new AxPolicyModel(new AxArtifactKey("AADMPolicyModel", "0.0.1"));
689         aadmPolicyModel.setPolicies(aadmPolicies);
690         aadmPolicyModel.setEvents(aadmEvents);
691         aadmPolicyModel.setTasks(aadmTasks);
692         aadmPolicyModel.setAlbums(aadmAlbums);
693         aadmPolicyModel.setSchemas(aadmContextSchemas);
694         aadmPolicyModel.setKeyInformation(keyInformation);
695         aadmPolicyModel.getKeyInformation().generateKeyInfo(aadmPolicyModel);
696
697         final AxValidationResult result = aadmPolicyModel.validate(new AxValidationResult());
698         if (!result.getValidationResult().equals(AxValidationResult.ValidationResult.VALID)) {
699             throw new ApexRuntimeException("model " + aadmPolicyModel.getId() + " is not valid" + result);
700         }
701         return aadmPolicyModel;
702     }
703 }