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;
26 import org.onap.policy.apex.model.basicmodel.dao.DaoParameters;
27 import org.onap.policy.apex.model.modelapi.ApexApiResult;
28 import org.onap.policy.apex.model.modelapi.ApexModel;
29 import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
32 * This class is an implementation of a facade on an Apex model for editors of Apex models.
34 * @author Liam Fallon (liam.fallon@ericsson.com)
36 public final class ApexModelImpl implements ApexModel {
37 // The policy model being acted upon
38 private AxPolicyModel policyModel = new AxPolicyModel();
40 // The file name for the loaded file
41 private String fileName = null;
44 private ModelFacade modelFacade;
45 private KeyInformationFacade keyInformationFacade;
46 private ContextSchemaFacade contextSchemaFacade;
47 private EventFacade eventFacade;
48 private ContextAlbumFacade contextAlbumFacade;
49 private TaskFacade taskFacade;
50 private PolicyFacade policyFacade;
51 private ModelHandlerFacade modelHandlerFacade;
54 private Properties apexProperties;
55 private boolean jsonMode;
58 * Create an implementation of the Apex editor and model APIs.
60 * @param apexProperties The properties to use for the model
61 * @param jsonMode set to true to return JSON strings in list and delete operations, otherwise set to false
63 public ApexModelImpl(final Properties apexProperties, final boolean jsonMode) {
64 this.apexProperties = apexProperties;
65 this.jsonMode = jsonMode;
68 this.modelFacade = new ModelFacade(this, apexProperties, jsonMode);
69 this.keyInformationFacade = new KeyInformationFacade(this, apexProperties, jsonMode);
70 this.contextSchemaFacade = new ContextSchemaFacade(this, apexProperties, jsonMode);
71 this.eventFacade = new EventFacade(this, apexProperties, jsonMode);
72 this.contextAlbumFacade = new ContextAlbumFacade(this, apexProperties, jsonMode);
73 this.taskFacade = new TaskFacade(this, apexProperties, jsonMode);
74 this.policyFacade = new PolicyFacade(this, apexProperties, jsonMode);
75 this.modelHandlerFacade = new ModelHandlerFacade(this, apexProperties, jsonMode);
80 * Constructor, prevents this class being sub-classed.
82 private ApexModelImpl() {
83 // Private constructor to block subclassing
90 public ApexModel clone() {
91 ApexModelImpl ret = new ApexModelImpl();
93 ret.policyModel = new AxPolicyModel(policyModel);
94 ret.fileName = this.fileName;
95 ret.apexProperties = this.apexProperties;
96 ret.jsonMode = this.jsonMode;
97 ret.modelFacade = new ModelFacade(ret, this.apexProperties, this.jsonMode);
98 ret.keyInformationFacade = new KeyInformationFacade(ret, this.apexProperties, this.jsonMode);
99 ret.contextSchemaFacade = new ContextSchemaFacade(ret, this.apexProperties, this.jsonMode);
100 ret.eventFacade = new EventFacade(ret, this.apexProperties, this.jsonMode);
101 ret.contextAlbumFacade = new ContextAlbumFacade(ret, this.apexProperties, this.jsonMode);
102 ret.taskFacade = new TaskFacade(ret, this.apexProperties, this.jsonMode);
103 ret.policyFacade = new PolicyFacade(ret, this.apexProperties, this.jsonMode);
104 ret.modelHandlerFacade = new ModelHandlerFacade(ret, this.apexProperties, this.jsonMode);
114 public ApexApiResult createModel(final String name, final String version, final String uuid,
115 final String description) {
116 return modelFacade.createModel(name, version, uuid, description);
123 public ApexApiResult updateModel(final String name, final String version, final String uuid,
124 final String description) {
125 return modelFacade.updateModel(name, version, uuid, description);
132 public ApexApiResult getModelKey() {
133 return modelFacade.getModelKey();
140 public ApexApiResult listModel() {
141 return modelFacade.listModel();
148 public ApexApiResult deleteModel() {
149 return modelFacade.deleteModel();
156 public ApexApiResult createKeyInformation(final String name, final String version, final String uuid,
157 final String description) {
158 return keyInformationFacade.createKeyInformation(name, version, uuid, description);
165 public ApexApiResult updateKeyInformation(final String name, final String version, final String uuid,
166 final String description) {
167 return keyInformationFacade.updateKeyInformation(name, version, uuid, description);
174 public ApexApiResult listKeyInformation(final String name, final String version) {
175 return keyInformationFacade.listKeyInformation(name, version);
182 public ApexApiResult deleteKeyInformation(final String name, final String version) {
183 return keyInformationFacade.deleteKeyInformation(name, version);
190 public ApexApiResult validateKeyInformation(final String name, final String version) {
191 return keyInformationFacade.validateKeyInformation(name, version);
198 public ApexApiResult createContextSchema(final String name, final String version, final String schemaFlavour,
199 final String schemaDefinition, final String uuid, final String description) {
200 return contextSchemaFacade.createContextSchema(name, version, schemaFlavour, schemaDefinition, uuid,
208 public ApexApiResult updateContextSchema(final String name, final String version, final String schemaFlavour,
209 final String schemaDefinition, final String uuid, final String description) {
210 return contextSchemaFacade.updateContextSchema(name, version, schemaFlavour, schemaDefinition, uuid,
218 public ApexApiResult listContextSchemas(final String name, final String version) {
219 return contextSchemaFacade.listContextSchemas(name, version);
226 public ApexApiResult deleteContextSchema(final String name, final String version) {
227 return contextSchemaFacade.deleteContextSchema(name, version);
234 public ApexApiResult validateContextSchemas(final String name, final String version) {
235 return contextSchemaFacade.validateContextSchemas(name, version);
242 public ApexApiResult createEvent(final String name, final String version, final String nameSpace,
243 final String source, final String target, final String uuid, final String description) {
244 return eventFacade.createEvent(name, version, nameSpace, source, target, uuid, description);
251 public ApexApiResult updateEvent(final String name, final String version, final String nameSpace,
252 final String source, final String target, final String uuid, final String description) {
253 return eventFacade.updateEvent(name, version, nameSpace, source, target, uuid, description);
260 public ApexApiResult listEvent(final String name, final String version) {
261 return eventFacade.listEvent(name, version);
268 public ApexApiResult deleteEvent(final String name, final String version) {
269 return eventFacade.deleteEvent(name, version);
276 public ApexApiResult validateEvent(final String name, final String version) {
277 return eventFacade.validateEvent(name, version);
284 public ApexApiResult createEventPar(final String name, final String version, final String parName,
285 final String contextSchemaName, final String contextSchemaVersion, final boolean optional) {
286 return eventFacade.createEventPar(name, version, parName, contextSchemaName, contextSchemaVersion, optional);
293 public ApexApiResult listEventPar(final String name, final String version, final String parName) {
294 return eventFacade.listEventPar(name, version, parName);
301 public ApexApiResult deleteEventPar(final String name, final String version, final String parName) {
302 return eventFacade.deleteEventPar(name, version, parName);
309 // CHECKSTYLE:OFF: checkstyle:parameterNumber
310 public ApexApiResult createContextAlbum(final String name, final String version, final String scope,
311 final String writable, final String contextSchemaName, final String contextSchemaVersion, final String uuid,
312 final String description) {
313 return contextAlbumFacade.createContextAlbum(new ContextAlbumBuilder().setName(name).setVersion(version)
314 .setScope(scope).setWritable(writable).setContextSchemaName(contextSchemaName)
315 .setContextSchemaVersion(contextSchemaVersion).setUuid(uuid).setDescription(description));
317 // CHECKSTYLE:ON: checkstyle:parameterNumber
322 // CHECKSTYLE:OFF: checkstyle:parameterNumber
324 public ApexApiResult updateContextAlbum(final String name, final String version, final String scope,
325 final String writable, final String contextSchemaName, final String contextSchemaVersion, final String uuid,
326 final String description) {
327 return contextAlbumFacade.updateContextAlbum(new ContextAlbumBuilder().setName(name).setVersion(version)
328 .setScope(scope).setWritable(writable).setContextSchemaName(contextSchemaName)
329 .setContextSchemaVersion(contextSchemaVersion).setUuid(uuid).setDescription(description));
331 // CHECKSTYLE:ON: checkstyle:parameterNumber
337 public ApexApiResult listContextAlbum(final String name, final String version) {
338 return contextAlbumFacade.listContextAlbum(name, version);
345 public ApexApiResult deleteContextAlbum(final String name, final String version) {
346 return contextAlbumFacade.deleteContextAlbum(name, version);
353 public ApexApiResult validateContextAlbum(final String name, final String version) {
354 return contextAlbumFacade.validateContextAlbum(name, version);
361 public ApexApiResult createTask(final String name, final String version, final String uuid,
362 final String description) {
363 return taskFacade.createTask(name, version, uuid, description);
370 public ApexApiResult updateTask(final String name, final String version, final String uuid,
371 final String description) {
372 return taskFacade.updateTask(name, version, uuid, description);
379 public ApexApiResult listTask(final String name, final String version) {
380 return taskFacade.listTask(name, version);
387 public ApexApiResult deleteTask(final String name, final String version) {
388 return taskFacade.deleteTask(name, version);
395 public ApexApiResult validateTask(final String name, final String version) {
396 return taskFacade.validateTask(name, version);
403 public ApexApiResult createTaskLogic(final String name, final String version, final String logicFlavour,
404 final String logic) {
405 return taskFacade.createTaskLogic(name, version, logicFlavour, logic);
412 public ApexApiResult updateTaskLogic(final String name, final String version, final String logicFlavour,
413 final String logic) {
414 return taskFacade.updateTaskLogic(name, version, logicFlavour, logic);
421 public ApexApiResult listTaskLogic(final String name, final String version) {
422 return taskFacade.listTaskLogic(name, version);
429 public ApexApiResult deleteTaskLogic(final String name, final String version) {
430 return taskFacade.deleteTaskLogic(name, version);
437 public ApexApiResult createTaskInputField(final String name, final String version, final String fieldName,
438 final String dataTypeName, final String dataTypeVersion, final boolean optional) {
439 return taskFacade.createTaskInputField(name, version, fieldName, dataTypeName, dataTypeVersion, optional);
446 public ApexApiResult listTaskInputField(final String name, final String version, final String fieldName) {
447 return taskFacade.listTaskInputField(name, version, fieldName);
454 public ApexApiResult deleteTaskInputField(final String name, final String version, final String fieldName) {
455 return taskFacade.deleteTaskInputField(name, version, fieldName);
462 public ApexApiResult createTaskOutputField(final String name, final String version, final String fieldName,
463 final String dataTypeName, final String dataTypeVersion, final boolean optional) {
464 return taskFacade.createTaskOutputField(name, version, fieldName, dataTypeName, dataTypeVersion, optional);
471 public ApexApiResult listTaskOutputField(final String name, final String version, final String fieldName) {
472 return taskFacade.listTaskOutputField(name, version, fieldName);
479 public ApexApiResult deleteTaskOutputField(final String name, final String version, final String fieldName) {
480 return taskFacade.deleteTaskOutputField(name, version, fieldName);
487 public ApexApiResult createTaskParameter(final String name, final String version, final String parName,
488 final String defaultValue) {
489 return taskFacade.createTaskParameter(name, version, parName, defaultValue);
496 public ApexApiResult listTaskParameter(final String name, final String version, final String parName) {
497 return taskFacade.listTaskParameter(name, version, parName);
504 public ApexApiResult deleteTaskParameter(final String name, final String version, final String parName) {
505 return taskFacade.deleteTaskParameter(name, version, parName);
512 public ApexApiResult createTaskContextRef(final String name, final String version, final String contextAlbumName,
513 final String contextAlbumVersion) {
514 return taskFacade.createTaskContextRef(name, version, contextAlbumName, contextAlbumVersion);
521 public ApexApiResult listTaskContextRef(final String name, final String version, final String contextAlbumName,
522 final String contextAlbumVersion) {
523 return taskFacade.listTaskContextRef(name, version, contextAlbumName, contextAlbumVersion);
530 public ApexApiResult deleteTaskContextRef(final String name, final String version, final String contextAlbumName,
531 final String contextAlbumVersion) {
532 return taskFacade.deleteTaskContextRef(name, version, contextAlbumName, contextAlbumVersion);
539 public ApexApiResult createPolicy(final String name, final String version, final String template,
540 final String firstState, final String uuid, final String description) {
541 return policyFacade.createPolicy(name, version, template, firstState, uuid, description);
548 public ApexApiResult updatePolicy(final String name, final String version, final String template,
549 final String firstState, final String uuid, final String description) {
550 return policyFacade.updatePolicy(name, version, template, firstState, uuid, description);
557 public ApexApiResult listPolicy(final String name, final String version) {
558 return policyFacade.listPolicy(name, version);
565 public ApexApiResult deletePolicy(final String name, final String version) {
566 return policyFacade.deletePolicy(name, version);
573 public ApexApiResult validatePolicy(final String name, final String version) {
574 return policyFacade.validatePolicy(name, version);
581 public ApexApiResult createPolicyState(final String name, final String version, final String stateName,
582 final String triggerName, final String triggerVersion, final String defaultTaskName,
583 final String defaltTaskVersion) {
584 return policyFacade.createPolicyState(name, version, stateName, triggerName, triggerVersion, defaultTaskName,
592 public ApexApiResult updatePolicyState(final String name, final String version, final String stateName,
593 final String triggerName, final String triggerVersion, final String defaultTaskName,
594 final String defaltTaskVersion) {
595 return policyFacade.updatePolicyState(name, version, stateName, triggerName, triggerVersion, defaultTaskName,
603 public ApexApiResult listPolicyState(final String name, final String version, final String stateName) {
604 return policyFacade.listPolicyState(name, version, stateName);
611 public ApexApiResult deletePolicyState(final String name, final String version, final String stateName) {
612 return policyFacade.deletePolicyState(name, version, stateName);
619 public ApexApiResult createPolicyStateTaskSelectionLogic(final String name, final String version,
620 final String stateName, final String logicFlavour, final String logic) {
621 return policyFacade.createPolicyStateTaskSelectionLogic(name, version, stateName, logicFlavour, logic);
628 public ApexApiResult updatePolicyStateTaskSelectionLogic(final String name, final String version,
629 final String stateName, final String logicFlavour, final String logic) {
630 return policyFacade.updatePolicyStateTaskSelectionLogic(name, version, stateName, logicFlavour, logic);
637 public ApexApiResult listPolicyStateTaskSelectionLogic(final String name, final String version,
638 final String stateName) {
639 return policyFacade.listPolicyStateTaskSelectionLogic(name, version, stateName);
646 public ApexApiResult deletePolicyStateTaskSelectionLogic(final String name, final String version,
647 final String stateName) {
648 return policyFacade.deletePolicyStateTaskSelectionLogic(name, version, stateName);
655 public ApexApiResult createPolicyStateOutput(final String name, final String version, final String stateName,
656 final String outputName, final String eventName, final String eventVersion, final String nextState) {
657 return policyFacade.createPolicyStateOutput(name, version, stateName, outputName, eventName, eventVersion,
665 public ApexApiResult listPolicyStateOutput(final String name, final String version, final String stateName,
666 final String outputName) {
667 return policyFacade.listPolicyStateOutput(name, version, stateName, outputName);
674 public ApexApiResult deletePolicyStateOutput(final String name, final String version, final String stateName,
675 final String outputName) {
676 return policyFacade.deletePolicyStateOutput(name, version, stateName, outputName);
683 public ApexApiResult createPolicyStateFinalizerLogic(final String name, final String version,
684 final String stateName, final String finalizerLogicName, final String logicFlavour, final String logic) {
685 return policyFacade.createPolicyStateFinalizerLogic(name, version, stateName, finalizerLogicName, logicFlavour,
693 public ApexApiResult updatePolicyStateFinalizerLogic(final String name, final String version,
694 final String stateName, final String finalizerLogicName, final String logicFlavour, final String logic) {
695 return policyFacade.updatePolicyStateFinalizerLogic(name, version, stateName, finalizerLogicName, logicFlavour,
703 public ApexApiResult listPolicyStateFinalizerLogic(final String name, final String version, final String stateName,
704 final String finalizerLogicName) {
705 return policyFacade.listPolicyStateFinalizerLogic(name, version, stateName, finalizerLogicName);
712 public ApexApiResult deletePolicyStateFinalizerLogic(final String name, final String version,
713 final String stateName, final String finalizerLogicName) {
714 return policyFacade.deletePolicyStateFinalizerLogic(name, version, stateName, finalizerLogicName);
721 // CHECKSTYLE:OFF: checkstyle:parameterNumber
722 public ApexApiResult createPolicyStateTaskRef(final String name, final String version, final String stateName,
723 final String taskLocalName, final String taskName, final String taskVersion, final String outputType,
724 final String outputName) {
725 return policyFacade.createPolicyStateTaskRef(new CreatePolicyStateTaskRefBuilder().setName(name)
726 .setVersion(version).setStateName(stateName).setTaskLocalName(taskLocalName).setTaskName(taskName)
727 .setTaskVersion(taskVersion).setOutputType(outputType).setOutputName(outputName));
729 // CHECKSTYLE:ON: checkstyle:parameterNumber
735 public ApexApiResult listPolicyStateTaskRef(final String name, final String version, final String stateName,
736 final String taskName, final String taskVersion) {
737 return policyFacade.listPolicyStateTaskRef(name, version, stateName, taskName, taskVersion);
744 public ApexApiResult deletePolicyStateTaskRef(final String name, final String version, final String stateName,
745 final String taskName, final String taskVersion) {
746 return policyFacade.deletePolicyStateTaskRef(name, version, stateName, taskName, taskVersion);
753 public ApexApiResult createPolicyStateContextRef(final String name, final String version, final String stateName,
754 final String contextAlbumName, final String contextAlbumVersion) {
755 return policyFacade.createPolicyStateContextRef(name, version, stateName, contextAlbumName,
756 contextAlbumVersion);
763 public ApexApiResult listPolicyStateContextRef(final String name, final String version, final String stateName,
764 final String contextAlbumName, final String contextAlbumVersion) {
765 return policyFacade.listPolicyStateContextRef(name, version, stateName, contextAlbumName, contextAlbumVersion);
772 public ApexApiResult deletePolicyStateContextRef(final String name, final String version, final String stateName,
773 final String contextAlbumName, final String contextAlbumVersion) {
774 return policyFacade.deletePolicyStateContextRef(name, version, stateName, contextAlbumName,
775 contextAlbumVersion);
782 public ApexApiResult loadFromString(final String modelString) {
783 return modelHandlerFacade.loadFromString(modelString);
790 // CHECKSTYLE:OFF: checkstyle:HiddenField
791 public ApexApiResult loadFromFile(final String fileName) {
792 this.fileName = fileName;
793 return modelHandlerFacade.loadFromFile(fileName);
795 // CHECKSTYLE:ON: checkstyle:HiddenField
801 public ApexApiResult saveToFile(final String saveFileName, final boolean xmlFlag) {
802 if (saveFileName == null) {
803 return modelHandlerFacade.saveToFile(fileName, xmlFlag);
805 return modelHandlerFacade.saveToFile(saveFileName, xmlFlag);
813 public ApexApiResult loadFromDatabase(final String modelName, final String modelVersion,
814 final DaoParameters daoParameters) {
815 return modelHandlerFacade.loadFromDatabase(modelName, modelVersion, daoParameters);
822 public ApexApiResult saveToDatabase(final DaoParameters daoParameters) {
823 return modelHandlerFacade.saveToDatabase(daoParameters);
830 public ApexApiResult readFromUrl(final String urlString) {
831 return modelHandlerFacade.readFromUrl(urlString);
838 public ApexApiResult writeToUrl(final String urlString, final boolean xmlFlag) {
839 return modelHandlerFacade.writeToUrl(urlString, xmlFlag);
846 public ApexApiResult analyse() {
847 return modelHandlerFacade.analyse();
854 public ApexApiResult validate() {
855 return modelHandlerFacade.validate();
862 public ApexApiResult compare(final String otherModelFileName, final boolean diffsOnly, final boolean keysOnly) {
863 return modelHandlerFacade.compare(otherModelFileName, diffsOnly, keysOnly);
870 public ApexApiResult compareWithString(final String otherModelString, final boolean diffsOnly,
871 final boolean keysOnly) {
872 return modelHandlerFacade.compareWithString(otherModelString, diffsOnly, keysOnly);
879 public ApexApiResult split(final String targetModelFileName, final String splitOutPolicies) {
880 return modelHandlerFacade.split(targetModelFileName, splitOutPolicies);
887 public ApexApiResult split(final String splitOutPolicies) {
888 return modelHandlerFacade.split(splitOutPolicies);
895 public ApexApiResult merge(final String mergeInModelFileName, final boolean keepOriginal) {
896 return modelHandlerFacade.merge(mergeInModelFileName, keepOriginal);
903 public ApexApiResult mergeWithString(final String otherModelString, final boolean keepOriginal) {
904 return modelHandlerFacade.mergeWithString(otherModelString, keepOriginal);
911 public AxPolicyModel getPolicyModel() {
919 public void setPolicyModel(final AxPolicyModel policyModel) {
920 this.policyModel = policyModel;
927 public AxPolicyModel build() {