2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
4 * Modifications Copyright (C) 2019 Samsung Electronics Co., Ltd.
5 * Modifications Copyright (C) 2019 Nordix Foundation.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.apex.model.modelapi.impl;
25 import java.util.Properties;
27 import org.onap.policy.apex.model.basicmodel.dao.DaoParameters;
28 import org.onap.policy.apex.model.modelapi.ApexApiResult;
29 import org.onap.policy.apex.model.modelapi.ApexModel;
30 import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
33 * This class is an implementation of a facade on an Apex model for editors of Apex models.
35 * @author Liam Fallon (liam.fallon@ericsson.com)
37 public final class ApexModelImpl implements ApexModel {
38 // The policy model being acted upon
39 private AxPolicyModel policyModel = new AxPolicyModel();
41 // The file name for the loaded file
42 private String fileName = null;
45 private ModelFacade modelFacade;
46 private KeyInformationFacade keyInformationFacade;
47 private ContextSchemaFacade contextSchemaFacade;
48 private EventFacade eventFacade;
49 private ContextAlbumFacade contextAlbumFacade;
50 private TaskFacade taskFacade;
51 private PolicyFacade policyFacade;
52 private ModelHandlerFacade modelHandlerFacade;
55 private Properties apexProperties;
56 private boolean jsonMode;
59 * Create an implementation of the Apex editor and model APIs.
61 * @param apexProperties The properties to use for the model
62 * @param jsonMode set to true to return JSON strings in list and delete operations, otherwise set to false
64 public ApexModelImpl(final Properties apexProperties, final boolean jsonMode) {
65 this.apexProperties = apexProperties;
66 this.jsonMode = jsonMode;
69 this.modelFacade = new ModelFacade(this, apexProperties, jsonMode);
70 this.keyInformationFacade = new KeyInformationFacade(this, apexProperties, jsonMode);
71 this.contextSchemaFacade = new ContextSchemaFacade(this, apexProperties, jsonMode);
72 this.eventFacade = new EventFacade(this, apexProperties, jsonMode);
73 this.contextAlbumFacade = new ContextAlbumFacade(this, apexProperties, jsonMode);
74 this.taskFacade = new TaskFacade(this, apexProperties, jsonMode);
75 this.policyFacade = new PolicyFacade(this, apexProperties, jsonMode);
76 this.modelHandlerFacade = new ModelHandlerFacade(this, apexProperties, jsonMode);
81 * Constructor, prevents this class being sub-classed.
83 private ApexModelImpl() {
84 // Private constructor to block subclassing
91 public ApexModel clone() {
92 ApexModelImpl ret = new ApexModelImpl();
94 ret.policyModel = new AxPolicyModel(policyModel);
95 ret.fileName = this.fileName;
96 ret.apexProperties = this.apexProperties;
97 ret.jsonMode = this.jsonMode;
98 ret.modelFacade = new ModelFacade(ret, this.apexProperties, this.jsonMode);
99 ret.keyInformationFacade = new KeyInformationFacade(ret, this.apexProperties, this.jsonMode);
100 ret.contextSchemaFacade = new ContextSchemaFacade(ret, this.apexProperties, this.jsonMode);
101 ret.eventFacade = new EventFacade(ret, this.apexProperties, this.jsonMode);
102 ret.contextAlbumFacade = new ContextAlbumFacade(ret, this.apexProperties, this.jsonMode);
103 ret.taskFacade = new TaskFacade(ret, this.apexProperties, this.jsonMode);
104 ret.policyFacade = new PolicyFacade(ret, this.apexProperties, this.jsonMode);
105 ret.modelHandlerFacade = new ModelHandlerFacade(ret, this.apexProperties, this.jsonMode);
115 public ApexApiResult createModel(final String name, final String version, final String uuid,
116 final String description) {
117 return modelFacade.createModel(name, version, uuid, description);
124 public ApexApiResult updateModel(final String name, final String version, final String uuid,
125 final String description) {
126 return modelFacade.updateModel(name, version, uuid, description);
133 public ApexApiResult getModelKey() {
134 return modelFacade.getModelKey();
141 public ApexApiResult listModel() {
142 return modelFacade.listModel();
149 public ApexApiResult deleteModel() {
150 return modelFacade.deleteModel();
157 public ApexApiResult createKeyInformation(final String name, final String version, final String uuid,
158 final String description) {
159 return keyInformationFacade.createKeyInformation(name, version, uuid, description);
166 public ApexApiResult updateKeyInformation(final String name, final String version, final String uuid,
167 final String description) {
168 return keyInformationFacade.updateKeyInformation(name, version, uuid, description);
175 public ApexApiResult listKeyInformation(final String name, final String version) {
176 return keyInformationFacade.listKeyInformation(name, version);
183 public ApexApiResult deleteKeyInformation(final String name, final String version) {
184 return keyInformationFacade.deleteKeyInformation(name, version);
191 public ApexApiResult validateKeyInformation(final String name, final String version) {
192 return keyInformationFacade.validateKeyInformation(name, version);
199 public ApexApiResult createContextSchema(final String name, final String version, final String schemaFlavour,
200 final String schemaDefinition, final String uuid, final String description) {
201 return contextSchemaFacade.createContextSchema(name, version, schemaFlavour, schemaDefinition, uuid,
209 public ApexApiResult updateContextSchema(final String name, final String version, final String schemaFlavour,
210 final String schemaDefinition, final String uuid, final String description) {
211 return contextSchemaFacade.updateContextSchema(name, version, schemaFlavour, schemaDefinition, uuid,
219 public ApexApiResult listContextSchemas(final String name, final String version) {
220 return contextSchemaFacade.listContextSchemas(name, version);
227 public ApexApiResult deleteContextSchema(final String name, final String version) {
228 return contextSchemaFacade.deleteContextSchema(name, version);
235 public ApexApiResult validateContextSchemas(final String name, final String version) {
236 return contextSchemaFacade.validateContextSchemas(name, version);
243 public ApexApiResult createEvent(final String name, final String version, final String nameSpace,
244 final String source, final String target, final String uuid, final String description) {
245 return eventFacade.createEvent(name, version, nameSpace, source, target, uuid, description);
252 public ApexApiResult updateEvent(final String name, final String version, final String nameSpace,
253 final String source, final String target, final String uuid, final String description) {
254 return eventFacade.updateEvent(name, version, nameSpace, source, target, uuid, description);
261 public ApexApiResult listEvent(final String name, final String version) {
262 return eventFacade.listEvent(name, version);
269 public ApexApiResult deleteEvent(final String name, final String version) {
270 return eventFacade.deleteEvent(name, version);
277 public ApexApiResult validateEvent(final String name, final String version) {
278 return eventFacade.validateEvent(name, version);
285 public ApexApiResult createEventPar(final String name, final String version, final String parName,
286 final String contextSchemaName, final String contextSchemaVersion, final boolean optional) {
287 return eventFacade.createEventPar(name, version, parName, contextSchemaName, contextSchemaVersion, optional);
294 public ApexApiResult listEventPar(final String name, final String version, final String parName) {
295 return eventFacade.listEventPar(name, version, parName);
302 public ApexApiResult deleteEventPar(final String name, final String version, final String parName) {
303 return eventFacade.deleteEventPar(name, version, parName);
310 // CHECKSTYLE:OFF: checkstyle:parameterNumber
311 public ApexApiResult createContextAlbum(final String name, final String version, final String scope,
312 final String writable, final String contextSchemaName, final String contextSchemaVersion, final String uuid,
313 final String description) {
314 return contextAlbumFacade.createContextAlbum(new ContextAlbumBuilder().setName(name).setVersion(version)
315 .setScope(scope).setWritable(writable).setContextSchemaName(contextSchemaName)
316 .setContextSchemaVersion(contextSchemaVersion).setUuid(uuid).setDescription(description));
318 // CHECKSTYLE:ON: checkstyle:parameterNumber
323 // CHECKSTYLE:OFF: checkstyle:parameterNumber
325 public ApexApiResult updateContextAlbum(final String name, final String version, final String scope,
326 final String writable, final String contextSchemaName, final String contextSchemaVersion, final String uuid,
327 final String description) {
328 return contextAlbumFacade.updateContextAlbum(new ContextAlbumBuilder().setName(name).setVersion(version)
329 .setScope(scope).setWritable(writable).setContextSchemaName(contextSchemaName)
330 .setContextSchemaVersion(contextSchemaVersion).setUuid(uuid).setDescription(description));
332 // CHECKSTYLE:ON: checkstyle:parameterNumber
338 public ApexApiResult listContextAlbum(final String name, final String version) {
339 return contextAlbumFacade.listContextAlbum(name, version);
346 public ApexApiResult deleteContextAlbum(final String name, final String version) {
347 return contextAlbumFacade.deleteContextAlbum(name, version);
354 public ApexApiResult validateContextAlbum(final String name, final String version) {
355 return contextAlbumFacade.validateContextAlbum(name, version);
362 public ApexApiResult createTask(final String name, final String version, final String uuid,
363 final String description) {
364 return taskFacade.createTask(name, version, uuid, description);
371 public ApexApiResult updateTask(final String name, final String version, final String uuid,
372 final String description) {
373 return taskFacade.updateTask(name, version, uuid, description);
380 public ApexApiResult listTask(final String name, final String version) {
381 return taskFacade.listTask(name, version);
388 public ApexApiResult deleteTask(final String name, final String version) {
389 return taskFacade.deleteTask(name, version);
396 public ApexApiResult validateTask(final String name, final String version) {
397 return taskFacade.validateTask(name, version);
404 public ApexApiResult createTaskLogic(final String name, final String version, final String logicFlavour,
405 final String logic) {
406 return taskFacade.createTaskLogic(name, version, logicFlavour, logic);
413 public ApexApiResult updateTaskLogic(final String name, final String version, final String logicFlavour,
414 final String logic) {
415 return taskFacade.updateTaskLogic(name, version, logicFlavour, logic);
422 public ApexApiResult listTaskLogic(final String name, final String version) {
423 return taskFacade.listTaskLogic(name, version);
430 public ApexApiResult deleteTaskLogic(final String name, final String version) {
431 return taskFacade.deleteTaskLogic(name, version);
438 public ApexApiResult createTaskInputField(final String name, final String version, final String fieldName,
439 final String dataTypeName, final String dataTypeVersion, final boolean optional) {
440 return taskFacade.createTaskInputField(name, version, fieldName, dataTypeName, dataTypeVersion, optional);
447 public ApexApiResult listTaskInputField(final String name, final String version, final String fieldName) {
448 return taskFacade.listTaskInputField(name, version, fieldName);
455 public ApexApiResult deleteTaskInputField(final String name, final String version, final String fieldName) {
456 return taskFacade.deleteTaskInputField(name, version, fieldName);
463 public ApexApiResult createTaskOutputField(final String name, final String version, final String fieldName,
464 final String dataTypeName, final String dataTypeVersion, final boolean optional) {
465 return taskFacade.createTaskOutputField(name, version, fieldName, dataTypeName, dataTypeVersion, optional);
472 public ApexApiResult listTaskOutputField(final String name, final String version, final String fieldName) {
473 return taskFacade.listTaskOutputField(name, version, fieldName);
480 public ApexApiResult deleteTaskOutputField(final String name, final String version, final String fieldName) {
481 return taskFacade.deleteTaskOutputField(name, version, fieldName);
488 public ApexApiResult createTaskParameter(final String name, final String version, final String parName,
489 final String defaultValue) {
490 return taskFacade.createTaskParameter(name, version, parName, defaultValue);
497 public ApexApiResult listTaskParameter(final String name, final String version, final String parName) {
498 return taskFacade.listTaskParameter(name, version, parName);
505 public ApexApiResult deleteTaskParameter(final String name, final String version, final String parName) {
506 return taskFacade.deleteTaskParameter(name, version, parName);
513 public ApexApiResult createTaskContextRef(final String name, final String version, final String contextAlbumName,
514 final String contextAlbumVersion) {
515 return taskFacade.createTaskContextRef(name, version, contextAlbumName, contextAlbumVersion);
522 public ApexApiResult listTaskContextRef(final String name, final String version, final String contextAlbumName,
523 final String contextAlbumVersion) {
524 return taskFacade.listTaskContextRef(name, version, contextAlbumName, contextAlbumVersion);
531 public ApexApiResult deleteTaskContextRef(final String name, final String version, final String contextAlbumName,
532 final String contextAlbumVersion) {
533 return taskFacade.deleteTaskContextRef(name, version, contextAlbumName, contextAlbumVersion);
540 public ApexApiResult createPolicy(final String name, final String version, final String template,
541 final String firstState, final String uuid, final String description) {
542 return policyFacade.createPolicy(name, version, template, firstState, uuid, description);
549 public ApexApiResult updatePolicy(final String name, final String version, final String template,
550 final String firstState, final String uuid, final String description) {
551 return policyFacade.updatePolicy(name, version, template, firstState, uuid, description);
558 public ApexApiResult listPolicy(final String name, final String version) {
559 return policyFacade.listPolicy(name, version);
566 public ApexApiResult deletePolicy(final String name, final String version) {
567 return policyFacade.deletePolicy(name, version);
574 public ApexApiResult validatePolicy(final String name, final String version) {
575 return policyFacade.validatePolicy(name, version);
582 public ApexApiResult createPolicyState(final String name, final String version, final String stateName,
583 final String triggerName, final String triggerVersion, final String defaultTaskName,
584 final String defaltTaskVersion) {
585 return policyFacade.createPolicyState(name, version, stateName, triggerName, triggerVersion, defaultTaskName,
593 public ApexApiResult updatePolicyState(final String name, final String version, final String stateName,
594 final String triggerName, final String triggerVersion, final String defaultTaskName,
595 final String defaltTaskVersion) {
596 return policyFacade.updatePolicyState(name, version, stateName, triggerName, triggerVersion, defaultTaskName,
604 public ApexApiResult listPolicyState(final String name, final String version, final String stateName) {
605 return policyFacade.listPolicyState(name, version, stateName);
612 public ApexApiResult deletePolicyState(final String name, final String version, final String stateName) {
613 return policyFacade.deletePolicyState(name, version, stateName);
620 public ApexApiResult createPolicyStateTaskSelectionLogic(final String name, final String version,
621 final String stateName, final String logicFlavour, final String logic) {
622 return policyFacade.createPolicyStateTaskSelectionLogic(name, version, stateName, logicFlavour, logic);
629 public ApexApiResult updatePolicyStateTaskSelectionLogic(final String name, final String version,
630 final String stateName, final String logicFlavour, final String logic) {
631 return policyFacade.updatePolicyStateTaskSelectionLogic(name, version, stateName, logicFlavour, logic);
638 public ApexApiResult listPolicyStateTaskSelectionLogic(final String name, final String version,
639 final String stateName) {
640 return policyFacade.listPolicyStateTaskSelectionLogic(name, version, stateName);
647 public ApexApiResult deletePolicyStateTaskSelectionLogic(final String name, final String version,
648 final String stateName) {
649 return policyFacade.deletePolicyStateTaskSelectionLogic(name, version, stateName);
656 public ApexApiResult createPolicyStateOutput(final String name, final String version, final String stateName,
657 final String outputName, final String eventName, final String eventVersion, final String nextState) {
658 return policyFacade.createPolicyStateOutput(name, version, stateName, outputName, eventName, eventVersion,
666 public ApexApiResult listPolicyStateOutput(final String name, final String version, final String stateName,
667 final String outputName) {
668 return policyFacade.listPolicyStateOutput(name, version, stateName, outputName);
675 public ApexApiResult deletePolicyStateOutput(final String name, final String version, final String stateName,
676 final String outputName) {
677 return policyFacade.deletePolicyStateOutput(name, version, stateName, outputName);
684 public ApexApiResult createPolicyStateFinalizerLogic(final String name, final String version,
685 final String stateName, final String finalizerLogicName, final String logicFlavour, final String logic) {
686 return policyFacade.createPolicyStateFinalizerLogic(name, version, stateName, finalizerLogicName, logicFlavour,
694 public ApexApiResult updatePolicyStateFinalizerLogic(final String name, final String version,
695 final String stateName, final String finalizerLogicName, final String logicFlavour, final String logic) {
696 return policyFacade.updatePolicyStateFinalizerLogic(name, version, stateName, finalizerLogicName, logicFlavour,
704 public ApexApiResult listPolicyStateFinalizerLogic(final String name, final String version, final String stateName,
705 final String finalizerLogicName) {
706 return policyFacade.listPolicyStateFinalizerLogic(name, version, stateName, finalizerLogicName);
713 public ApexApiResult deletePolicyStateFinalizerLogic(final String name, final String version,
714 final String stateName, final String finalizerLogicName) {
715 return policyFacade.deletePolicyStateFinalizerLogic(name, version, stateName, finalizerLogicName);
722 // CHECKSTYLE:OFF: checkstyle:parameterNumber
723 public ApexApiResult createPolicyStateTaskRef(final String name, final String version, final String stateName,
724 final String taskLocalName, final String taskName, final String taskVersion, final String outputType,
725 final String outputName) {
726 return policyFacade.createPolicyStateTaskRef(new CreatePolicyStateTaskRefBuilder().setName(name)
727 .setVersion(version).setStateName(stateName).setTaskLocalName(taskLocalName).setTaskName(taskName)
728 .setTaskVersion(taskVersion).setOutputType(outputType).setOutputName(outputName));
730 // CHECKSTYLE:ON: checkstyle:parameterNumber
736 public ApexApiResult listPolicyStateTaskRef(final String name, final String version, final String stateName,
737 final String taskName, final String taskVersion) {
738 return policyFacade.listPolicyStateTaskRef(name, version, stateName, taskName, taskVersion);
745 public ApexApiResult deletePolicyStateTaskRef(final String name, final String version, final String stateName,
746 final String taskName, final String taskVersion) {
747 return policyFacade.deletePolicyStateTaskRef(name, version, stateName, taskName, taskVersion);
754 public ApexApiResult createPolicyStateContextRef(final String name, final String version, final String stateName,
755 final String contextAlbumName, final String contextAlbumVersion) {
756 return policyFacade.createPolicyStateContextRef(name, version, stateName, contextAlbumName,
757 contextAlbumVersion);
764 public ApexApiResult listPolicyStateContextRef(final String name, final String version, final String stateName,
765 final String contextAlbumName, final String contextAlbumVersion) {
766 return policyFacade.listPolicyStateContextRef(name, version, stateName, contextAlbumName, contextAlbumVersion);
773 public ApexApiResult deletePolicyStateContextRef(final String name, final String version, final String stateName,
774 final String contextAlbumName, final String contextAlbumVersion) {
775 return policyFacade.deletePolicyStateContextRef(name, version, stateName, contextAlbumName,
776 contextAlbumVersion);
783 public ApexApiResult loadFromString(final String modelString) {
784 return modelHandlerFacade.loadFromString(modelString);
791 // CHECKSTYLE:OFF: checkstyle:HiddenField
792 public ApexApiResult loadFromFile(final String fileName) {
793 this.fileName = fileName;
794 return modelHandlerFacade.loadFromFile(fileName);
796 // CHECKSTYLE:ON: checkstyle:HiddenField
802 public ApexApiResult saveToFile(final String saveFileName, final boolean xmlFlag) {
803 if (saveFileName == null) {
804 return modelHandlerFacade.saveToFile(fileName, xmlFlag);
806 return modelHandlerFacade.saveToFile(saveFileName, xmlFlag);
814 public ApexApiResult loadFromDatabase(final String modelName, final String modelVersion,
815 final DaoParameters daoParameters) {
816 return modelHandlerFacade.loadFromDatabase(modelName, modelVersion, daoParameters);
823 public ApexApiResult saveToDatabase(final DaoParameters daoParameters) {
824 return modelHandlerFacade.saveToDatabase(daoParameters);
831 public ApexApiResult readFromUrl(final String urlString) {
832 return modelHandlerFacade.readFromUrl(urlString);
839 public ApexApiResult writeToUrl(final String urlString, final boolean xmlFlag) {
840 return modelHandlerFacade.writeToUrl(urlString, xmlFlag);
847 public ApexApiResult analyse() {
848 return modelHandlerFacade.analyse();
855 public ApexApiResult validate() {
856 return modelHandlerFacade.validate();
863 public ApexApiResult compare(final String otherModelFileName, final boolean diffsOnly, final boolean keysOnly) {
864 return modelHandlerFacade.compare(otherModelFileName, diffsOnly, keysOnly);
871 public ApexApiResult compareWithString(final String otherModelString, final boolean diffsOnly,
872 final boolean keysOnly) {
873 return modelHandlerFacade.compareWithString(otherModelString, diffsOnly, keysOnly);
880 public ApexApiResult split(final String targetModelFileName, final String splitOutPolicies) {
881 return modelHandlerFacade.split(targetModelFileName, splitOutPolicies);
888 public ApexApiResult split(final String splitOutPolicies) {
889 return modelHandlerFacade.split(splitOutPolicies);
896 public ApexApiResult merge(final String mergeInModelFileName, final boolean keepOriginal) {
897 return modelHandlerFacade.merge(mergeInModelFileName, keepOriginal);
904 public ApexApiResult mergeWithString(final String otherModelString, final boolean keepOriginal) {
905 return modelHandlerFacade.mergeWithString(otherModelString, keepOriginal);
912 public AxPolicyModel getPolicyModel() {
920 public void setPolicyModel(final AxPolicyModel policyModel) {
921 this.policyModel = policyModel;
928 public AxPolicyModel build() {