From cc5b96bfd33cd7d91fe6994d348e8d6a0ebb54fa Mon Sep 17 00:00:00 2001 From: liamfallon Date: Fri, 29 Mar 2019 10:31:22 +0000 Subject: Restructure for authorative models Use authorative models instead of the JPA stored models as the venacular models in the Policy Framework. The next step is to pass the authorative objects over the provider interface rather than the JPA obejcts. This change will be made in the next review. Minor changes to pdp objects to remove JPA things from them. These object will be the authorative in-memory obejcts on the PDP side and new JPA entity object will be introduced in a future review to persist them. Issue-ID: POLICY-1095 Change-Id: I40e7b713903980cb41bb315417111b67a9b17307 Signed-off-by: liamfallon --- .../authorative/concepts/PlainToscaConstraint.java | 41 --- .../authorative/concepts/PlainToscaDataType.java | 47 --- .../concepts/PlainToscaEntrySchema.java | 41 --- .../authorative/concepts/PlainToscaPolicy.java | 45 --- .../authorative/concepts/PlainToscaPolicyType.java | 47 --- .../authorative/concepts/PlainToscaProperty.java | 50 --- .../concepts/PlainToscaServiceTemplate.java | 49 --- .../concepts/PlainToscaTopologyTemplate.java | 40 --- .../authorative/concepts/ToscaConstraint.java | 41 +++ .../tosca/authorative/concepts/ToscaDataType.java | 47 +++ .../authorative/concepts/ToscaEntrySchema.java | 41 +++ .../tosca/authorative/concepts/ToscaPolicy.java | 62 ++++ .../authorative/concepts/ToscaPolicyType.java | 47 +++ .../tosca/authorative/concepts/ToscaProperty.java | 50 +++ .../authorative/concepts/ToscaServiceTemplate.java | 49 +++ .../concepts/ToscaTopologyTemplate.java | 40 +++ .../mapping/PlainToscaServiceTemplateMapper.java | 16 +- .../legacy/mapping/LegacyGuardPolicyMapper.java | 28 +- .../mapping/LegacyOperationalPolicyMapper.java | 26 +- .../tosca/legacy/provider/LegacyProvider.java | 80 ++--- .../tosca/simple/concepts/JpaToscaConstraint.java | 125 ++++++++ .../simple/concepts/JpaToscaConstraintLogical.java | 119 ++++++++ .../concepts/JpaToscaConstraintLogicalKey.java | 155 ++++++++++ .../concepts/JpaToscaConstraintLogicalString.java | 137 +++++++++ .../concepts/JpaToscaConstraintValidValues.java | 121 ++++++++ .../tosca/simple/concepts/JpaToscaDataType.java | 246 +++++++++++++++ .../tosca/simple/concepts/JpaToscaDataTypes.java | 89 ++++++ .../tosca/simple/concepts/JpaToscaEntityType.java | 218 ++++++++++++++ .../tosca/simple/concepts/JpaToscaEntrySchema.java | 228 ++++++++++++++ .../tosca/simple/concepts/JpaToscaEventFilter.java | 197 ++++++++++++ .../tosca/simple/concepts/JpaToscaModel.java | 160 ++++++++++ .../tosca/simple/concepts/JpaToscaPolicies.java | 89 ++++++ .../tosca/simple/concepts/JpaToscaPolicy.java | 271 +++++++++++++++++ .../tosca/simple/concepts/JpaToscaPolicyType.java | 294 ++++++++++++++++++ .../tosca/simple/concepts/JpaToscaPolicyTypes.java | 89 ++++++ .../tosca/simple/concepts/JpaToscaProperty.java | 304 +++++++++++++++++++ .../simple/concepts/JpaToscaServiceTemplate.java | 225 ++++++++++++++ .../simple/concepts/JpaToscaServiceTemplates.java | 87 ++++++ .../simple/concepts/JpaToscaTimeInterval.java | 188 ++++++++++++ .../simple/concepts/JpaToscaTopologyTemplate.java | 181 +++++++++++ .../tosca/simple/concepts/JpaToscaTrigger.java | 335 +++++++++++++++++++++ .../tosca/simple/concepts/ToscaConstraint.java | 125 -------- .../simple/concepts/ToscaConstraintLogical.java | 119 -------- .../simple/concepts/ToscaConstraintLogicalKey.java | 155 ---------- .../concepts/ToscaConstraintLogicalString.java | 137 --------- .../concepts/ToscaConstraintValidValues.java | 121 -------- .../tosca/simple/concepts/ToscaDataType.java | 246 --------------- .../tosca/simple/concepts/ToscaDataTypes.java | 89 ------ .../tosca/simple/concepts/ToscaEntityType.java | 218 -------------- .../tosca/simple/concepts/ToscaEntrySchema.java | 228 -------------- .../tosca/simple/concepts/ToscaEventFilter.java | 197 ------------ .../models/tosca/simple/concepts/ToscaModel.java | 160 ---------- .../tosca/simple/concepts/ToscaPolicies.java | 89 ------ .../models/tosca/simple/concepts/ToscaPolicy.java | 271 ----------------- .../tosca/simple/concepts/ToscaPolicyType.java | 294 ------------------ .../tosca/simple/concepts/ToscaPolicyTypes.java | 89 ------ .../tosca/simple/concepts/ToscaProperty.java | 304 ------------------- .../simple/concepts/ToscaServiceTemplate.java | 225 -------------- .../simple/concepts/ToscaServiceTemplates.java | 86 ------ .../tosca/simple/concepts/ToscaTimeInterval.java | 188 ------------ .../simple/concepts/ToscaTopologyTemplate.java | 181 ----------- .../models/tosca/simple/concepts/ToscaTrigger.java | 335 --------------------- .../mapping/JpaToscaServiceTemplateMapper.java | 49 +++ .../simple/mapping/ToscaServiceTemplateMapper.java | 49 --- .../tosca/simple/provider/SimpleToscaProvider.java | 87 +++--- .../serialization/ToscaDataTypeJsonAdapter.java | 14 +- .../serialization/ToscaDataTypesJsonAdapter.java | 21 +- .../serialization/ToscaPoliciesJsonAdapter.java | 18 +- .../serialization/ToscaPolicyJsonAdapter.java | 10 +- .../serialization/ToscaPolicyTypeJsonAdapter.java | 29 +- .../serialization/ToscaPolicyTypesJsonAdapter.java | 20 +- .../serialization/ToscaPropertiesJsonAdapter.java | 52 ++-- .../ToscaServiceTemplateJsonAdapter.java | 24 +- .../ToscaServiceTemplateMessageBodyHandler.java | 32 +- .../ToscaTopologyTemplateJsonAdapter.java | 14 +- .../onap/policy/models/tosca/utils/ToscaUtils.java | 6 +- 76 files changed, 4525 insertions(+), 4502 deletions(-) delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaConstraint.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaDataType.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaEntrySchema.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaPolicy.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaPolicyType.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaProperty.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaServiceTemplate.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaTopologyTemplate.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaDataType.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntrySchema.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaTopologyTemplate.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraint.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKey.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalString.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypes.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchema.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEventFilter.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaModel.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicies.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicy.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypes.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplates.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTimeInterval.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTopologyTemplate.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraint.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogical.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogicalKey.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogicalString.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintValidValues.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaDataType.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaDataTypes.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEntityType.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEntrySchema.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEventFilter.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaModel.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicies.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicy.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyType.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyTypes.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaProperty.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaServiceTemplate.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaServiceTemplates.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTimeInterval.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTopologyTemplate.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTrigger.java create mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/mapping/JpaToscaServiceTemplateMapper.java delete mode 100644 models-tosca/src/main/java/org/onap/policy/models/tosca/simple/mapping/ToscaServiceTemplateMapper.java (limited to 'models-tosca/src/main/java/org') diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaConstraint.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaConstraint.java deleted file mode 100644 index 85d0b5009..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaConstraint.java +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import com.google.gson.annotations.SerializedName; -import java.util.List; -import lombok.Data; - -/** - * Class to represent TOSCA constraint matching input/output from/to client. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@Data -public class PlainToscaConstraint { - - @SerializedName("valid_values") - private List validValues; - - private String equal; -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaDataType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaDataType.java deleted file mode 100644 index 0581a7da1..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaDataType.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import com.google.gson.annotations.SerializedName; -import java.util.Map; -import lombok.Data; - -/** - * Class to represent TOSCA data type matching input/output from/to client. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@Data -public class PlainToscaDataType { - - @SerializedName("derived_from") - private String derivedFrom; - - private String version; - - private Map metadata; - - private String description; - - private Map properties; -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaEntrySchema.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaEntrySchema.java deleted file mode 100644 index ab9051aa9..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaEntrySchema.java +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import java.util.List; -import lombok.Data; - -/** - * Class to represent TOSCA entry schema matching input/output from/to client. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@Data -public class PlainToscaEntrySchema { - - private String type; - - private String description; - - private List constraints; -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaPolicy.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaPolicy.java deleted file mode 100644 index 02ebe6537..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaPolicy.java +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import java.util.Map; -import lombok.Data; - -/** - * Class to represent TOSCA policy matching input/output from/to client. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@Data -public class PlainToscaPolicy { - - private String type; - - private String version; - - private String description; - - private Map metadata; - - private Map properties; -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaPolicyType.java deleted file mode 100644 index 499e2dd25..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaPolicyType.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import com.google.gson.annotations.SerializedName; -import java.util.Map; -import lombok.Data; - -/** - * Class to represent TOSCA policy type matching input/output from/to client. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@Data -public class PlainToscaPolicyType { - - @SerializedName("derived_from") - private String derivedFrom; - - private String version; - - private Map metadata; - - private String description; - - private Map properties; -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaProperty.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaProperty.java deleted file mode 100644 index e5e282a95..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaProperty.java +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import com.google.gson.annotations.SerializedName; -import java.util.List; -import lombok.Data; - -/** - * Class to represent TOSCA property matching input/output from/to client. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@Data -public class PlainToscaProperty { - - private String type; - - private String description; - - private boolean required = false; - - @SerializedName("default") - private String defaultValue; - - @SerializedName("entry_schema") - private PlainToscaEntrySchema entrySchema; - - private List constraints; -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaServiceTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaServiceTemplate.java deleted file mode 100644 index cf5e2d9d6..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaServiceTemplate.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import com.google.gson.annotations.SerializedName; -import java.util.List; -import java.util.Map; -import lombok.Data; - -/** - * Class to represent TOSCA service template matching input/output from/to client. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@Data -public class PlainToscaServiceTemplate { - - @SerializedName("tosca_definitions_version") - private String toscaDefinitionsVersion; - - @SerializedName("topology_template") - private PlainToscaTopologyTemplate toscaTopologyTemplate; - - @SerializedName("policy_types") - private List> policyTypes; - - @SerializedName("data_types") - private List> dataTypes; -} \ No newline at end of file diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaTopologyTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaTopologyTemplate.java deleted file mode 100644 index 16c1da05e..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/PlainToscaTopologyTemplate.java +++ /dev/null @@ -1,40 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import java.util.List; -import java.util.Map; -import lombok.Data; - -/** - * Class to represent TOSCA topology template matching input/output from/to client. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@Data -public class PlainToscaTopologyTemplate { - - private String description; - - private List> policies; -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java new file mode 100644 index 000000000..13b4adf23 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import com.google.gson.annotations.SerializedName; +import java.util.List; +import lombok.Data; + +/** + * Class to represent TOSCA constraint matching input/output from/to client. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@Data +public class ToscaConstraint { + + @SerializedName("valid_values") + private List validValues; + + private String equal; +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaDataType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaDataType.java new file mode 100644 index 000000000..9aae32040 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaDataType.java @@ -0,0 +1,47 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import com.google.gson.annotations.SerializedName; +import java.util.Map; +import lombok.Data; + +/** + * Class to represent TOSCA data type matching input/output from/to client. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@Data +public class ToscaDataType { + + @SerializedName("derived_from") + private String derivedFrom; + + private String version; + + private Map metadata; + + private String description; + + private Map properties; +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntrySchema.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntrySchema.java new file mode 100644 index 000000000..a3526f757 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntrySchema.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import java.util.List; +import lombok.Data; + +/** + * Class to represent TOSCA entry schema matching input/output from/to client. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@Data +public class ToscaEntrySchema { + + private String type; + + private String description; + + private List constraints; +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java new file mode 100644 index 000000000..e8616061d --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java @@ -0,0 +1,62 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import java.util.LinkedHashMap; +import java.util.Map; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +/** + * Class to represent TOSCA policy matching input/output from/to client. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@Data +@NoArgsConstructor +public class ToscaPolicy { + + private String type; + + private String version; + + private String description; + + private Map metadata; + + private Map properties; + + /** + * Copy constructor. + * + * @param copyObject the obejct to copy from. + */ + public ToscaPolicy(@NonNull ToscaPolicy copyObject) { + this.type = copyObject.type; + this.version = copyObject.version; + this.description = copyObject.description; + this.metadata = (metadata != null ? new LinkedHashMap<>(copyObject.metadata) : null); + this.properties = (properties != null ? new LinkedHashMap<>(copyObject.properties) : null); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java new file mode 100644 index 000000000..c46402ba1 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java @@ -0,0 +1,47 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import com.google.gson.annotations.SerializedName; +import java.util.Map; +import lombok.Data; + +/** + * Class to represent TOSCA policy type matching input/output from/to client. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@Data +public class ToscaPolicyType { + + @SerializedName("derived_from") + private String derivedFrom; + + private String version; + + private Map metadata; + + private String description; + + private Map properties; +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java new file mode 100644 index 000000000..9eda83b90 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java @@ -0,0 +1,50 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import com.google.gson.annotations.SerializedName; +import java.util.List; +import lombok.Data; + +/** + * Class to represent TOSCA property matching input/output from/to client. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@Data +public class ToscaProperty { + + private String type; + + private String description; + + private boolean required = false; + + @SerializedName("default") + private String defaultValue; + + @SerializedName("entry_schema") + private ToscaEntrySchema entrySchema; + + private List constraints; +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java new file mode 100644 index 000000000..3d1b96313 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import com.google.gson.annotations.SerializedName; +import java.util.List; +import java.util.Map; +import lombok.Data; + +/** + * Class to represent TOSCA service template matching input/output from/to client. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@Data +public class ToscaServiceTemplate { + + @SerializedName("tosca_definitions_version") + private String toscaDefinitionsVersion; + + @SerializedName("topology_template") + private ToscaTopologyTemplate toscaTopologyTemplate; + + @SerializedName("policy_types") + private List> policyTypes; + + @SerializedName("data_types") + private List> dataTypes; +} \ No newline at end of file diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaTopologyTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaTopologyTemplate.java new file mode 100644 index 000000000..ebb53e177 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaTopologyTemplate.java @@ -0,0 +1,40 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import java.util.List; +import java.util.Map; +import lombok.Data; + +/** + * Class to represent TOSCA topology template matching input/output from/to client. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@Data +public class ToscaTopologyTemplate { + + private String description; + + private List> policies; +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapper.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapper.java index aa7ca23b2..cef83486d 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapper.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapper.java @@ -23,9 +23,9 @@ package org.onap.policy.models.tosca.authorative.mapping; import com.google.gson.Gson; -import org.onap.policy.models.tosca.authorative.concepts.PlainToscaServiceTemplate; -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.simple.mapping.ToscaServiceTemplateMapper; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.mapping.JpaToscaServiceTemplateMapper; import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler; /** @@ -34,23 +34,23 @@ import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMes * @author Chenfei Gao (cgao@research.att.com) */ public class PlainToscaServiceTemplateMapper - implements ToscaServiceTemplateMapper { + implements JpaToscaServiceTemplateMapper { private Gson defaultGson = new Gson(); private Gson customGson = new ToscaServiceTemplateMessageBodyHandler().getGson(); @Override - public ToscaServiceTemplate toToscaServiceTemplate(PlainToscaServiceTemplate otherPolicy) { + public JpaToscaServiceTemplate toToscaServiceTemplate(ToscaServiceTemplate otherPolicy) { String serializedServiceTemplate = defaultGson.toJson(otherPolicy); - return customGson.fromJson(serializedServiceTemplate, ToscaServiceTemplate.class); + return customGson.fromJson(serializedServiceTemplate, JpaToscaServiceTemplate.class); } @Override - public PlainToscaServiceTemplate fromToscaServiceTemplate(ToscaServiceTemplate serviceTemplate) { + public ToscaServiceTemplate fromToscaServiceTemplate(JpaToscaServiceTemplate serviceTemplate) { String serializedServiceTemplate = customGson.toJson(serviceTemplate); - return defaultGson.fromJson(serializedServiceTemplate, PlainToscaServiceTemplate.class); + return defaultGson.fromJson(serializedServiceTemplate, ToscaServiceTemplate.class); } } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/mapping/LegacyGuardPolicyMapper.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/mapping/LegacyGuardPolicyMapper.java index 141b4e783..cc37338e4 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/mapping/LegacyGuardPolicyMapper.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/mapping/LegacyGuardPolicyMapper.java @@ -30,11 +30,11 @@ import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyContent; import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput; import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicies; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; -import org.onap.policy.models.tosca.simple.mapping.ToscaServiceTemplateMapper; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate; +import org.onap.policy.models.tosca.simple.mapping.JpaToscaServiceTemplateMapper; import org.onap.policy.models.tosca.utils.ToscaUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory; * @author Liam Fallon (liam.fallon@est.tech) */ public class LegacyGuardPolicyMapper - implements ToscaServiceTemplateMapper> { + implements JpaToscaServiceTemplateMapper> { private static final Logger LOGGER = LoggerFactory.getLogger(LegacyGuardPolicyMapper.class); private static final Map GUARD_POLICY_TYPE_MAP = new LinkedHashMap<>(); @@ -62,7 +62,7 @@ public class LegacyGuardPolicyMapper } @Override - public ToscaServiceTemplate toToscaServiceTemplate(final LegacyGuardPolicyInput legacyGuardPolicyInput) { + public JpaToscaServiceTemplate toToscaServiceTemplate(final LegacyGuardPolicyInput legacyGuardPolicyInput) { PfConceptKey guardPolicyType = GUARD_POLICY_TYPE_MAP.get(legacyGuardPolicyInput.getPolicyId()); if (guardPolicyType == null) { String errorMessage = @@ -80,28 +80,30 @@ public class LegacyGuardPolicyMapper PfConceptKey policyKey = new PfConceptKey(legacyGuardPolicyInput.getPolicyId(), version); - final ToscaPolicy toscaPolicy = new ToscaPolicy(policyKey); + final JpaToscaPolicy toscaPolicy = new JpaToscaPolicy(policyKey); toscaPolicy.setType(guardPolicyType); toscaPolicy.setProperties(legacyGuardPolicyInput.getContent().getAsPropertyMap()); - final ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); + final JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); serviceTemplate.setToscaDefinitionsVersion("tosca_simimport java.util.HashMap;\n" + "ple_yaml_1_0"); - serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplate()); + serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate()); - serviceTemplate.getTopologyTemplate().setPolicies(new ToscaPolicies()); + serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(policyKey, toscaPolicy); return serviceTemplate; } @Override - public Map fromToscaServiceTemplate(final ToscaServiceTemplate serviceTemplate) { + public Map fromToscaServiceTemplate( + final JpaToscaServiceTemplate serviceTemplate) { ToscaUtils.assertPoliciesExist(serviceTemplate); final Map legacyGuardPolicyOutputMap = new LinkedHashMap<>(); - for (ToscaPolicy toscaPolicy : serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().values()) { + for (JpaToscaPolicy toscaPolicy : serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap() + .values()) { final LegacyGuardPolicyOutput legacyGuardPolicyOutput = new LegacyGuardPolicyOutput(); legacyGuardPolicyOutput.setType(toscaPolicy.getType().getName()); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapper.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapper.java index 65f477572..4ddcd60cc 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapper.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/mapping/LegacyOperationalPolicyMapper.java @@ -28,11 +28,11 @@ import javax.ws.rs.core.Response; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicies; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; -import org.onap.policy.models.tosca.simple.mapping.ToscaServiceTemplateMapper; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate; +import org.onap.policy.models.tosca.simple.mapping.JpaToscaServiceTemplateMapper; import org.onap.policy.models.tosca.utils.ToscaUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,14 +43,14 @@ import org.slf4j.LoggerFactory; * @author Liam Fallon (liam.fallon@est.tech) */ public class LegacyOperationalPolicyMapper - implements ToscaServiceTemplateMapper { + implements JpaToscaServiceTemplateMapper { private static final Logger LOGGER = LoggerFactory.getLogger(LegacyOperationalPolicyMapper.class); private static final PfConceptKey LEGACY_OPERATIONAL_TYPE = new PfConceptKey("onap.policies.controlloop.Operational", "1.0.0"); @Override - public ToscaServiceTemplate toToscaServiceTemplate(final LegacyOperationalPolicy legacyOperationalPolicy) { + public JpaToscaServiceTemplate toToscaServiceTemplate(final LegacyOperationalPolicy legacyOperationalPolicy) { String incomingVersion = legacyOperationalPolicy.getPolicyVersion(); if (incomingVersion == null) { incomingVersion = "1"; @@ -58,7 +58,7 @@ public class LegacyOperationalPolicyMapper PfConceptKey policyKey = new PfConceptKey(legacyOperationalPolicy.getPolicyId(), incomingVersion + ".0.0"); - final ToscaPolicy toscaPolicy = new ToscaPolicy(policyKey); + final JpaToscaPolicy toscaPolicy = new JpaToscaPolicy(policyKey); toscaPolicy.setType(LEGACY_OPERATIONAL_TYPE); @@ -66,19 +66,19 @@ public class LegacyOperationalPolicyMapper toscaPolicy.setProperties(propertyMap); toscaPolicy.getProperties().put("Content", legacyOperationalPolicy.getContent()); - final ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); + final JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); serviceTemplate.setToscaDefinitionsVersion("tosca_simple_yaml_1_0"); - serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplate()); + serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate()); - serviceTemplate.getTopologyTemplate().setPolicies(new ToscaPolicies()); + serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(policyKey, toscaPolicy); return serviceTemplate; } @Override - public LegacyOperationalPolicy fromToscaServiceTemplate(final ToscaServiceTemplate serviceTemplate) { + public LegacyOperationalPolicy fromToscaServiceTemplate(final JpaToscaServiceTemplate serviceTemplate) { ToscaUtils.assertPoliciesExist(serviceTemplate); if (serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().size() > 1) { @@ -88,7 +88,7 @@ public class LegacyOperationalPolicyMapper } // Get the policy - final ToscaPolicy toscaPolicy = + final JpaToscaPolicy toscaPolicy = serviceTemplate.getTopologyTemplate().getPolicies().getAll(null).iterator().next(); final LegacyOperationalPolicy legacyOperationalPolicy = new LegacyOperationalPolicy(); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider.java index 04a010f08..a394cec3e 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/provider/LegacyProvider.java @@ -36,10 +36,10 @@ import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput; import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy; import org.onap.policy.models.tosca.legacy.mapping.LegacyGuardPolicyMapper; import org.onap.policy.models.tosca.legacy.mapping.LegacyOperationalPolicyMapper; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicies; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate; import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -68,7 +68,7 @@ public class LegacyProvider { public LegacyOperationalPolicy getOperationalPolicy(@NonNull final PfDao dao, @NonNull final String policyId) throws PfModelException { - ToscaPolicy newestPolicy = getLatestPolicy(dao, policyId); + JpaToscaPolicy newestPolicy = getLatestPolicy(dao, policyId); if (newestPolicy == null) { String errorMessage = NO_POLICY_FOUND_FOR_POLICY_ID + policyId; @@ -77,9 +77,9 @@ public class LegacyProvider { } // Create the structure of the TOSCA service template to contain the policy type - ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplate()); - serviceTemplate.getTopologyTemplate().setPolicies(new ToscaPolicies()); + JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); + serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate()); + serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(newestPolicy.getKey(), newestPolicy); return new LegacyOperationalPolicyMapper().fromToscaServiceTemplate(serviceTemplate); @@ -98,7 +98,7 @@ public class LegacyProvider { // We need to find the latest policy and update the major version, if there is no policy with this ID, then // we set it to the first version - ToscaPolicy newestPolicy = getLatestPolicy(dao, legacyOperationalPolicy.getPolicyId()); + JpaToscaPolicy newestPolicy = getLatestPolicy(dao, legacyOperationalPolicy.getPolicyId()); if (newestPolicy == null) { legacyOperationalPolicy.setPolicyVersion(FIRST_POLICY_VERSION); @@ -106,9 +106,9 @@ public class LegacyProvider { legacyOperationalPolicy.setPolicyVersion(Integer.toString(newestPolicy.getKey().getMajorVersion() + 1)); } - ToscaServiceTemplate incomingServiceTemplate = + JpaToscaServiceTemplate incomingServiceTemplate = new LegacyOperationalPolicyMapper().toToscaServiceTemplate(legacyOperationalPolicy); - ToscaServiceTemplate outgoingingServiceTemplate = + JpaToscaServiceTemplate outgoingingServiceTemplate = new SimpleToscaProvider().createPolicies(dao, incomingServiceTemplate); return new LegacyOperationalPolicyMapper().fromToscaServiceTemplate(outgoingingServiceTemplate); @@ -127,7 +127,7 @@ public class LegacyProvider { // We need to find the latest policy and use the major version, if there is no policy with this ID, then // we have an error - ToscaPolicy newestPolicy = getLatestPolicy(dao, legacyOperationalPolicy.getPolicyId()); + JpaToscaPolicy newestPolicy = getLatestPolicy(dao, legacyOperationalPolicy.getPolicyId()); if (newestPolicy == null) { String errorMessage = NO_POLICY_FOUND_FOR_POLICY_ID + legacyOperationalPolicy.getPolicyId(); @@ -137,9 +137,9 @@ public class LegacyProvider { legacyOperationalPolicy.setPolicyVersion(Integer.toString(newestPolicy.getKey().getMajorVersion())); } - ToscaServiceTemplate incomingServiceTemplate = + JpaToscaServiceTemplate incomingServiceTemplate = new LegacyOperationalPolicyMapper().toToscaServiceTemplate(legacyOperationalPolicy); - ToscaServiceTemplate outgoingingServiceTemplate = + JpaToscaServiceTemplate outgoingingServiceTemplate = new SimpleToscaProvider().createPolicies(dao, incomingServiceTemplate); return new LegacyOperationalPolicyMapper().fromToscaServiceTemplate(outgoingingServiceTemplate); @@ -157,12 +157,12 @@ public class LegacyProvider { throws PfModelException { // Get all the policies in the database and check the policy ID against the policies returned - List policyList = dao.getAll(ToscaPolicy.class); + List policyList = dao.getAll(JpaToscaPolicy.class); // Find the latest policy that matches the ID - List policyDeleteList = new ArrayList<>(); + List policyDeleteList = new ArrayList<>(); - for (ToscaPolicy policy : policyList) { + for (JpaToscaPolicy policy : policyList) { if (policyId.equals(policy.getKey().getName())) { policyDeleteList.add(policy); } @@ -175,11 +175,11 @@ public class LegacyProvider { } // Create the structure of the TOSCA service template to contain the policy type - ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplate()); - serviceTemplate.getTopologyTemplate().setPolicies(new ToscaPolicies()); + JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); + serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate()); + serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); - for (ToscaPolicy deletePolicy : policyDeleteList) { + for (JpaToscaPolicy deletePolicy : policyDeleteList) { dao.delete(deletePolicy); serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(deletePolicy.getKey(), deletePolicy); @@ -199,7 +199,7 @@ public class LegacyProvider { public Map getGuardPolicy(@NonNull final PfDao dao, @NonNull final String policyId) throws PfModelException { - ToscaPolicy newestPolicy = getLatestPolicy(dao, policyId); + JpaToscaPolicy newestPolicy = getLatestPolicy(dao, policyId); if (newestPolicy == null) { String errorMessage = NO_POLICY_FOUND_FOR_POLICY_ID + policyId; @@ -208,9 +208,9 @@ public class LegacyProvider { } // Create the structure of the TOSCA service template to contain the policy type - ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplate()); - serviceTemplate.getTopologyTemplate().setPolicies(new ToscaPolicies()); + JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); + serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate()); + serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(newestPolicy.getKey(), newestPolicy); return new LegacyGuardPolicyMapper().fromToscaServiceTemplate(serviceTemplate); @@ -227,9 +227,9 @@ public class LegacyProvider { public Map createGuardPolicy(@NonNull final PfDao dao, @NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException { - ToscaServiceTemplate incomingServiceTemplate = + JpaToscaServiceTemplate incomingServiceTemplate = new LegacyGuardPolicyMapper().toToscaServiceTemplate(legacyGuardPolicy); - ToscaServiceTemplate outgoingingServiceTemplate = + JpaToscaServiceTemplate outgoingingServiceTemplate = new SimpleToscaProvider().createPolicies(dao, incomingServiceTemplate); return new LegacyGuardPolicyMapper().fromToscaServiceTemplate(outgoingingServiceTemplate); @@ -246,9 +246,9 @@ public class LegacyProvider { public Map updateGuardPolicy(@NonNull final PfDao dao, @NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException { - ToscaServiceTemplate incomingServiceTemplate = + JpaToscaServiceTemplate incomingServiceTemplate = new LegacyGuardPolicyMapper().toToscaServiceTemplate(legacyGuardPolicy); - ToscaServiceTemplate outgoingingServiceTemplate = + JpaToscaServiceTemplate outgoingingServiceTemplate = new SimpleToscaProvider().createPolicies(dao, incomingServiceTemplate); return new LegacyGuardPolicyMapper().fromToscaServiceTemplate(outgoingingServiceTemplate); @@ -267,12 +267,12 @@ public class LegacyProvider { @NonNull final String policyId) throws PfModelException { // Get all the policies in the database and check the policy ID against the policies returned - List policyList = dao.getAll(ToscaPolicy.class); + List policyList = dao.getAll(JpaToscaPolicy.class); // Find the latest policy that matches the ID - List policyDeleteList = new ArrayList<>(); + List policyDeleteList = new ArrayList<>(); - for (ToscaPolicy policy : policyList) { + for (JpaToscaPolicy policy : policyList) { if (policyId.equals(policy.getKey().getName())) { policyDeleteList.add(policy); } @@ -285,11 +285,11 @@ public class LegacyProvider { } // Create the structure of the TOSCA service template to contain the policy type - ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplate()); - serviceTemplate.getTopologyTemplate().setPolicies(new ToscaPolicies()); + JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); + serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate()); + serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); - for (ToscaPolicy deletePolicy : policyDeleteList) { + for (JpaToscaPolicy deletePolicy : policyDeleteList) { dao.delete(deletePolicy); serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(deletePolicy.getKey(), deletePolicy); @@ -305,14 +305,14 @@ public class LegacyProvider { * @param policyId the ID of the policy * @return the policy */ - private ToscaPolicy getLatestPolicy(final PfDao dao, final String policyId) { + private JpaToscaPolicy getLatestPolicy(final PfDao dao, final String policyId) { // Get all the policies in the database and check the policy ID against the policies returned - List policyList = dao.getAll(ToscaPolicy.class); + List policyList = dao.getAll(JpaToscaPolicy.class); // Find the latest policy that matches the ID - ToscaPolicy newestPolicy = null; + JpaToscaPolicy newestPolicy = null; - for (ToscaPolicy policy : policyList) { + for (JpaToscaPolicy policy : policyList) { if (!policyId.equals(policy.getKey().getName())) { continue; } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraint.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraint.java new file mode 100644 index 000000000..bde53c351 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraint.java @@ -0,0 +1,125 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.List; + +import javax.persistence.EmbeddedId; +import javax.ws.rs.core.Response; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfModelRuntimeException; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Immutable class to represent the Constraint of property in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Data +@EqualsAndHashCode(callSuper = false) +public abstract class JpaToscaConstraint extends PfConcept { + private static final long serialVersionUID = 6426438089914347734L; + + @EmbeddedId + private final PfReferenceKey key; + + /** + * The Default Constructor creates a {@link JpaToscaConstraint} object with a null key. + */ + public JpaToscaConstraint() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraint} object with the given concept key. + * + * @param key the key + */ + public JpaToscaConstraint(@NonNull final PfReferenceKey key) { + this.key = key; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaConstraint(@NonNull final JpaToscaConstraint copyConcept) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } + + @Override + public List getKeys() { + return getKey().getKeys(); + } + + @Override + public void clean() { + key.clean(); + } + + @Override + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (key.isNullKey()) { + result.addValidationMessage( + new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); + } + + return key.validate(result); + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaConstraint other = (JpaToscaConstraint) otherConcept; + + return key.compareTo(other.key); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java new file mode 100644 index 000000000..231e26188 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java @@ -0,0 +1,119 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import javax.persistence.Column; +import javax.ws.rs.core.Response; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NonNull; +import lombok.ToString; + +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfModelRuntimeException; +import org.onap.policy.models.base.PfReferenceKey; + +/** + * This class represents a logical TOSCA constraint: =,>,>=,<,<=. + */ +@EqualsAndHashCode(callSuper = false) +@ToString +public class JpaToscaConstraintLogical extends JpaToscaConstraint { + private static final long serialVersionUID = 2562306457768745444L; + + public enum Operation { + EQ, + GT, + GE, + LT, + LE + } + + @Column + @NonNull + @Getter + private final Operation operation; + + /** + * The Default Constructor creates a {@link JpaToscaConstraintLogical} object with a null key. + */ + public JpaToscaConstraintLogical() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraintLogical} object with the given concept key. + * + * @param key the key of the constraint + */ + public JpaToscaConstraintLogical(final PfReferenceKey key) { + this(key, Operation.EQ); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraintLogical} object with the given concept key and operation. + * + * @param key the key of the constraint + * @param operation the logical operation of the constraint + * + */ + public JpaToscaConstraintLogical(final PfReferenceKey key, @NonNull final Operation operation) { + super(key); + this.operation = operation; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaConstraintLogical(@NonNull final JpaToscaConstraintLogical copyConcept) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaConstraintLogical other = (JpaToscaConstraintLogical) otherConcept; + + int result = super.compareTo(other); + if (result != 0) { + return result; + } + + return operation.compareTo(other.operation); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKey.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKey.java new file mode 100644 index 000000000..13902db19 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKey.java @@ -0,0 +1,155 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; +import javax.ws.rs.core.Response; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NonNull; +import lombok.ToString; + +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfModelRuntimeException; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * This immutable class represents a logical TOSCA constraint: =,>,>=,<,<= that compares the owner + * of an instance of the class to the referenced key. + */ +@Entity +@Table(name = "ToscaConstraintLogicalKey") +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@EqualsAndHashCode(callSuper = false) +@ToString +public final class JpaToscaConstraintLogicalKey extends JpaToscaConstraintLogical { + private static final long serialVersionUID = -2420828090326264341L; + + @Column + @NonNull + @Getter + private final PfKey compareToKey; + + /** + * The Default Constructor creates a {@link JpaToscaConstraintLogicalKey} object with a null key. + */ + public JpaToscaConstraintLogicalKey() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraintLogicalKey} object with the given concept + * key. + * + * @param key the key of the constraint + */ + public JpaToscaConstraintLogicalKey(final PfReferenceKey key) { + this(key, Operation.EQ, PfConceptKey.getNullKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraintLogicalKey} object with the given concept + * key, operation, and compare key. + * + * @param key the key of the constraint + * @param operation the logical operation of the constraint + * @param compareToKey the key of the object to which the object that owns this constraint will + * be compared + */ + public JpaToscaConstraintLogicalKey(final PfReferenceKey key, @NonNull final Operation operation, + @NonNull final PfKey compareToKey) { + super(key, operation); + this.compareToKey = compareToKey; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaConstraintLogicalKey(@NonNull final JpaToscaConstraintLogical copyConcept) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } + + @Override + public List getKeys() { + final List keyList = super.getKeys(); + keyList.addAll(compareToKey.getKeys()); + return keyList; + } + + @Override + public void clean() { + super.clean(); + compareToKey.clean(); + } + + @Override + public PfValidationResult validate(final PfValidationResult resultIn) { + PfValidationResult result = super.validate(resultIn); + + if (compareToKey.isNullKey()) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "comparison key is a null key")); + } + + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaConstraintLogicalKey other = (JpaToscaConstraintLogicalKey) otherConcept; + + int result = super.compareTo(other); + if (result != 0) { + return result; + } + + return compareToKey.compareTo(other.compareToKey); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalString.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalString.java new file mode 100644 index 000000000..512127343 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalString.java @@ -0,0 +1,137 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; +import javax.ws.rs.core.Response; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NonNull; + +import org.onap.policy.common.utils.validation.ParameterValidationUtils; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfModelRuntimeException; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * This class represents a logical TOSCA constraint: =,>,>=,<,<= that compares the owner of an + * instance of the class to the given string. + */ +@Entity +@Table(name = "ToscaConstraintLogicalString") +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@EqualsAndHashCode(callSuper = false) +public class JpaToscaConstraintLogicalString extends JpaToscaConstraintLogical { + private static final long serialVersionUID = 8167550632122339195L; + + @Column + @NonNull + @Getter + private final String compareToString; + + /** + * The Default Constructor creates a {@link JpaToscaConstraintLogicalString} object with a null key. + */ + public JpaToscaConstraintLogicalString() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraintLogicalString} object with the given concept + * key. + * + * @param key the key of the constraint + */ + public JpaToscaConstraintLogicalString(final PfReferenceKey key) { + this(key, Operation.EQ, ""); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraintLogicalString} object with the given concept + * key, operation, and compare string. + * + * @param key the key of the constraint + * @param operation the logical operation of the constraint + * @param compareToString the key of the object to which the object that owns this constraint will + * be compared + */ + public JpaToscaConstraintLogicalString(final PfReferenceKey key, @NonNull final Operation operation, + @NonNull final String compareToString) { + super(key, operation); + this.compareToString = compareToString.trim(); + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaConstraintLogicalString(@NonNull final JpaToscaConstraintLogical copyConcept) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } + + @Override + public PfValidationResult validate(final PfValidationResult resultIn) { + PfValidationResult result = super.validate(resultIn); + + if (!ParameterValidationUtils.validateStringParameter(compareToString)) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "comparison string is null or blank")); + } + + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaConstraintLogicalString other = (JpaToscaConstraintLogicalString) otherConcept; + + int result = super.compareTo(other); + if (result != 0) { + return result; + } + + return compareToString.compareTo(other.compareToString); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java new file mode 100644 index 000000000..608605f4e --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java @@ -0,0 +1,121 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import com.google.gson.annotations.SerializedName; + +import java.util.LinkedList; +import java.util.List; +import javax.persistence.ElementCollection; +import javax.ws.rs.core.Response; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfModelRuntimeException; +import org.onap.policy.models.base.PfReferenceKey; + +/** + * This class represents valid_values TOSCA constraint. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +@EqualsAndHashCode(callSuper = false) +@Data +public class JpaToscaConstraintValidValues extends JpaToscaConstraint { + private static final long serialVersionUID = 3152323457560746844L; + + @SerializedName("valid_values") + @NonNull + @ElementCollection + private final List validValues; + + /** + * The Default Constructor creates a {@link JpaToscaConstraintValidValues} object with a null key. + */ + public JpaToscaConstraintValidValues() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraintValidValues} object with the given concept key. + * + * @param key the key of the constraint + */ + public JpaToscaConstraintValidValues(final PfReferenceKey key) { + super(key); + validValues = new LinkedList<>(); + } + + /** + * The Key Constructor creates a {@link JpaToscaConstraintLogical} object with the given concept key + * and valid values list. + * + * @param key the key of the constraint + * @param validValues the valid values list of the constraint + * + */ + public JpaToscaConstraintValidValues(final PfReferenceKey key, @NonNull final List validValues) { + super(key); + this.validValues = validValues; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaConstraintValidValues(@NonNull final JpaToscaConstraintValidValues copyConcept) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaConstraintValidValues other = (JpaToscaConstraintValidValues) otherConcept; + + int result = super.compareTo(other); + if (result != 0) { + return result; + } + + if (validValues.equals(other.validValues)) { + return 0; + } + return -1; + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java new file mode 100644 index 000000000..0035eb015 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java @@ -0,0 +1,246 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.ElementCollection; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Class to represent custom data type in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaDataType") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaDataType extends JpaToscaEntityType { + private static final long serialVersionUID = -3922690413436539164L; + + @ElementCollection + private List constraints; + + @ElementCollection + private List properties; + + /** + * The Default Constructor creates a {@link JpaToscaDataType} object with a null key. + */ + public JpaToscaDataType() { + this(new PfConceptKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaDataType} object with the given concept key. + * + * @param key the key + */ + public JpaToscaDataType(@NonNull final PfConceptKey key) { + super(key); + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaDataType(final JpaToscaDataType copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + final List keyList = super.getKeys(); + + if (constraints != null) { + for (JpaToscaConstraint constraint : constraints) { + keyList.addAll(constraint.getKeys()); + } + } + + if (properties != null) { + for (JpaToscaProperty property : properties) { + keyList.addAll(property.getKeys()); + } + } + + return keyList; + } + + @Override + public void clean() { + super.clean(); + + if (constraints != null) { + for (JpaToscaConstraint constraint : constraints) { + constraint.clean(); + } + } + + if (properties != null) { + for (JpaToscaProperty property : properties) { + property.clean(); + } + } + } + + @Override + public PfValidationResult validate(final PfValidationResult resultIn) { + PfValidationResult result = super.validate(resultIn); + + if (constraints != null) { + result = validateConstraints(result); + } + + if (properties != null) { + result = validateProperties(result); + } + + return result; + } + + /** + * Validate the constraints. + * + * @param result The result of validations up to now + * @return the validation result + */ + private PfValidationResult validateConstraints(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + for (JpaToscaConstraint constraint : constraints) { + if (constraint == null) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "data type constraint may not be null ")); + } else { + result = constraint.validate(result); + } + } + return result; + } + + /** + * Validate the properties. + * + * @param result The result of validations up to now + * @return the validation result + */ + private PfValidationResult validateProperties(final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + for (JpaToscaProperty property : properties) { + if (property == null) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "data type property may not be null ")); + } else { + result = property.validate(result); + } + } + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaDataType other = (JpaToscaDataType) otherConcept; + if (!super.equals(other)) { + return super.compareTo(other); + } + + int result = PfUtils.compareObjects(constraints, other.constraints); + if (result != 0) { + return result; + } + + result = PfUtils.compareObjects(properties, other.properties); + if (result != 0) { + return result; + } + + return 0; + } + + @Override + public PfConcept copyTo(@NonNull PfConcept target) { + final Object copyObject = target; + Assertions.instanceOf(copyObject, PfConcept.class); + + final JpaToscaDataType copy = ((JpaToscaDataType) copyObject); + super.copyTo(target); + + if (constraints == null) { + copy.setConstraints(null); + } + else { + final List newConstraints = new ArrayList<>(); + for (final JpaToscaConstraint constraint : constraints) { + newConstraints.add(constraint); // Constraints are immutable + } + copy.setConstraints(newConstraints); + } + + if (properties == null) { + copy.setProperties(null); + } + else { + final List newProperties = new ArrayList<>(); + for (final JpaToscaProperty property : properties) { + newProperties.add(new JpaToscaProperty(property)); + } + copy.setProperties(newProperties); + } + + return copy; + } +} \ No newline at end of file diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypes.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypes.java new file mode 100644 index 000000000..7fedd063c --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypes.java @@ -0,0 +1,89 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.Map; +import java.util.TreeMap; + +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import org.onap.policy.models.base.PfConceptContainer; +import org.onap.policy.models.base.PfConceptKey; + +/** + * This class is a container for TOSCA data types. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaDataTypes") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaDataTypes extends PfConceptContainer { + private static final long serialVersionUID = 2941102271022190348L; + + public static final String DEFAULT_NAME = "ToscaDataTypesSimple"; + public static final String DEFAULT_VERSION = "1.0.0"; + + /** + * The Default Constructor creates a {@link JpaToscaDataTypes} object with a null artifact key + * and creates an empty concept map. + */ + public JpaToscaDataTypes() { + super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION)); + } + + /** + * The Key Constructor creates a {@link JpaToscaDataTypes} object with the given artifact key + * and creates an empty concept map. + * + * @param key the concept key + */ + public JpaToscaDataTypes(final PfConceptKey key) { + super(key, new TreeMap()); + } + + /** + * This Constructor creates an concept container with all of its fields defined. + * + * @param key the concept container key + * @param conceptMap the concepts to be stored in the concept container + */ + public JpaToscaDataTypes(final PfConceptKey key, final Map conceptMap) { + super(key, conceptMap); + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaDataTypes(final JpaToscaDataTypes copyConcept) { + super(copyConcept); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java new file mode 100644 index 000000000..e7d51a500 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java @@ -0,0 +1,218 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.TreeMap; + +import javax.persistence.AttributeOverride; +import javax.persistence.AttributeOverrides; +import javax.persistence.Column; +import javax.persistence.ElementCollection; +import javax.persistence.EmbeddedId; +import javax.persistence.MappedSuperclass; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.apache.commons.lang3.ObjectUtils; +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.common.utils.validation.ParameterValidationUtils; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Class to represent the EntrySchema of list/map property in TOSCA definition. + */ +@MappedSuperclass +@Data +@EqualsAndHashCode(callSuper = false) +public class JpaToscaEntityType extends PfConcept { + private static final long serialVersionUID = -1330661834220739393L; + + @EmbeddedId + private PfConceptKey key; + + // @formatter:off + @Column + @AttributeOverrides({ + @AttributeOverride(name = "name", + column = @Column(name = "derived_from_name")), + @AttributeOverride(name = "version", + column = @Column(name = "derived_from_version")) + }) + private PfConceptKey derivedFrom; + + @ElementCollection + private Map metadata; + + @Column + private String description; + // @formatter:on + + /** + * The Default Constructor creates a {@link JpaToscaEntityType} object with a null key. + */ + public JpaToscaEntityType() { + this(new PfConceptKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaEntityType} object with the given concept key. + * + * @param key the key + */ + public JpaToscaEntityType(@NonNull final PfConceptKey key) { + this.key = key; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaEntityType(final JpaToscaEntityType copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + final List keyList = getKey().getKeys(); + if (derivedFrom != null) { + keyList.addAll(derivedFrom.getKeys()); + } + return keyList; + } + + @Override + public void clean() { + key.clean(); + + if (derivedFrom != null) { + derivedFrom.clean(); + } + + if (metadata != null) { + for (Entry metadataEntry : metadata.entrySet()) { + metadataEntry.setValue(metadataEntry.getValue().trim()); + } + } + + description = (description != null ? description.trim() : null); + } + + @Override + public PfValidationResult validate(PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (key.isNullKey()) { + result.addValidationMessage( + new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); + } + + result = key.validate(result); + + if (derivedFrom != null && derivedFrom.isNullKey()) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "derived from key is a null key")); + } + + if (metadata != null) { + for (Entry metadataEntry : metadata.entrySet()) { + if (!ParameterValidationUtils.validateStringParameter(metadataEntry.getKey())) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property metadata key may not be null")); + } + if (!ParameterValidationUtils.validateStringParameter(metadataEntry.getValue())) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property metadata value may not be null")); + } + } + } + + if (description != null && description.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property description may not be blank")); + } + + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaEntityType other = (JpaToscaEntityType) otherConcept; + if (!key.equals(other.key)) { + return key.compareTo(other.key); + } + + int result = ObjectUtils.compare(derivedFrom, other.derivedFrom); + if (result != 0) { + return result; + } + + result = PfUtils.compareObjects(metadata, other.metadata); + if (result != 0) { + return result; + } + + return ObjectUtils.compare(description, other.description); + } + + @Override + public PfConcept copyTo(@NonNull PfConcept target) { + final Object copyObject = target; + Assertions.instanceOf(copyObject, PfConcept.class); + + final JpaToscaEntityType copy = ((JpaToscaEntityType) copyObject); + copy.setKey(new PfConceptKey(key)); + copy.setDerivedFrom(derivedFrom != null ? new PfConceptKey(derivedFrom) : null); + + if (metadata != null) { + final Map newMatadata = new TreeMap<>(); + for (final Entry metadataEntry : metadata.entrySet()) { + newMatadata.put(metadataEntry.getKey(), metadataEntry.getValue()); + } + copy.setMetadata(newMatadata); + } + + copy.setDescription(description); + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchema.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchema.java new file mode 100644 index 000000000..e5ae20e84 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchema.java @@ -0,0 +1,228 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.ElementCollection; +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.apache.commons.lang3.ObjectUtils; +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + + +/** + * Class to represent the EntrySchema of list/map property in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaEntrySchema") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = false) +public class JpaToscaEntrySchema extends PfConcept { + private static final long serialVersionUID = 3645882081163287058L; + + @EmbeddedId + private PfReferenceKey key; + + @Column + private PfConceptKey type; + + @Column + private String description; + + @ElementCollection + private List constraints; + + /** + * The Default Constructor creates a {@link JpaToscaEntrySchema} object with a null key. + */ + public JpaToscaEntrySchema() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaEntrySchema} object with the given concept key. + * + * @param key the key + */ + public JpaToscaEntrySchema(@NonNull final PfReferenceKey key) { + this(key, new PfConceptKey()); + } + + /** + * The full constructor creates a {@link JpaToscaEntrySchema} object with mandatory fields. + * + * @param key the key + * @param type the type of the entry schema + */ + public JpaToscaEntrySchema(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey type) { + this.key = key; + this.type = type; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaEntrySchema(final JpaToscaEntrySchema copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + final List keyList = getKey().getKeys(); + + keyList.addAll(type.getKeys()); + + if (constraints != null) { + for (JpaToscaConstraint constraint : constraints) { + keyList.addAll(constraint.getKeys()); + } + } + + return keyList; + } + + @Override + public void clean() { + key.clean(); + + type.clean(); + description = (description != null ? description.trim() : null); + + if (constraints != null) { + for (JpaToscaConstraint constraint : constraints) { + constraint.clean(); + } + } + } + + @Override + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (key.isNullKey()) { + result.addValidationMessage( + new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); + } + + result = key.validate(result); + + if (type == null || type.isNullKey()) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "entry schema type may not be null")); + } + + if (description != null && description.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "entry schema description may not be blank")); + } + + + if (constraints != null) { + for (JpaToscaConstraint constraint : constraints) { + if (constraint == null) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property constraint may not be null ")); + } else { + result = constraint.validate(result); + } + } + } + + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaEntrySchema other = (JpaToscaEntrySchema) otherConcept; + if (!key.equals(other.key)) { + return key.compareTo(other.key); + } + + if (!type.equals(other.type)) { + return type.compareTo(other.type); + } + + int result = ObjectUtils.compare(description, other.description); + if (result != 0) { + return result; + } + + return PfUtils.compareObjects(constraints, other.constraints); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + Assertions.instanceOf(target, JpaToscaEntrySchema.class); + + final JpaToscaEntrySchema copy = ((JpaToscaEntrySchema) target); + copy.setKey(new PfReferenceKey(key)); + copy.setType(new PfConceptKey(type)); + copy.setDescription(description); + + if (constraints != null) { + final List newConstraints = new ArrayList<>(); + for (final JpaToscaConstraint constraint : constraints) { + newConstraints.add(constraint); // Constraints are immutable + } + copy.setConstraints(newConstraints); + } + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEventFilter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEventFilter.java new file mode 100644 index 000000000..3907a1b0c --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEventFilter.java @@ -0,0 +1,197 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.apache.commons.lang3.ObjectUtils; +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Class to represent the EventFilter in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaEventFilter") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = false) +public class JpaToscaEventFilter extends PfConcept { + private static final long serialVersionUID = 8769020537228210247L; + + @EmbeddedId + private PfReferenceKey key; + + @Column + private PfConceptKey node; + + @Column + private String requirement; + + @Column + private String capability; + + /** + * The Default Constructor creates a {@link JpaToscaEventFilter} object with a null key. + */ + public JpaToscaEventFilter() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaEventFilter} object with the given concept key. + * + * @param key the key + */ + public JpaToscaEventFilter(@NonNull final PfReferenceKey key) { + this(key, new PfConceptKey()); + } + + /** + * The full Constructor creates a {@link JpaToscaEventFilter} object with the given concept key and node. + * + * @param key the key + */ + public JpaToscaEventFilter(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey node) { + this.key = key; + this.node = node; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaEventFilter(final JpaToscaEventFilter copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + final List keyList = getKey().getKeys(); + keyList.addAll(node.getKeys()); + return keyList; + } + + @Override + public void clean() { + key.clean(); + node.clean(); + + requirement = (requirement != null ? requirement.trim() : requirement); + capability = (capability != null ? capability.trim() : capability); + } + + @Override + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (key.isNullKey()) { + result.addValidationMessage( + new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); + } + + result = key.validate(result); + + if (node == null || node.isNullKey()) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "node on an event filter may not be null")); + } + + if (requirement != null && requirement.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "event filter requirement may not be blank")); + } + + if (capability != null && capability.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "event filter capability may not be blank")); + } + + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaEventFilter other = (JpaToscaEventFilter) otherConcept; + if (!key.equals(other.key)) { + return key.compareTo(other.key); + } + + if (!node.equals(other.node)) { + return node.compareTo(other.node); + } + + int result = ObjectUtils.compare(requirement, other.requirement); + if (result != 0) { + return result; + } + + return ObjectUtils.compare(capability, other.capability); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + final Object copyObject = target; + Assertions.instanceOf(copyObject, JpaToscaEventFilter.class); + + final JpaToscaEventFilter copy = ((JpaToscaEventFilter) copyObject); + copy.setKey(new PfReferenceKey(key)); + copy.setNode(new PfConceptKey(node)); + copy.setRequirement(requirement); + copy.setCapability(capability); + + return copy; + } +} \ No newline at end of file diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaModel.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaModel.java new file mode 100644 index 000000000..a322c167f --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaModel.java @@ -0,0 +1,160 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfModel; +import org.onap.policy.models.base.PfModelService; +import org.onap.policy.models.base.PfValidationResult; + +/** + * A container class for a TOSCA model with multiple service templates. This class is a container + * class that allows a model with many service templates to be constructed that contains a well + * formed overall TOSCA model. + * + *

Validation runs {@link JpaToscaModel} validation on the model and all its sub concepts. + */ + +@Entity +@Table(name = "ToscaModel") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaModel extends PfModel { + private static final long serialVersionUID = 8800599637708309945L; + + @OneToOne(cascade = CascadeType.ALL) + private JpaToscaServiceTemplates serviceTemplates; + + /** + * The Default Constructor creates a {@link JpaToscaModel} object with a null concept key and + * creates an empty TOSCA model. + */ + public JpaToscaModel() { + this(new PfConceptKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaModel} object with the given concept key and + * creates an empty TOSCA model. + * + * @param key the TOSCA model key + */ + public JpaToscaModel(final PfConceptKey key) { + this(key, new JpaToscaServiceTemplates(new PfConceptKey())); + } + + /** + * Constructor that initiates a {@link JpaToscaModel} with all its fields. + * + * @param key the TOSCA model key + * @param serviceTemplates the service templates in the event model + */ + public JpaToscaModel(@NonNull final PfConceptKey key, @NonNull final JpaToscaServiceTemplates serviceTemplates) { + super(key); + this.serviceTemplates = serviceTemplates; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaModel(@NonNull final JpaToscaModel copyConcept) { + super(copyConcept); + } + + @Override + public void register() { + PfModelService.registerModel(serviceTemplates.getId(), getServiceTemplates()); + } + + @Override + public List getKeys() { + final List keyList = super.getKeys(); + + keyList.addAll(serviceTemplates.getKeys()); + + return keyList; + } + + @Override + public void clean() { + super.clean(); + serviceTemplates.clean(); + } + + @Override + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = super.validate(resultIn); + + return serviceTemplates.validate(result); + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + + if (this == otherConcept) { + return 0; + } + + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaModel other = (JpaToscaModel) otherConcept; + if (!super.equals(other)) { + return super.compareTo(other); + } + + return serviceTemplates.compareTo(other.serviceTemplates); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept targetObject) { + Assertions.instanceOf(targetObject, JpaToscaModel.class); + + final JpaToscaModel copy = ((JpaToscaModel) targetObject); + super.copyTo(targetObject); + copy.setServiceTemplates(new JpaToscaServiceTemplates(serviceTemplates)); + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicies.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicies.java new file mode 100644 index 000000000..d59f470dd --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicies.java @@ -0,0 +1,89 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.Map; +import java.util.TreeMap; + +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import org.onap.policy.models.base.PfConceptContainer; +import org.onap.policy.models.base.PfConceptKey; + +/** + * This class is a container for TOSCA data types. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaPolicies") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaPolicies extends PfConceptContainer { + private static final long serialVersionUID = -7526648702327776101L; + + public static final String DEFAULT_NAME = "ToscaPoliciesSimple"; + public static final String DEFAULT_VERSION = "1.0.0"; + + /** + * The Default Constructor creates a {@link JpaToscaPolicies} object with a null artifact key and + * creates an empty concept map. + */ + public JpaToscaPolicies() { + super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION)); + } + + /** + * The Key Constructor creates a {@link JpaToscaPolicies} object with the given artifact key and + * creates an empty concept map. + * + * @param key the concept key + */ + public JpaToscaPolicies(final PfConceptKey key) { + super(key, new TreeMap()); + } + + /** + * This Constructor creates an concept container with all of its fields defined. + * + * @param key the concept container key + * @param conceptMap the concepts to be stored in the concept container + */ + public JpaToscaPolicies(final PfConceptKey key, final Map conceptMap) { + super(key, conceptMap); + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaPolicies(final JpaToscaPolicies copyConcept) { + super(copyConcept); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicy.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicy.java new file mode 100644 index 000000000..e889192d8 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicy.java @@ -0,0 +1,271 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import javax.persistence.AttributeOverride; +import javax.persistence.AttributeOverrides; +import javax.persistence.Column; +import javax.persistence.ElementCollection; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.common.utils.validation.ParameterValidationUtils; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Class to represent the policy in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaPolicy") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaPolicy extends JpaToscaEntityType { + private static final long serialVersionUID = 3265174757061982805L; + + // @formatter:off + @Column + @AttributeOverrides({ + @AttributeOverride(name = "name", + column = @Column(name = "type_name")), + @AttributeOverride(name = "version", + column = @Column(name = "type_version")) + }) + private PfConceptKey type; + + @ElementCollection + @Column(length = 10000) + private Map properties; + + @ElementCollection + private List targets; + // @formatter:on + + /** + * The Default Constructor creates a {@link JpaToscaPolicy} object with a null key. + */ + public JpaToscaPolicy() { + this(new PfConceptKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaPolicy} object with the given concept key. + * + * @param key the key + */ + public JpaToscaPolicy(@NonNull final PfConceptKey key) { + this(key, new PfConceptKey()); + } + + /** + * The full Constructor creates a {@link JpaToscaPolicy} object with all mandatory fields. + * + * @param key the key + * @param type the type of the policy + */ + public JpaToscaPolicy(@NonNull final PfConceptKey key, @NonNull final PfConceptKey type) { + super(key); + this.type = type; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaPolicy(@NonNull final JpaToscaPolicy copyConcept) { + super(copyConcept); + } + + + @Override + public List getKeys() { + final List keyList = super.getKeys(); + + keyList.addAll(type.getKeys()); + + if (targets != null) { + keyList.addAll(targets); + } + + return keyList; + } + + @Override + public void clean() { + super.clean(); + + type.clean(); + + if (targets != null) { + for (PfConceptKey target : targets) { + target.clean(); + } + } + } + + @Override + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = super.validate(resultIn); + + if (type == null || type.isNullKey()) { + result.addValidationMessage(new PfValidationMessage(type, this.getClass(), ValidationResult.INVALID, + "type is null or a null key")); + } else { + result = type.validate(result); + } + + if (properties != null) { + result = validateProperties(result); + } + + if (targets != null) { + result = validateTargets(result); + } + + return result; + } + + /** + * Validate the policy properties. + * + * @param result The result of validations up to now + * @return the validation result + */ + private PfValidationResult validateProperties(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + for (Entry propertyEntry : properties.entrySet()) { + if (!ParameterValidationUtils.validateStringParameter(propertyEntry.getKey())) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "policy property key may not be null ")); + } else if (propertyEntry.getValue() == null) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "policy property value may not be null ")); + } + } + return result; + } + + /** + * Validate the policy targets. + * + * @param result The result of validations up to now + * @return the validation result + */ + private PfValidationResult validateTargets(final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + for (PfConceptKey target : targets) { + if (target == null) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "policy target may not be null ")); + } else { + result = target.validate(result); + } + } + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + + if (this == otherConcept) { + return 0; + } + + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaPolicy other = (JpaToscaPolicy) otherConcept; + if (!super.equals(other)) { + return super.compareTo(other); + } + + if (!type.equals(other.type)) { + return type.compareTo(other.type); + } + + int retVal = PfUtils.compareObjects(properties, other.properties); + if (retVal != 0) { + return retVal; + } + + return PfUtils.compareObjects(targets, other.targets); + } + + @Override + public PfConcept copyTo(@NonNull PfConcept target) { + final Object copyObject = target; + Assertions.instanceOf(copyObject, PfConcept.class); + + final JpaToscaPolicy copy = ((JpaToscaPolicy) copyObject); + super.copyTo(target); + + copy.setType(new PfConceptKey(type)); + + if (properties == null) { + copy.setProperties(null); + } else { + copy.setProperties(properties); + } + + if (targets == null) { + copy.setTargets(null); + } else { + final List newTargets = new ArrayList<>(); + for (final PfConceptKey oldTarget : targets) { + newTargets.add(new PfConceptKey(oldTarget)); + } + copy.setTargets(newTargets); + } + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java new file mode 100644 index 000000000..610987ccb --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java @@ -0,0 +1,294 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.ElementCollection; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Class to represent the policy type in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + */ + +@Entity +@Table(name = "ToscaPolicyType") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaPolicyType extends JpaToscaEntityType { + private static final long serialVersionUID = -563659852901842616L; + + @ElementCollection + private List properties; + + @ElementCollection + private List targets; + + @ElementCollection + private List triggers; + + /** + * The Default Constructor creates a {@link JpaToscaPolicyType} object with a null key. + */ + public JpaToscaPolicyType() { + this(new PfConceptKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaPolicyType} object with the given concept key. + * + * @param key the key + */ + public JpaToscaPolicyType(@NonNull final PfConceptKey key) { + super(key); + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaPolicyType(final JpaToscaPolicyType copyConcept) { + super(copyConcept); + } + + + @Override + public List getKeys() { + final List keyList = super.getKeys(); + + if (properties != null) { + for (JpaToscaProperty property : properties) { + keyList.addAll(property.getKeys()); + } + } + + if (targets != null) { + keyList.addAll(targets); + } + + if (triggers != null) { + for (JpaToscaTrigger trigger : triggers) { + keyList.addAll(trigger.getKeys()); + } + } + + return keyList; + } + + @Override + public void clean() { + super.clean(); + + if (properties != null) { + for (JpaToscaProperty property : properties) { + property.clean(); + } + } + + if (targets != null) { + for (PfConceptKey target : targets) { + target.clean(); + } + } + + if (triggers != null) { + for (JpaToscaTrigger trigger : triggers) { + trigger.clean(); + } + } + } + + @Override + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = super.validate(resultIn); + + if (properties != null) { + result = validateProperties(result); + } + + if (targets != null) { + result = validateTargets(result); + } + + if (triggers != null) { + result = validateTriggers(result); + } + + return result; + } + + /** + * Validate the policy properties. + * + * @param result The result of validations up to now + * @return the validation result + */ + private PfValidationResult validateProperties(final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + for (JpaToscaProperty property : properties) { + if (property == null) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "policy property may not be null ")); + } else { + result = property.validate(result); + } + } + return result; + } + + /** + * Validate the policy targets. + * + * @param result The result of validations up to now + * @return the validation result + */ + private PfValidationResult validateTargets(final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + for (PfConceptKey target : targets) { + if (target == null) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "policy target may not be null ")); + } else { + result = target.validate(result); + } + } + return result; + } + + /** + * Validate the policy triggers. + * + * @param result The result of validations up to now + * @return the validation result + */ + private PfValidationResult validateTriggers(final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + for (JpaToscaTrigger trigger : triggers) { + if (trigger == null) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "policy trigger may not be null ")); + } else { + result = trigger.validate(result); + } + } + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaPolicyType other = (JpaToscaPolicyType) otherConcept; + if (!super.equals(other)) { + return super.compareTo(other); + } + + int retVal = PfUtils.compareObjects(properties, other.properties); + if (retVal != 0) { + return retVal; + } + + retVal = PfUtils.compareObjects(targets, other.targets); + if (retVal != 0) { + return retVal; + } + + return PfUtils.compareObjects(triggers, other.triggers); + } + + @Override + public PfConcept copyTo(@NonNull PfConcept target) { + final Object copyObject = target; + Assertions.instanceOf(copyObject, PfConcept.class); + + final JpaToscaPolicyType copy = ((JpaToscaPolicyType) copyObject); + super.copyTo(target); + + final List newProperties = new ArrayList<>(); + + if (properties == null) { + copy.setProperties(null); + } else { + for (final JpaToscaProperty property : properties) { + newProperties.add(new JpaToscaProperty(property)); + } + copy.setProperties(newProperties); + } + + if (targets == null) { + copy.setTargets(null); + } else { + final List newTargets = new ArrayList<>(); + for (final PfConceptKey oldTarget : targets) { + newTargets.add(new PfConceptKey(oldTarget)); + } + copy.setTargets(newTargets); + } + + if (triggers == null) { + copy.setTargets(null); + } else { + final List newTriggers = new ArrayList<>(); + for (final JpaToscaTrigger trigger : triggers) { + newTriggers.add(new JpaToscaTrigger(trigger)); + } + copy.setTriggers(newTriggers); + } + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypes.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypes.java new file mode 100644 index 000000000..ce3a8130d --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypes.java @@ -0,0 +1,89 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.Map; +import java.util.TreeMap; + +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import org.onap.policy.models.base.PfConceptContainer; +import org.onap.policy.models.base.PfConceptKey; + +/** + * This class is a container for TOSCA policy types. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaPolicyTypes") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaPolicyTypes extends PfConceptContainer { + private static final long serialVersionUID = -4157979965271220098L; + + public static final String DEFAULT_NAME = "ToscaPolicyTypesSimple"; + public static final String DEFAULT_VERSION = "1.0.0"; + + /** + * The Default Constructor creates a {@link JpaToscaPolicyTypes} object with a null artifact key + * and creates an empty concept map. + */ + public JpaToscaPolicyTypes() { + super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION)); + } + + /** + * The Key Constructor creates a {@link JpaToscaPolicyTypes} object with the given artifact key and + * creates an empty concept map. + * + * @param key the concept key + */ + public JpaToscaPolicyTypes(final PfConceptKey key) { + super(key, new TreeMap()); + } + + /** + * This Constructor creates an concept container with all of its fields defined. + * + * @param key the concept container key + * @param conceptMap the concepts to be stored in the concept container + */ + public JpaToscaPolicyTypes(final PfConceptKey key, final Map conceptMap) { + super(key, conceptMap); + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaPolicyTypes(final JpaToscaPolicyTypes copyConcept) { + super(copyConcept); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java new file mode 100644 index 000000000..376c2b3b2 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java @@ -0,0 +1,304 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.ElementCollection; +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.apache.commons.lang3.ObjectUtils; +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Class to represent the property in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaProperty") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = false) +public class JpaToscaProperty extends PfConcept { + private static final long serialVersionUID = 1675770231921107988L; + + public enum Status { + SUPPORTED, UNSUPPORTED, EXPERIMENTAL, DEPRECATED + } + + @EmbeddedId + private PfReferenceKey key; + + @Column + private PfConceptKey type; + + @Column + private String description; + + @Column + private boolean required = false; + + @Column(name = "default") + @SerializedName("default") + private String defaultValue; + + @Column + @NonNull + private Status status = Status.SUPPORTED; + + @ElementCollection + private List constraints; + + @Column + @SerializedName("entry_schema") + private JpaToscaEntrySchema entrySchema; + + /** + * The Default Constructor creates a {@link JpaToscaProperty} object with a null key. + */ + public JpaToscaProperty() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaProperty} object with the given concept key. + * + * @param key the key + */ + public JpaToscaProperty(@NonNull final PfReferenceKey key) { + this(key, new PfConceptKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaProperty} object with the given concept key. + * + * @param key the key + * @param type the key of the property type + */ + public JpaToscaProperty(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey type) { + this.key = key; + this.type = type; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaProperty(final JpaToscaProperty copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + final List keyList = getKey().getKeys(); + + keyList.addAll(type.getKeys()); + + if (constraints != null) { + for (JpaToscaConstraint constraint : constraints) { + keyList.addAll(constraint.getKeys()); + } + } + + if (entrySchema != null) { + keyList.addAll(entrySchema.getKeys()); + } + + return keyList; + } + + @Override + public void clean() { + key.clean(); + + type.clean(); + + if (description != null) { + description = description.trim(); + } + + if (defaultValue != null) { + defaultValue = defaultValue.trim(); + } + + if (constraints != null) { + for (JpaToscaConstraint constraint : constraints) { + constraint.clean(); + } + } + + if (entrySchema != null) { + entrySchema.clean(); + } + } + + @Override + public PfValidationResult validate(final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (key.isNullKey()) { + result.addValidationMessage( + new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); + } + + result = key.validate(result); + + if (type == null || type.isNullKey()) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property type may not be null")); + } + + return validateFields(result); + } + + /** + * Validate the property fields. + * + * @param resultIn the incoming validation results so far + * @return the validation results including this validation + */ + private PfValidationResult validateFields(final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (description != null && description.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property description may not be blank")); + } + + if (defaultValue != null && defaultValue.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property default value may not be null")); + } + + if (constraints != null) { + for (JpaToscaConstraint constraint : constraints) { + if (constraint == null) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property constraint may not be null ")); + } else { + result = constraint.validate(result); + } + } + } + return (entrySchema != null ? entrySchema.validate(result) : result); + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaProperty other = (JpaToscaProperty) otherConcept; + if (!key.equals(other.key)) { + return key.compareTo(other.key); + } + + return compareFields(other); + } + + /** + * Compare the fields of this ToscaProperty object with the fields of the other ToscaProperty + * object. + * + * @param other the other ToscaProperty object + */ + private int compareFields(final JpaToscaProperty other) { + if (!type.equals(other.type)) { + return type.compareTo(other.type); + } + + int result = ObjectUtils.compare(description, other.description); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(required, other.required); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(defaultValue, other.defaultValue); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(status, other.status); + if (result != 0) { + return result; + } + + result = PfUtils.compareObjects(constraints, other.constraints); + if (result != 0) { + return result; + } + + return entrySchema.compareTo(other.entrySchema); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + Assertions.instanceOf(target, JpaToscaProperty.class); + + final JpaToscaProperty copy = ((JpaToscaProperty) target); + copy.setKey(new PfReferenceKey(key)); + copy.setType(new PfConceptKey(type)); + copy.setDescription(description); + copy.setRequired(required); + copy.setDefaultValue(defaultValue); + copy.setStatus(status); + copy.constraints = constraints; // Constraints are immutable + copy.setEntrySchema(entrySchema != null ? new JpaToscaEntrySchema(entrySchema) : null); + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java new file mode 100644 index 000000000..fa2d2aac7 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java @@ -0,0 +1,225 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.apache.commons.lang3.ObjectUtils; +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.common.utils.validation.ParameterValidationUtils; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * This class holds a full TOSCA service template. Note: Only the policy specific parts of the TOSCA + * service template are implemented. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaServiceTemplate") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaServiceTemplate extends JpaToscaEntityType { + private static final long serialVersionUID = 8084846046148349401L; + + public static final String DEFAULT_NAME = "ToscaServiceTemplateSimple"; + public static final String DEFAULT_VERSION = "1.0.0"; + + @Column + @SerializedName("tosca_definitions_version") + private String toscaDefinitionsVersion; + + @OneToOne(cascade = CascadeType.ALL) + @SerializedName("data_types") + private JpaToscaDataTypes dataTypes; + + @OneToOne(cascade = CascadeType.ALL) + @SerializedName("policy_types") + private JpaToscaPolicyTypes policyTypes; + + @SerializedName("topology_template") + private JpaToscaTopologyTemplate topologyTemplate; + + + /** + * The Default Constructor creates a {@link JpaToscaServiceTemplate} object with a null key. + */ + public JpaToscaServiceTemplate() { + this(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION)); + } + + /** + * The Key Constructor creates a {@link JpaToscaServiceTemplate} object with the given concept key. + * + * @param key the key + */ + public JpaToscaServiceTemplate(@NonNull final PfConceptKey key) { + this(key, ""); + } + + /** + * The full constructor creates a {@link JpaToscaServiceTemplate} object with all mandatory + * parameters. + * + * @param key the key + * @param toscaDefinitionsVersion the TOSCA version string + */ + public JpaToscaServiceTemplate(@NonNull final PfConceptKey key, @NonNull final String toscaDefinitionsVersion) { + super(key); + this.toscaDefinitionsVersion = toscaDefinitionsVersion; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaServiceTemplate(final JpaToscaServiceTemplate copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + final List keyList = super.getKeys(); + + if (dataTypes != null) { + keyList.addAll(dataTypes.getKeys()); + } + + if (policyTypes != null) { + keyList.addAll(policyTypes.getKeys()); + } + + if (topologyTemplate != null) { + keyList.addAll(topologyTemplate.getKeys()); + } + + return keyList; + } + + @Override + public void clean() { + toscaDefinitionsVersion = toscaDefinitionsVersion.trim(); + + if (dataTypes != null) { + dataTypes.clean(); + } + + if (policyTypes != null) { + policyTypes.clean(); + } + + if (topologyTemplate != null) { + topologyTemplate.clean(); + } + } + + @Override + public PfValidationResult validate(final PfValidationResult resultIn) { + PfValidationResult result = super.validate(resultIn); + + if (!ParameterValidationUtils.validateStringParameter(toscaDefinitionsVersion)) { + result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, + "service template tosca definitions version may not be null")); + } + + if (dataTypes != null) { + result = dataTypes.validate(result); + } + + if (policyTypes != null) { + result = policyTypes.validate(result); + } + + return (topologyTemplate != null ? topologyTemplate.validate(result) : result); + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaServiceTemplate other = (JpaToscaServiceTemplate) otherConcept; + if (!super.equals(other)) { + return super.compareTo(other); + } + + int result = ObjectUtils.compare(toscaDefinitionsVersion, other.toscaDefinitionsVersion); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(dataTypes, other.dataTypes); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(policyTypes, other.policyTypes); + if (result != 0) { + return result; + } + + return ObjectUtils.compare(topologyTemplate, other.topologyTemplate); + } + + @Override + public PfConcept copyTo(@NonNull PfConcept target) { + final Object copyObject = target; + Assertions.instanceOf(copyObject, PfConcept.class); + + final JpaToscaServiceTemplate copy = ((JpaToscaServiceTemplate) copyObject); + super.copyTo(target); + copy.setToscaDefinitionsVersion(toscaDefinitionsVersion); + + copy.setDataTypes(dataTypes != null ? new JpaToscaDataTypes(dataTypes) : null); + copy.setPolicyTypes(policyTypes != null ? new JpaToscaPolicyTypes(policyTypes) : null); + copy.setTopologyTemplate(topologyTemplate != null ? new JpaToscaTopologyTemplate(topologyTemplate) : null); + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplates.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplates.java new file mode 100644 index 000000000..39e553144 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplates.java @@ -0,0 +1,87 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.Map; +import java.util.TreeMap; + +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import org.onap.policy.models.base.PfConceptContainer; +import org.onap.policy.models.base.PfConceptKey; + +/** + * This class is a container for TOSCA service templates. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaServiceTemplates") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = true) +public class JpaToscaServiceTemplates extends PfConceptContainer { + private static final long serialVersionUID = -3053257884307604114L; + + /** + * The Default Constructor creates a {@link JpaToscaServiceTemplates} object with a null artifact key and creates an + * empty concept map. + */ + public JpaToscaServiceTemplates() { + super(new PfConceptKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaServiceTemplates} object with the given artifact key and creates an + * empty concept map. + * + * @param key the concept key + */ + public JpaToscaServiceTemplates(final PfConceptKey key) { + super(key, new TreeMap()); + } + + /** + * This Constructor creates an concept container with all of its fields defined. + * + * @param key the concept container key + * @param conceptMap the concepts to be stored in the concept container + */ + public JpaToscaServiceTemplates(final PfConceptKey key, + final Map conceptMap) { + super(key, conceptMap); + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaServiceTemplates(final JpaToscaServiceTemplates copyConcept) { + super(copyConcept); + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTimeInterval.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTimeInterval.java new file mode 100644 index 000000000..369aa03c1 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTimeInterval.java @@ -0,0 +1,188 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import com.google.gson.annotations.SerializedName; + +import java.util.Date; +import java.util.List; + +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Class to represent the TimeInterval in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + * + */ +@Entity +@Table(name = "ToscaTimeInterval") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = false) +public class JpaToscaTimeInterval extends PfConcept { + private static final long serialVersionUID = 9151467029611969980L; + + @EmbeddedId + private PfReferenceKey key; + + @SerializedName("start_time") + private Date startTime; + + @SerializedName("end_time") + private Date endTime; + + /** + * The Default Constructor creates a {@link JpaToscaTimeInterval} object with a null key. + */ + public JpaToscaTimeInterval() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaTimeInterval} object with the given concept key. + * + * @param key the key + */ + public JpaToscaTimeInterval(@NonNull final PfReferenceKey key) { + this(key, new Date(0), new Date(0)); + } + + /** + * The full constructor creates a {@link JpaToscaTimeInterval} object with all fields. + * + * @param key the key + */ + public JpaToscaTimeInterval(@NonNull final PfReferenceKey key, @NonNull final Date startTime, + @NonNull final Date endTime) { + this.key = key; + this.startTime = startTime; + this.endTime = endTime; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaTimeInterval(final JpaToscaTimeInterval copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + return getKey().getKeys(); + } + + @Override + public void clean() { + key.clean(); + } + + @Override + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (key.isNullKey()) { + result.addValidationMessage( + new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); + } + + result = key.validate(result); + + if (startTime == null || startTime.getTime() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "start time on time interval may not be null or zero")); + } + + if (endTime == null || endTime.getTime() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "end time on time interval may not be null or zero")); + } + + if (startTime != null && endTime != null && endTime.before(startTime)) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "end time \"" + endTime.toString() + "\" on time interval may not be before start time \"" + + startTime.toString() + "\"")); + } + + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaTimeInterval other = (JpaToscaTimeInterval) otherConcept; + if (!key.equals(other.key)) { + return key.compareTo(other.key); + } + + int returnVal = PfUtils.compareObjects(startTime, other.startTime); + if (returnVal != 0) { + return returnVal; + } + + return PfUtils.compareObjects(endTime, other.endTime); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + final Object copyObject = target; + Assertions.instanceOf(copyObject, JpaToscaTimeInterval.class); + + final JpaToscaTimeInterval copy = ((JpaToscaTimeInterval) copyObject); + copy.setKey(new PfReferenceKey(key)); + copy.setStartTime(startTime); + copy.setEndTime(endTime); + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTopologyTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTopologyTemplate.java new file mode 100644 index 000000000..095435a7f --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTopologyTemplate.java @@ -0,0 +1,181 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.apache.commons.lang3.ObjectUtils; +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * This class holds a TOSCA topology template. Note: Only the policy specific parts of the TOSCA topology template are + * implemented. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaTopologyTemplate") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = false) +public class JpaToscaTopologyTemplate extends PfConcept { + private static final long serialVersionUID = 8969698734673232603L; + + public static final String DEFAULT_LOCAL_NAME = "ToscaTopologyTemplateSimple"; + + @EmbeddedId + private PfReferenceKey key; + + @Column(name = "description") + private String description; + + @OneToOne(cascade = CascadeType.ALL) + private JpaToscaPolicies policies; + + /** + * The Default Constructor creates a {@link JpaToscaTopologyTemplate} object with a null key. + */ + public JpaToscaTopologyTemplate() { + this(new PfReferenceKey(JpaToscaServiceTemplate.DEFAULT_NAME, JpaToscaServiceTemplate.DEFAULT_VERSION, + DEFAULT_LOCAL_NAME)); + } + + /** + * The Key Constructor creates a {@link JpaToscaTopologyTemplate} object with the given concept + * key. + * + * @param key the key + */ + public JpaToscaTopologyTemplate(@NonNull final PfReferenceKey key) { + this.key = key; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaTopologyTemplate(final JpaToscaTopologyTemplate copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + final List keyList = getKey().getKeys(); + + if (policies != null) { + keyList.addAll(policies.getKeys()); + } + + return keyList; + } + + @Override + public void clean() { + key.clean(); + + description = (description != null ? description.trim() : null); + + if (policies != null) { + policies.clean(); + } + } + + @Override + public PfValidationResult validate(PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (key.isNullKey()) { + result.addValidationMessage( + new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); + } + + result = key.validate(result); + + if (description != null && description.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "property description may not be blank")); + } + + if (policies != null) { + result = policies.validate(result); + } + + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaTopologyTemplate other = (JpaToscaTopologyTemplate) otherConcept; + if (!key.equals(other.key)) { + return key.compareTo(other.key); + } + + int result = ObjectUtils.compare(description, other.description); + if (result != 0) { + return result; + } + + return ObjectUtils.compare(policies, other.policies); + } + + @Override + public PfConcept copyTo(@NonNull PfConcept target) { + final Object copyObject = target; + Assertions.instanceOf(copyObject, PfConcept.class); + + final JpaToscaTopologyTemplate copy = ((JpaToscaTopologyTemplate) copyObject); + copy.setKey(new PfReferenceKey(key)); + copy.setDescription(description); + copy.setPolicies(policies != null ? new JpaToscaPolicies(policies) : null); + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java new file mode 100644 index 000000000..0a32701c9 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java @@ -0,0 +1,335 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.concepts; + +import com.google.gson.annotations.SerializedName; + +import java.time.Duration; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import org.apache.commons.lang3.ObjectUtils; +import org.onap.policy.common.utils.validation.Assertions; +import org.onap.policy.common.utils.validation.ParameterValidationUtils; +import org.onap.policy.models.base.PfConcept; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfReferenceKey; +import org.onap.policy.models.base.PfValidationMessage; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.PfValidationResult.ValidationResult; + +/** + * Class to represent the trigger of policy type in TOSCA definition. + * + * @author Chenfei Gao (cgao@research.att.com) + * @author Liam Fallon (liam.fallon@est.tech) + */ +@Entity +@Table(name = "ToscaTrigger") +@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +@Data +@EqualsAndHashCode(callSuper = false) +public class JpaToscaTrigger extends PfConcept { + private static final long serialVersionUID = -6515211640208986971L; + + @EmbeddedId + private PfReferenceKey key; + + @Column + private String description; + + @Column + @SerializedName("event_type") + private String eventType; + + @Column + @SerializedName("schedule") + private JpaToscaTimeInterval schedule; + + @Column + @SerializedName("target_filter") + private JpaToscaEventFilter targetFilter; + + @Column + private JpaToscaConstraint condition; + + @Column + private JpaToscaConstraint constraint; + + @Column + @SerializedName("period") + private Duration period; + + @Column + private int evaluations = 0; + + @Column + private String method; + + @Column + private String action; + + /** + * The Default Constructor creates a {@link JpaToscaTrigger} object with a null key. + */ + public JpaToscaTrigger() { + this(new PfReferenceKey()); + } + + /** + * The Key Constructor creates a {@link JpaToscaTrigger} object with the given concept key. + * + * @param key the key + */ + public JpaToscaTrigger(@NonNull final PfReferenceKey key) { + this(key, "", ""); + } + + /** + * The full Constructor creates a {@link JpaToscaTrigger} object with all mandatory objects. + * + * @param key the key + * @param eventType the event type + * @param action the trigger action + */ + public JpaToscaTrigger(@NonNull final PfReferenceKey key, @NonNull final String eventType, + @NonNull final String action) { + this.key = key; + this.eventType = eventType; + this.action = action; + } + + /** + * Copy constructor. + * + * @param copyConcept the concept to copy from + */ + public JpaToscaTrigger(final JpaToscaTrigger copyConcept) { + super(copyConcept); + } + + @Override + public List getKeys() { + final List keyList = getKey().getKeys(); + if (schedule != null) { + keyList.addAll(schedule.getKeys()); + } + if (targetFilter != null) { + keyList.addAll(targetFilter.getKeys()); + } + if (condition != null) { + keyList.addAll(condition.getKeys()); + } + if (constraint != null) { + keyList.addAll(constraint.getKeys()); + } + return keyList; + } + + @Override + public void clean() { + key.clean(); + + description = (description != null ? description.trim() : description); + eventType = eventType.trim(); + + if (schedule != null) { + schedule.clean(); + } + if (targetFilter != null) { + targetFilter.clean(); + } + if (condition != null) { + condition.clean(); + } + if (constraint != null) { + constraint.clean(); + } + + method = (method != null ? method.trim() : method); + action = action.trim(); + } + + @Override + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + if (key.isNullKey()) { + result.addValidationMessage( + new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); + } + + result = key.validate(result); + + if (description != null && description.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "trigger description may not be blank")); + } + + if (!ParameterValidationUtils.validateStringParameter(eventType)) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "event type on trigger must be defined")); + } + + result = validateOptionalFields(result); + + if (evaluations < 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "evaluations on trigger must be zero or a positive integer")); + } + + if (method != null && method.trim().length() == 0) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "method on trigger may not be blank")); + } + + if (!ParameterValidationUtils.validateStringParameter(action)) { + result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, + "action on trigger must be defined")); + } + + return result; + } + + /** + * Validate optional fields. + * + * @param resultIn the validation result so far + * @return the validation resutls including these fields + */ + private PfValidationResult validateOptionalFields(final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + result = (schedule != null ? schedule.validate(result) : result); + result = (targetFilter != null ? targetFilter.validate(result) : result); + result = (condition != null ? condition.validate(result) : result); + result = (constraint != null ? constraint.validate(result) : result); + + return result; + } + + @Override + public int compareTo(final PfConcept otherConcept) { + if (otherConcept == null) { + return -1; + } + if (this == otherConcept) { + return 0; + } + if (getClass() != otherConcept.getClass()) { + return this.hashCode() - otherConcept.hashCode(); + } + + final JpaToscaTrigger other = (JpaToscaTrigger) otherConcept; + if (!key.equals(other.key)) { + return key.compareTo(other.key); + } + + return compareFields(other); + } + + /** + * Compare the fields of this ToscaTrigger object with the fields of the other ToscaProperty + * object. + * + * @param other the other ToscaTrigger object + */ + private int compareFields(final JpaToscaTrigger other) { + int result = ObjectUtils.compare(description, other.description); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(eventType, other.eventType); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(schedule, other.schedule); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(targetFilter, other.targetFilter); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(condition, other.condition); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(constraint, other.constraint); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(period, other.period); + if (result != 0) { + return result; + } + + if (evaluations != other.evaluations) { + return evaluations - other.evaluations; + } + + result = ObjectUtils.compare(method, other.method); + if (result != 0) { + return result; + } + + return ObjectUtils.compare(action, other.action); + } + + @Override + public PfConcept copyTo(@NonNull final PfConcept target) { + Assertions.instanceOf(target, JpaToscaTrigger.class); + + final JpaToscaTrigger copy = ((JpaToscaTrigger) target); + copy.setKey(new PfReferenceKey(key)); + copy.setDescription(description); + copy.setEventType(eventType); + copy.setSchedule(schedule != null ? new JpaToscaTimeInterval(schedule) : null); + copy.setTargetFilter(targetFilter != null ? new JpaToscaEventFilter(targetFilter) : null); + copy.setCondition(condition); + copy.setConstraint(constraint); + copy.setPeriod(period); + copy.setEvaluations(evaluations); + copy.setMethod(method); + copy.setAction(action); + + return copy; + } +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraint.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraint.java deleted file mode 100644 index ee153a295..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraint.java +++ /dev/null @@ -1,125 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.List; - -import javax.persistence.EmbeddedId; -import javax.ws.rs.core.Response; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Immutable class to represent the Constraint of property in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Data -@EqualsAndHashCode(callSuper = false) -public abstract class ToscaConstraint extends PfConcept { - private static final long serialVersionUID = 6426438089914347734L; - - @EmbeddedId - private final PfReferenceKey key; - - /** - * The Default Constructor creates a {@link ToscaConstraint} object with a null key. - */ - public ToscaConstraint() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaConstraint} object with the given concept key. - * - * @param key the key - */ - public ToscaConstraint(@NonNull final PfReferenceKey key) { - this.key = key; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaConstraint(@NonNull final ToscaConstraint copyConcept) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } - - @Override - public List getKeys() { - return getKey().getKeys(); - } - - @Override - public void clean() { - key.clean(); - } - - @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (key.isNullKey()) { - result.addValidationMessage( - new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); - } - - return key.validate(result); - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaConstraint other = (ToscaConstraint) otherConcept; - - return key.compareTo(other.key); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogical.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogical.java deleted file mode 100644 index 25a03c9e1..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogical.java +++ /dev/null @@ -1,119 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import javax.persistence.Column; -import javax.ws.rs.core.Response; - -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NonNull; -import lombok.ToString; - -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.base.PfReferenceKey; - -/** - * This class represents a logical TOSCA constraint: =,>,>=,<,<=. - */ -@EqualsAndHashCode(callSuper = false) -@ToString -public class ToscaConstraintLogical extends ToscaConstraint { - private static final long serialVersionUID = 2562306457768745444L; - - public enum Operation { - EQ, - GT, - GE, - LT, - LE - } - - @Column - @NonNull - @Getter - private final Operation operation; - - /** - * The Default Constructor creates a {@link ToscaConstraintLogical} object with a null key. - */ - public ToscaConstraintLogical() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaConstraintLogical} object with the given concept key. - * - * @param key the key of the constraint - */ - public ToscaConstraintLogical(final PfReferenceKey key) { - this(key, Operation.EQ); - } - - /** - * The Key Constructor creates a {@link ToscaConstraintLogical} object with the given concept key and operation. - * - * @param key the key of the constraint - * @param operation the logical operation of the constraint - * - */ - public ToscaConstraintLogical(final PfReferenceKey key, @NonNull final Operation operation) { - super(key); - this.operation = operation; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaConstraintLogical(@NonNull final ToscaConstraintLogical copyConcept) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaConstraintLogical other = (ToscaConstraintLogical) otherConcept; - - int result = super.compareTo(other); - if (result != 0) { - return result; - } - - return operation.compareTo(other.operation); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogicalKey.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogicalKey.java deleted file mode 100644 index 0fe50dd71..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogicalKey.java +++ /dev/null @@ -1,155 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; -import javax.ws.rs.core.Response; - -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NonNull; -import lombok.ToString; - -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * This immutable class represents a logical TOSCA constraint: =,>,>=,<,<= that compares the owner - * of an instance of the class to the referenced key. - */ -@Entity -@Table(name = "ToscaConstraintLogicalKey") -@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -@EqualsAndHashCode(callSuper = false) -@ToString -public final class ToscaConstraintLogicalKey extends ToscaConstraintLogical { - private static final long serialVersionUID = -2420828090326264341L; - - @Column - @NonNull - @Getter - private final PfKey compareToKey; - - /** - * The Default Constructor creates a {@link ToscaConstraintLogicalKey} object with a null key. - */ - public ToscaConstraintLogicalKey() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaConstraintLogicalKey} object with the given concept - * key. - * - * @param key the key of the constraint - */ - public ToscaConstraintLogicalKey(final PfReferenceKey key) { - this(key, Operation.EQ, PfConceptKey.getNullKey()); - } - - /** - * The Key Constructor creates a {@link ToscaConstraintLogicalKey} object with the given concept - * key, operation, and compare key. - * - * @param key the key of the constraint - * @param operation the logical operation of the constraint - * @param compareToKey the key of the object to which the object that owns this constraint will - * be compared - */ - public ToscaConstraintLogicalKey(final PfReferenceKey key, @NonNull final Operation operation, - @NonNull final PfKey compareToKey) { - super(key, operation); - this.compareToKey = compareToKey; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaConstraintLogicalKey(@NonNull final ToscaConstraintLogical copyConcept) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } - - @Override - public List getKeys() { - final List keyList = super.getKeys(); - keyList.addAll(compareToKey.getKeys()); - return keyList; - } - - @Override - public void clean() { - super.clean(); - compareToKey.clean(); - } - - @Override - public PfValidationResult validate(final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - if (compareToKey.isNullKey()) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "comparison key is a null key")); - } - - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaConstraintLogicalKey other = (ToscaConstraintLogicalKey) otherConcept; - - int result = super.compareTo(other); - if (result != 0) { - return result; - } - - return compareToKey.compareTo(other.compareToKey); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogicalString.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogicalString.java deleted file mode 100644 index fbf036004..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintLogicalString.java +++ /dev/null @@ -1,137 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; -import javax.ws.rs.core.Response; - -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NonNull; - -import org.onap.policy.common.utils.validation.ParameterValidationUtils; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * This class represents a logical TOSCA constraint: =,>,>=,<,<= that compares the owner of an - * instance of the class to the given string. - */ -@Entity -@Table(name = "ToscaConstraintLogicalString") -@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -@EqualsAndHashCode(callSuper = false) -public class ToscaConstraintLogicalString extends ToscaConstraintLogical { - private static final long serialVersionUID = 8167550632122339195L; - - @Column - @NonNull - @Getter - private final String compareToString; - - /** - * The Default Constructor creates a {@link ToscaConstraintLogicalString} object with a null key. - */ - public ToscaConstraintLogicalString() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaConstraintLogicalString} object with the given concept - * key. - * - * @param key the key of the constraint - */ - public ToscaConstraintLogicalString(final PfReferenceKey key) { - this(key, Operation.EQ, ""); - } - - /** - * The Key Constructor creates a {@link ToscaConstraintLogicalString} object with the given concept - * key, operation, and compare string. - * - * @param key the key of the constraint - * @param operation the logical operation of the constraint - * @param compareToString the key of the object to which the object that owns this constraint will - * be compared - */ - public ToscaConstraintLogicalString(final PfReferenceKey key, @NonNull final Operation operation, - @NonNull final String compareToString) { - super(key, operation); - this.compareToString = compareToString.trim(); - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaConstraintLogicalString(@NonNull final ToscaConstraintLogical copyConcept) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } - - @Override - public PfValidationResult validate(final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - if (!ParameterValidationUtils.validateStringParameter(compareToString)) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "comparison string is null or blank")); - } - - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaConstraintLogicalString other = (ToscaConstraintLogicalString) otherConcept; - - int result = super.compareTo(other); - if (result != 0) { - return result; - } - - return compareToString.compareTo(other.compareToString); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintValidValues.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintValidValues.java deleted file mode 100644 index 98629a603..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaConstraintValidValues.java +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import com.google.gson.annotations.SerializedName; - -import java.util.LinkedList; -import java.util.List; -import javax.persistence.ElementCollection; -import javax.ws.rs.core.Response; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.base.PfReferenceKey; - -/** - * This class represents valid_values TOSCA constraint. - * - * @author Chenfei Gao (cgao@research.att.com) - */ -@EqualsAndHashCode(callSuper = false) -@Data -public class ToscaConstraintValidValues extends ToscaConstraint { - private static final long serialVersionUID = 3152323457560746844L; - - @SerializedName("valid_values") - @NonNull - @ElementCollection - private final List validValues; - - /** - * The Default Constructor creates a {@link ToscaConstraintValidValues} object with a null key. - */ - public ToscaConstraintValidValues() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaConstraintValidValues} object with the given concept key. - * - * @param key the key of the constraint - */ - public ToscaConstraintValidValues(final PfReferenceKey key) { - super(key); - validValues = new LinkedList<>(); - } - - /** - * The Key Constructor creates a {@link ToscaConstraintLogical} object with the given concept key - * and valid values list. - * - * @param key the key of the constraint - * @param validValues the valid values list of the constraint - * - */ - public ToscaConstraintValidValues(final PfReferenceKey key, @NonNull final List validValues) { - super(key); - this.validValues = validValues; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaConstraintValidValues(@NonNull final ToscaConstraintValidValues copyConcept) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaConstraintValidValues other = (ToscaConstraintValidValues) otherConcept; - - int result = super.compareTo(other); - if (result != 0) { - return result; - } - - if (validValues.equals(other.validValues)) { - return 0; - } - return -1; - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint"); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaDataType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaDataType.java deleted file mode 100644 index e7d91ea40..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaDataType.java +++ /dev/null @@ -1,246 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Class to represent custom data type in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaDataType") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaDataType extends ToscaEntityType { - private static final long serialVersionUID = -3922690413436539164L; - - @ElementCollection - private List constraints; - - @ElementCollection - private List properties; - - /** - * The Default Constructor creates a {@link ToscaDataType} object with a null key. - */ - public ToscaDataType() { - this(new PfConceptKey()); - } - - /** - * The Key Constructor creates a {@link ToscaDataType} object with the given concept key. - * - * @param key the key - */ - public ToscaDataType(@NonNull final PfConceptKey key) { - super(key); - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaDataType(final ToscaDataType copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - final List keyList = super.getKeys(); - - if (constraints != null) { - for (ToscaConstraint constraint : constraints) { - keyList.addAll(constraint.getKeys()); - } - } - - if (properties != null) { - for (ToscaProperty property : properties) { - keyList.addAll(property.getKeys()); - } - } - - return keyList; - } - - @Override - public void clean() { - super.clean(); - - if (constraints != null) { - for (ToscaConstraint constraint : constraints) { - constraint.clean(); - } - } - - if (properties != null) { - for (ToscaProperty property : properties) { - property.clean(); - } - } - } - - @Override - public PfValidationResult validate(final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - if (constraints != null) { - result = validateConstraints(result); - } - - if (properties != null) { - result = validateProperties(result); - } - - return result; - } - - /** - * Validate the constraints. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateConstraints(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (ToscaConstraint constraint : constraints) { - if (constraint == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "data type constraint may not be null ")); - } else { - result = constraint.validate(result); - } - } - return result; - } - - /** - * Validate the properties. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateProperties(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (ToscaProperty property : properties) { - if (property == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "data type property may not be null ")); - } else { - result = property.validate(result); - } - } - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaDataType other = (ToscaDataType) otherConcept; - if (!super.equals(other)) { - return super.compareTo(other); - } - - int result = PfUtils.compareObjects(constraints, other.constraints); - if (result != 0) { - return result; - } - - result = PfUtils.compareObjects(properties, other.properties); - if (result != 0) { - return result; - } - - return 0; - } - - @Override - public PfConcept copyTo(@NonNull PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, PfConcept.class); - - final ToscaDataType copy = ((ToscaDataType) copyObject); - super.copyTo(target); - - if (constraints == null) { - copy.setConstraints(null); - } - else { - final List newConstraints = new ArrayList<>(); - for (final ToscaConstraint constraint : constraints) { - newConstraints.add(constraint); // Constraints are immutable - } - copy.setConstraints(newConstraints); - } - - if (properties == null) { - copy.setProperties(null); - } - else { - final List newProperties = new ArrayList<>(); - for (final ToscaProperty property : properties) { - newProperties.add(new ToscaProperty(property)); - } - copy.setProperties(newProperties); - } - - return copy; - } -} \ No newline at end of file diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaDataTypes.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaDataTypes.java deleted file mode 100644 index eae98a1bc..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaDataTypes.java +++ /dev/null @@ -1,89 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.Map; -import java.util.TreeMap; - -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import org.onap.policy.models.base.PfConceptContainer; -import org.onap.policy.models.base.PfConceptKey; - -/** - * This class is a container for TOSCA data types. - * - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaDataTypes") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaDataTypes extends PfConceptContainer { - private static final long serialVersionUID = 2941102271022190348L; - - public static final String DEFAULT_NAME = "ToscaDataTypesSimple"; - public static final String DEFAULT_VERSION = "1.0.0"; - - /** - * The Default Constructor creates a {@link ToscaDataTypes} object with a null artifact key - * and creates an empty concept map. - */ - public ToscaDataTypes() { - super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION)); - } - - /** - * The Key Constructor creates a {@link ToscaDataTypes} object with the given artifact key - * and creates an empty concept map. - * - * @param key the concept key - */ - public ToscaDataTypes(final PfConceptKey key) { - super(key, new TreeMap()); - } - - /** - * This Constructor creates an concept container with all of its fields defined. - * - * @param key the concept container key - * @param conceptMap the concepts to be stored in the concept container - */ - public ToscaDataTypes(final PfConceptKey key, final Map conceptMap) { - super(key, conceptMap); - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaDataTypes(final ToscaDataTypes copyConcept) { - super(copyConcept); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEntityType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEntityType.java deleted file mode 100644 index f2ae05119..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEntityType.java +++ /dev/null @@ -1,218 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.TreeMap; - -import javax.persistence.AttributeOverride; -import javax.persistence.AttributeOverrides; -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.EmbeddedId; -import javax.persistence.MappedSuperclass; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.common.utils.validation.ParameterValidationUtils; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Class to represent the EntrySchema of list/map property in TOSCA definition. - */ -@MappedSuperclass -@Data -@EqualsAndHashCode(callSuper = false) -public class ToscaEntityType extends PfConcept { - private static final long serialVersionUID = -1330661834220739393L; - - @EmbeddedId - private PfConceptKey key; - - // @formatter:off - @Column - @AttributeOverrides({ - @AttributeOverride(name = "name", - column = @Column(name = "derived_from_name")), - @AttributeOverride(name = "version", - column = @Column(name = "derived_from_version")) - }) - private PfConceptKey derivedFrom; - - @ElementCollection - private Map metadata; - - @Column - private String description; - // @formatter:on - - /** - * The Default Constructor creates a {@link ToscaEntityType} object with a null key. - */ - public ToscaEntityType() { - this(new PfConceptKey()); - } - - /** - * The Key Constructor creates a {@link ToscaEntityType} object with the given concept key. - * - * @param key the key - */ - public ToscaEntityType(@NonNull final PfConceptKey key) { - this.key = key; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaEntityType(final ToscaEntityType copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - final List keyList = getKey().getKeys(); - if (derivedFrom != null) { - keyList.addAll(derivedFrom.getKeys()); - } - return keyList; - } - - @Override - public void clean() { - key.clean(); - - if (derivedFrom != null) { - derivedFrom.clean(); - } - - if (metadata != null) { - for (Entry metadataEntry : metadata.entrySet()) { - metadataEntry.setValue(metadataEntry.getValue().trim()); - } - } - - description = (description != null ? description.trim() : null); - } - - @Override - public PfValidationResult validate(PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (key.isNullKey()) { - result.addValidationMessage( - new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); - } - - result = key.validate(result); - - if (derivedFrom != null && derivedFrom.isNullKey()) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "derived from key is a null key")); - } - - if (metadata != null) { - for (Entry metadataEntry : metadata.entrySet()) { - if (!ParameterValidationUtils.validateStringParameter(metadataEntry.getKey())) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property metadata key may not be null")); - } - if (!ParameterValidationUtils.validateStringParameter(metadataEntry.getValue())) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property metadata value may not be null")); - } - } - } - - if (description != null && description.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property description may not be blank")); - } - - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaEntityType other = (ToscaEntityType) otherConcept; - if (!key.equals(other.key)) { - return key.compareTo(other.key); - } - - int result = ObjectUtils.compare(derivedFrom, other.derivedFrom); - if (result != 0) { - return result; - } - - result = PfUtils.compareObjects(metadata, other.metadata); - if (result != 0) { - return result; - } - - return ObjectUtils.compare(description, other.description); - } - - @Override - public PfConcept copyTo(@NonNull PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, PfConcept.class); - - final ToscaEntityType copy = ((ToscaEntityType) copyObject); - copy.setKey(new PfConceptKey(key)); - copy.setDerivedFrom(derivedFrom != null ? new PfConceptKey(derivedFrom) : null); - - if (metadata != null) { - final Map newMatadata = new TreeMap<>(); - for (final Entry metadataEntry : metadata.entrySet()) { - newMatadata.put(metadataEntry.getKey(), metadataEntry.getValue()); - } - copy.setMetadata(newMatadata); - } - - copy.setDescription(description); - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEntrySchema.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEntrySchema.java deleted file mode 100644 index 2dca1ef55..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEntrySchema.java +++ /dev/null @@ -1,228 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - - -/** - * Class to represent the EntrySchema of list/map property in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaEntrySchema") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = false) -public class ToscaEntrySchema extends PfConcept { - private static final long serialVersionUID = 3645882081163287058L; - - @EmbeddedId - private PfReferenceKey key; - - @Column - private PfConceptKey type; - - @Column - private String description; - - @ElementCollection - private List constraints; - - /** - * The Default Constructor creates a {@link ToscaEntrySchema} object with a null key. - */ - public ToscaEntrySchema() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaEntrySchema} object with the given concept key. - * - * @param key the key - */ - public ToscaEntrySchema(@NonNull final PfReferenceKey key) { - this(key, new PfConceptKey()); - } - - /** - * The full constructor creates a {@link ToscaEntrySchema} object with mandatory fields. - * - * @param key the key - * @param type the type of the entry schema - */ - public ToscaEntrySchema(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey type) { - this.key = key; - this.type = type; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaEntrySchema(final ToscaEntrySchema copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - final List keyList = getKey().getKeys(); - - keyList.addAll(type.getKeys()); - - if (constraints != null) { - for (ToscaConstraint constraint : constraints) { - keyList.addAll(constraint.getKeys()); - } - } - - return keyList; - } - - @Override - public void clean() { - key.clean(); - - type.clean(); - description = (description != null ? description.trim() : null); - - if (constraints != null) { - for (ToscaConstraint constraint : constraints) { - constraint.clean(); - } - } - } - - @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (key.isNullKey()) { - result.addValidationMessage( - new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); - } - - result = key.validate(result); - - if (type == null || type.isNullKey()) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "entry schema type may not be null")); - } - - if (description != null && description.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "entry schema description may not be blank")); - } - - - if (constraints != null) { - for (ToscaConstraint constraint : constraints) { - if (constraint == null) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property constraint may not be null ")); - } else { - result = constraint.validate(result); - } - } - } - - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaEntrySchema other = (ToscaEntrySchema) otherConcept; - if (!key.equals(other.key)) { - return key.compareTo(other.key); - } - - if (!type.equals(other.type)) { - return type.compareTo(other.type); - } - - int result = ObjectUtils.compare(description, other.description); - if (result != 0) { - return result; - } - - return PfUtils.compareObjects(constraints, other.constraints); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - Assertions.instanceOf(target, ToscaEntrySchema.class); - - final ToscaEntrySchema copy = ((ToscaEntrySchema) target); - copy.setKey(new PfReferenceKey(key)); - copy.setType(new PfConceptKey(type)); - copy.setDescription(description); - - if (constraints != null) { - final List newConstraints = new ArrayList<>(); - for (final ToscaConstraint constraint : constraints) { - newConstraints.add(constraint); // Constraints are immutable - } - copy.setConstraints(newConstraints); - } - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEventFilter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEventFilter.java deleted file mode 100644 index e2e5488e0..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaEventFilter.java +++ /dev/null @@ -1,197 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Class to represent the EventFilter in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaEventFilter") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = false) -public class ToscaEventFilter extends PfConcept { - private static final long serialVersionUID = 8769020537228210247L; - - @EmbeddedId - private PfReferenceKey key; - - @Column - private PfConceptKey node; - - @Column - private String requirement; - - @Column - private String capability; - - /** - * The Default Constructor creates a {@link ToscaEventFilter} object with a null key. - */ - public ToscaEventFilter() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaEventFilter} object with the given concept key. - * - * @param key the key - */ - public ToscaEventFilter(@NonNull final PfReferenceKey key) { - this(key, new PfConceptKey()); - } - - /** - * The full Constructor creates a {@link ToscaEventFilter} object with the given concept key and node. - * - * @param key the key - */ - public ToscaEventFilter(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey node) { - this.key = key; - this.node = node; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaEventFilter(final ToscaEventFilter copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - final List keyList = getKey().getKeys(); - keyList.addAll(node.getKeys()); - return keyList; - } - - @Override - public void clean() { - key.clean(); - node.clean(); - - requirement = (requirement != null ? requirement.trim() : requirement); - capability = (capability != null ? capability.trim() : capability); - } - - @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (key.isNullKey()) { - result.addValidationMessage( - new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); - } - - result = key.validate(result); - - if (node == null || node.isNullKey()) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "node on an event filter may not be null")); - } - - if (requirement != null && requirement.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "event filter requirement may not be blank")); - } - - if (capability != null && capability.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "event filter capability may not be blank")); - } - - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaEventFilter other = (ToscaEventFilter) otherConcept; - if (!key.equals(other.key)) { - return key.compareTo(other.key); - } - - if (!node.equals(other.node)) { - return node.compareTo(other.node); - } - - int result = ObjectUtils.compare(requirement, other.requirement); - if (result != 0) { - return result; - } - - return ObjectUtils.compare(capability, other.capability); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, ToscaEventFilter.class); - - final ToscaEventFilter copy = ((ToscaEventFilter) copyObject); - copy.setKey(new PfReferenceKey(key)); - copy.setNode(new PfConceptKey(node)); - copy.setRequirement(requirement); - copy.setCapability(capability); - - return copy; - } -} \ No newline at end of file diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaModel.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaModel.java deleted file mode 100644 index a7852976d..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaModel.java +++ /dev/null @@ -1,160 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.List; - -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.OneToOne; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfModel; -import org.onap.policy.models.base.PfModelService; -import org.onap.policy.models.base.PfValidationResult; - -/** - * A container class for a TOSCA model with multiple service templates. This class is a container - * class that allows a model with many service templates to be constructed that contains a well - * formed overall TOSCA model. - * - *

Validation runs {@link ToscaModel} validation on the model and all its sub concepts. - */ - -@Entity -@Table(name = "ToscaModel") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaModel extends PfModel { - private static final long serialVersionUID = 8800599637708309945L; - - @OneToOne(cascade = CascadeType.ALL) - private ToscaServiceTemplates serviceTemplates; - - /** - * The Default Constructor creates a {@link ToscaModel} object with a null concept key and - * creates an empty TOSCA model. - */ - public ToscaModel() { - this(new PfConceptKey()); - } - - /** - * The Key Constructor creates a {@link ToscaModel} object with the given concept key and - * creates an empty TOSCA model. - * - * @param key the TOSCA model key - */ - public ToscaModel(final PfConceptKey key) { - this(key, new ToscaServiceTemplates(new PfConceptKey())); - } - - /** - * Constructor that initiates a {@link ToscaModel} with all its fields. - * - * @param key the TOSCA model key - * @param serviceTemplates the service templates in the event model - */ - public ToscaModel(@NonNull final PfConceptKey key, @NonNull final ToscaServiceTemplates serviceTemplates) { - super(key); - this.serviceTemplates = serviceTemplates; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaModel(@NonNull final ToscaModel copyConcept) { - super(copyConcept); - } - - @Override - public void register() { - PfModelService.registerModel(serviceTemplates.getId(), getServiceTemplates()); - } - - @Override - public List getKeys() { - final List keyList = super.getKeys(); - - keyList.addAll(serviceTemplates.getKeys()); - - return keyList; - } - - @Override - public void clean() { - super.clean(); - serviceTemplates.clean(); - } - - @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - return serviceTemplates.validate(result); - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - - if (this == otherConcept) { - return 0; - } - - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaModel other = (ToscaModel) otherConcept; - if (!super.equals(other)) { - return super.compareTo(other); - } - - return serviceTemplates.compareTo(other.serviceTemplates); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept targetObject) { - Assertions.instanceOf(targetObject, ToscaModel.class); - - final ToscaModel copy = ((ToscaModel) targetObject); - super.copyTo(targetObject); - copy.setServiceTemplates(new ToscaServiceTemplates(serviceTemplates)); - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicies.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicies.java deleted file mode 100644 index f318bb6be..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicies.java +++ /dev/null @@ -1,89 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.Map; -import java.util.TreeMap; - -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import org.onap.policy.models.base.PfConceptContainer; -import org.onap.policy.models.base.PfConceptKey; - -/** - * This class is a container for TOSCA data types. - * - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaPolicies") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaPolicies extends PfConceptContainer { - private static final long serialVersionUID = -7526648702327776101L; - - public static final String DEFAULT_NAME = "ToscaPoliciesSimple"; - public static final String DEFAULT_VERSION = "1.0.0"; - - /** - * The Default Constructor creates a {@link ToscaPolicies} object with a null artifact key and - * creates an empty concept map. - */ - public ToscaPolicies() { - super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION)); - } - - /** - * The Key Constructor creates a {@link ToscaPolicies} object with the given artifact key and - * creates an empty concept map. - * - * @param key the concept key - */ - public ToscaPolicies(final PfConceptKey key) { - super(key, new TreeMap()); - } - - /** - * This Constructor creates an concept container with all of its fields defined. - * - * @param key the concept container key - * @param conceptMap the concepts to be stored in the concept container - */ - public ToscaPolicies(final PfConceptKey key, final Map conceptMap) { - super(key, conceptMap); - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaPolicies(final ToscaPolicies copyConcept) { - super(copyConcept); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicy.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicy.java deleted file mode 100644 index e08079c40..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicy.java +++ /dev/null @@ -1,271 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.persistence.AttributeOverride; -import javax.persistence.AttributeOverrides; -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.common.utils.validation.ParameterValidationUtils; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Class to represent the policy in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaPolicy") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaPolicy extends ToscaEntityType { - private static final long serialVersionUID = 3265174757061982805L; - - // @formatter:off - @Column - @AttributeOverrides({ - @AttributeOverride(name = "name", - column = @Column(name = "type_name")), - @AttributeOverride(name = "version", - column = @Column(name = "type_version")) - }) - private PfConceptKey type; - - @ElementCollection - @Column(length = 10000) - private Map properties; - - @ElementCollection - private List targets; - // @formatter:on - - /** - * The Default Constructor creates a {@link ToscaPolicy} object with a null key. - */ - public ToscaPolicy() { - this(new PfConceptKey()); - } - - /** - * The Key Constructor creates a {@link ToscaPolicy} object with the given concept key. - * - * @param key the key - */ - public ToscaPolicy(@NonNull final PfConceptKey key) { - this(key, new PfConceptKey()); - } - - /** - * The full Constructor creates a {@link ToscaPolicy} object with all mandatory fields. - * - * @param key the key - * @param type the type of the policy - */ - public ToscaPolicy(@NonNull final PfConceptKey key, @NonNull final PfConceptKey type) { - super(key); - this.type = type; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaPolicy(@NonNull final ToscaPolicy copyConcept) { - super(copyConcept); - } - - - @Override - public List getKeys() { - final List keyList = super.getKeys(); - - keyList.addAll(type.getKeys()); - - if (targets != null) { - keyList.addAll(targets); - } - - return keyList; - } - - @Override - public void clean() { - super.clean(); - - type.clean(); - - if (targets != null) { - for (PfConceptKey target : targets) { - target.clean(); - } - } - } - - @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - if (type == null || type.isNullKey()) { - result.addValidationMessage(new PfValidationMessage(type, this.getClass(), ValidationResult.INVALID, - "type is null or a null key")); - } else { - result = type.validate(result); - } - - if (properties != null) { - result = validateProperties(result); - } - - if (targets != null) { - result = validateTargets(result); - } - - return result; - } - - /** - * Validate the policy properties. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateProperties(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (Entry propertyEntry : properties.entrySet()) { - if (!ParameterValidationUtils.validateStringParameter(propertyEntry.getKey())) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "policy property key may not be null ")); - } else if (propertyEntry.getValue() == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "policy property value may not be null ")); - } - } - return result; - } - - /** - * Validate the policy targets. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateTargets(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (PfConceptKey target : targets) { - if (target == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "policy target may not be null ")); - } else { - result = target.validate(result); - } - } - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - - if (this == otherConcept) { - return 0; - } - - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaPolicy other = (ToscaPolicy) otherConcept; - if (!super.equals(other)) { - return super.compareTo(other); - } - - if (!type.equals(other.type)) { - return type.compareTo(other.type); - } - - int retVal = PfUtils.compareObjects(properties, other.properties); - if (retVal != 0) { - return retVal; - } - - return PfUtils.compareObjects(targets, other.targets); - } - - @Override - public PfConcept copyTo(@NonNull PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, PfConcept.class); - - final ToscaPolicy copy = ((ToscaPolicy) copyObject); - super.copyTo(target); - - copy.setType(new PfConceptKey(type)); - - if (properties == null) { - copy.setProperties(null); - } else { - copy.setProperties(properties); - } - - if (targets == null) { - copy.setTargets(null); - } else { - final List newTargets = new ArrayList<>(); - for (final PfConceptKey oldTarget : targets) { - newTargets.add(new PfConceptKey(oldTarget)); - } - copy.setTargets(newTargets); - } - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyType.java deleted file mode 100644 index b155192cb..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyType.java +++ /dev/null @@ -1,294 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Class to represent the policy type in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - */ - -@Entity -@Table(name = "ToscaPolicyType") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaPolicyType extends ToscaEntityType { - private static final long serialVersionUID = -563659852901842616L; - - @ElementCollection - private List properties; - - @ElementCollection - private List targets; - - @ElementCollection - private List triggers; - - /** - * The Default Constructor creates a {@link ToscaPolicyType} object with a null key. - */ - public ToscaPolicyType() { - this(new PfConceptKey()); - } - - /** - * The Key Constructor creates a {@link ToscaPolicyType} object with the given concept key. - * - * @param key the key - */ - public ToscaPolicyType(@NonNull final PfConceptKey key) { - super(key); - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaPolicyType(final ToscaPolicyType copyConcept) { - super(copyConcept); - } - - - @Override - public List getKeys() { - final List keyList = super.getKeys(); - - if (properties != null) { - for (ToscaProperty property : properties) { - keyList.addAll(property.getKeys()); - } - } - - if (targets != null) { - keyList.addAll(targets); - } - - if (triggers != null) { - for (ToscaTrigger trigger : triggers) { - keyList.addAll(trigger.getKeys()); - } - } - - return keyList; - } - - @Override - public void clean() { - super.clean(); - - if (properties != null) { - for (ToscaProperty property : properties) { - property.clean(); - } - } - - if (targets != null) { - for (PfConceptKey target : targets) { - target.clean(); - } - } - - if (triggers != null) { - for (ToscaTrigger trigger : triggers) { - trigger.clean(); - } - } - } - - @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - if (properties != null) { - result = validateProperties(result); - } - - if (targets != null) { - result = validateTargets(result); - } - - if (triggers != null) { - result = validateTriggers(result); - } - - return result; - } - - /** - * Validate the policy properties. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateProperties(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (ToscaProperty property : properties) { - if (property == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "policy property may not be null ")); - } else { - result = property.validate(result); - } - } - return result; - } - - /** - * Validate the policy targets. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateTargets(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (PfConceptKey target : targets) { - if (target == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "policy target may not be null ")); - } else { - result = target.validate(result); - } - } - return result; - } - - /** - * Validate the policy triggers. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateTriggers(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (ToscaTrigger trigger : triggers) { - if (trigger == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "policy trigger may not be null ")); - } else { - result = trigger.validate(result); - } - } - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaPolicyType other = (ToscaPolicyType) otherConcept; - if (!super.equals(other)) { - return super.compareTo(other); - } - - int retVal = PfUtils.compareObjects(properties, other.properties); - if (retVal != 0) { - return retVal; - } - - retVal = PfUtils.compareObjects(targets, other.targets); - if (retVal != 0) { - return retVal; - } - - return PfUtils.compareObjects(triggers, other.triggers); - } - - @Override - public PfConcept copyTo(@NonNull PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, PfConcept.class); - - final ToscaPolicyType copy = ((ToscaPolicyType) copyObject); - super.copyTo(target); - - final List newProperties = new ArrayList<>(); - - if (properties == null) { - copy.setProperties(null); - } else { - for (final ToscaProperty property : properties) { - newProperties.add(new ToscaProperty(property)); - } - copy.setProperties(newProperties); - } - - if (targets == null) { - copy.setTargets(null); - } else { - final List newTargets = new ArrayList<>(); - for (final PfConceptKey oldTarget : targets) { - newTargets.add(new PfConceptKey(oldTarget)); - } - copy.setTargets(newTargets); - } - - if (triggers == null) { - copy.setTargets(null); - } else { - final List newTriggers = new ArrayList<>(); - for (final ToscaTrigger trigger : triggers) { - newTriggers.add(new ToscaTrigger(trigger)); - } - copy.setTriggers(newTriggers); - } - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyTypes.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyTypes.java deleted file mode 100644 index 277291364..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyTypes.java +++ /dev/null @@ -1,89 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.Map; -import java.util.TreeMap; - -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import org.onap.policy.models.base.PfConceptContainer; -import org.onap.policy.models.base.PfConceptKey; - -/** - * This class is a container for TOSCA policy types. - * - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaPolicyTypes") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaPolicyTypes extends PfConceptContainer { - private static final long serialVersionUID = -4157979965271220098L; - - public static final String DEFAULT_NAME = "ToscaPolicyTypesSimple"; - public static final String DEFAULT_VERSION = "1.0.0"; - - /** - * The Default Constructor creates a {@link ToscaPolicyTypes} object with a null artifact key - * and creates an empty concept map. - */ - public ToscaPolicyTypes() { - super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION)); - } - - /** - * The Key Constructor creates a {@link ToscaPolicyTypes} object with the given artifact key and - * creates an empty concept map. - * - * @param key the concept key - */ - public ToscaPolicyTypes(final PfConceptKey key) { - super(key, new TreeMap()); - } - - /** - * This Constructor creates an concept container with all of its fields defined. - * - * @param key the concept container key - * @param conceptMap the concepts to be stored in the concept container - */ - public ToscaPolicyTypes(final PfConceptKey key, final Map conceptMap) { - super(key, conceptMap); - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaPolicyTypes(final ToscaPolicyTypes copyConcept) { - super(copyConcept); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaProperty.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaProperty.java deleted file mode 100644 index 2276f5a7a..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaProperty.java +++ /dev/null @@ -1,304 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import com.google.gson.annotations.SerializedName; - -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Class to represent the property in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaProperty") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = false) -public class ToscaProperty extends PfConcept { - private static final long serialVersionUID = 1675770231921107988L; - - public enum Status { - SUPPORTED, UNSUPPORTED, EXPERIMENTAL, DEPRECATED - } - - @EmbeddedId - private PfReferenceKey key; - - @Column - private PfConceptKey type; - - @Column - private String description; - - @Column - private boolean required = false; - - @Column(name = "default") - @SerializedName("default") - private String defaultValue; - - @Column - @NonNull - private Status status = Status.SUPPORTED; - - @ElementCollection - private List constraints; - - @Column - @SerializedName("entry_schema") - private ToscaEntrySchema entrySchema; - - /** - * The Default Constructor creates a {@link ToscaProperty} object with a null key. - */ - public ToscaProperty() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaProperty} object with the given concept key. - * - * @param key the key - */ - public ToscaProperty(@NonNull final PfReferenceKey key) { - this(key, new PfConceptKey()); - } - - /** - * The Key Constructor creates a {@link ToscaProperty} object with the given concept key. - * - * @param key the key - * @param type the key of the property type - */ - public ToscaProperty(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey type) { - this.key = key; - this.type = type; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaProperty(final ToscaProperty copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - final List keyList = getKey().getKeys(); - - keyList.addAll(type.getKeys()); - - if (constraints != null) { - for (ToscaConstraint constraint : constraints) { - keyList.addAll(constraint.getKeys()); - } - } - - if (entrySchema != null) { - keyList.addAll(entrySchema.getKeys()); - } - - return keyList; - } - - @Override - public void clean() { - key.clean(); - - type.clean(); - - if (description != null) { - description = description.trim(); - } - - if (defaultValue != null) { - defaultValue = defaultValue.trim(); - } - - if (constraints != null) { - for (ToscaConstraint constraint : constraints) { - constraint.clean(); - } - } - - if (entrySchema != null) { - entrySchema.clean(); - } - } - - @Override - public PfValidationResult validate(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (key.isNullKey()) { - result.addValidationMessage( - new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); - } - - result = key.validate(result); - - if (type == null || type.isNullKey()) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property type may not be null")); - } - - return validateFields(result); - } - - /** - * Validate the property fields. - * - * @param resultIn the incoming validation results so far - * @return the validation results including this validation - */ - private PfValidationResult validateFields(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (description != null && description.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property description may not be blank")); - } - - if (defaultValue != null && defaultValue.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property default value may not be null")); - } - - if (constraints != null) { - for (ToscaConstraint constraint : constraints) { - if (constraint == null) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property constraint may not be null ")); - } else { - result = constraint.validate(result); - } - } - } - return (entrySchema != null ? entrySchema.validate(result) : result); - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaProperty other = (ToscaProperty) otherConcept; - if (!key.equals(other.key)) { - return key.compareTo(other.key); - } - - return compareFields(other); - } - - /** - * Compare the fields of this ToscaProperty object with the fields of the other ToscaProperty - * object. - * - * @param other the other ToscaProperty object - */ - private int compareFields(final ToscaProperty other) { - if (!type.equals(other.type)) { - return type.compareTo(other.type); - } - - int result = ObjectUtils.compare(description, other.description); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(required, other.required); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(defaultValue, other.defaultValue); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(status, other.status); - if (result != 0) { - return result; - } - - result = PfUtils.compareObjects(constraints, other.constraints); - if (result != 0) { - return result; - } - - return entrySchema.compareTo(other.entrySchema); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - Assertions.instanceOf(target, ToscaProperty.class); - - final ToscaProperty copy = ((ToscaProperty) target); - copy.setKey(new PfReferenceKey(key)); - copy.setType(new PfConceptKey(type)); - copy.setDescription(description); - copy.setRequired(required); - copy.setDefaultValue(defaultValue); - copy.setStatus(status); - copy.constraints = constraints; // Constraints are immutable - copy.setEntrySchema(entrySchema != null ? new ToscaEntrySchema(entrySchema) : null); - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaServiceTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaServiceTemplate.java deleted file mode 100644 index c3bb9165e..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaServiceTemplate.java +++ /dev/null @@ -1,225 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import com.google.gson.annotations.SerializedName; - -import java.util.List; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.OneToOne; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.common.utils.validation.ParameterValidationUtils; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * This class holds a full TOSCA service template. Note: Only the policy specific parts of the TOSCA - * service template are implemented. - * - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaServiceTemplate") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaServiceTemplate extends ToscaEntityType { - private static final long serialVersionUID = 8084846046148349401L; - - public static final String DEFAULT_NAME = "ToscaServiceTemplateSimple"; - public static final String DEFAULT_VERSION = "1.0.0"; - - @Column - @SerializedName("tosca_definitions_version") - private String toscaDefinitionsVersion; - - @OneToOne(cascade = CascadeType.ALL) - @SerializedName("data_types") - private ToscaDataTypes dataTypes; - - @OneToOne(cascade = CascadeType.ALL) - @SerializedName("policy_types") - private ToscaPolicyTypes policyTypes; - - @SerializedName("topology_template") - private ToscaTopologyTemplate topologyTemplate; - - - /** - * The Default Constructor creates a {@link ToscaServiceTemplate} object with a null key. - */ - public ToscaServiceTemplate() { - this(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION)); - } - - /** - * The Key Constructor creates a {@link ToscaServiceTemplate} object with the given concept key. - * - * @param key the key - */ - public ToscaServiceTemplate(@NonNull final PfConceptKey key) { - this(key, ""); - } - - /** - * The full constructor creates a {@link ToscaServiceTemplate} object with all mandatory - * parameters. - * - * @param key the key - * @param toscaDefinitionsVersion the TOSCA version string - */ - public ToscaServiceTemplate(@NonNull final PfConceptKey key, @NonNull final String toscaDefinitionsVersion) { - super(key); - this.toscaDefinitionsVersion = toscaDefinitionsVersion; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaServiceTemplate(final ToscaServiceTemplate copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - final List keyList = super.getKeys(); - - if (dataTypes != null) { - keyList.addAll(dataTypes.getKeys()); - } - - if (policyTypes != null) { - keyList.addAll(policyTypes.getKeys()); - } - - if (topologyTemplate != null) { - keyList.addAll(topologyTemplate.getKeys()); - } - - return keyList; - } - - @Override - public void clean() { - toscaDefinitionsVersion = toscaDefinitionsVersion.trim(); - - if (dataTypes != null) { - dataTypes.clean(); - } - - if (policyTypes != null) { - policyTypes.clean(); - } - - if (topologyTemplate != null) { - topologyTemplate.clean(); - } - } - - @Override - public PfValidationResult validate(final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - if (!ParameterValidationUtils.validateStringParameter(toscaDefinitionsVersion)) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "service template tosca definitions version may not be null")); - } - - if (dataTypes != null) { - result = dataTypes.validate(result); - } - - if (policyTypes != null) { - result = policyTypes.validate(result); - } - - return (topologyTemplate != null ? topologyTemplate.validate(result) : result); - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaServiceTemplate other = (ToscaServiceTemplate) otherConcept; - if (!super.equals(other)) { - return super.compareTo(other); - } - - int result = ObjectUtils.compare(toscaDefinitionsVersion, other.toscaDefinitionsVersion); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(dataTypes, other.dataTypes); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(policyTypes, other.policyTypes); - if (result != 0) { - return result; - } - - return ObjectUtils.compare(topologyTemplate, other.topologyTemplate); - } - - @Override - public PfConcept copyTo(@NonNull PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, PfConcept.class); - - final ToscaServiceTemplate copy = ((ToscaServiceTemplate) copyObject); - super.copyTo(target); - copy.setToscaDefinitionsVersion(toscaDefinitionsVersion); - - copy.setDataTypes(dataTypes != null ? new ToscaDataTypes(dataTypes) : null); - copy.setPolicyTypes(policyTypes != null ? new ToscaPolicyTypes(policyTypes) : null); - copy.setTopologyTemplate(topologyTemplate != null ? new ToscaTopologyTemplate(topologyTemplate) : null); - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaServiceTemplates.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaServiceTemplates.java deleted file mode 100644 index 33d774889..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaServiceTemplates.java +++ /dev/null @@ -1,86 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.Map; -import java.util.TreeMap; - -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import org.onap.policy.models.base.PfConceptContainer; -import org.onap.policy.models.base.PfConceptKey; - -/** - * This class is a container for TOSCA service templates. - * - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaServiceTemplates") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = true) -public class ToscaServiceTemplates extends PfConceptContainer { - private static final long serialVersionUID = -3053257884307604114L; - - /** - * The Default Constructor creates a {@link ToscaServiceTemplates} object with a null artifact - * key and creates an empty concept map. - */ - public ToscaServiceTemplates() { - super(new PfConceptKey()); - } - - /** - * The Key Constructor creates a {@link ToscaServiceTemplates} object with the given artifact - * key and creates an empty concept map. - * - * @param key the concept key - */ - public ToscaServiceTemplates(final PfConceptKey key) { - super(key, new TreeMap()); - } - - /** - * This Constructor creates an concept container with all of its fields defined. - * - * @param key the concept container key - * @param conceptMap the concepts to be stored in the concept container - */ - public ToscaServiceTemplates(final PfConceptKey key, final Map conceptMap) { - super(key, conceptMap); - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaServiceTemplates(final ToscaServiceTemplates copyConcept) { - super(copyConcept); - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTimeInterval.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTimeInterval.java deleted file mode 100644 index 69c7c6c97..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTimeInterval.java +++ /dev/null @@ -1,188 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import com.google.gson.annotations.SerializedName; - -import java.util.Date; -import java.util.List; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Class to represent the TimeInterval in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - * - */ -@Entity -@Table(name = "ToscaTimeInterval") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = false) -public class ToscaTimeInterval extends PfConcept { - private static final long serialVersionUID = 9151467029611969980L; - - @EmbeddedId - private PfReferenceKey key; - - @SerializedName("start_time") - private Date startTime; - - @SerializedName("end_time") - private Date endTime; - - /** - * The Default Constructor creates a {@link ToscaTimeInterval} object with a null key. - */ - public ToscaTimeInterval() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaTimeInterval} object with the given concept key. - * - * @param key the key - */ - public ToscaTimeInterval(@NonNull final PfReferenceKey key) { - this(key, new Date(0), new Date(0)); - } - - /** - * The full constructor creates a {@link ToscaTimeInterval} object with all fields. - * - * @param key the key - */ - public ToscaTimeInterval(@NonNull final PfReferenceKey key, @NonNull final Date startTime, - @NonNull final Date endTime) { - this.key = key; - this.startTime = startTime; - this.endTime = endTime; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaTimeInterval(final ToscaTimeInterval copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - return getKey().getKeys(); - } - - @Override - public void clean() { - key.clean(); - } - - @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (key.isNullKey()) { - result.addValidationMessage( - new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); - } - - result = key.validate(result); - - if (startTime == null || startTime.getTime() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "start time on time interval may not be null or zero")); - } - - if (endTime == null || endTime.getTime() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "end time on time interval may not be null or zero")); - } - - if (startTime != null && endTime != null && endTime.before(startTime)) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "end time \"" + endTime.toString() + "\" on time interval may not be before start time \"" - + startTime.toString() + "\"")); - } - - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaTimeInterval other = (ToscaTimeInterval) otherConcept; - if (!key.equals(other.key)) { - return key.compareTo(other.key); - } - - int returnVal = PfUtils.compareObjects(startTime, other.startTime); - if (returnVal != 0) { - return returnVal; - } - - return PfUtils.compareObjects(endTime, other.endTime); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, ToscaTimeInterval.class); - - final ToscaTimeInterval copy = ((ToscaTimeInterval) copyObject); - copy.setKey(new PfReferenceKey(key)); - copy.setStartTime(startTime); - copy.setEndTime(endTime); - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTopologyTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTopologyTemplate.java deleted file mode 100644 index 5b21ca0c1..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTopologyTemplate.java +++ /dev/null @@ -1,181 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import java.util.List; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.OneToOne; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * This class holds a TOSCA topology template. Note: Only the policy specific parts of the TOSCA topology template are - * implemented. - * - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaTopologyTemplate") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = false) -public class ToscaTopologyTemplate extends PfConcept { - private static final long serialVersionUID = 8969698734673232603L; - - public static final String DEFAULT_LOCAL_NAME = "ToscaTopologyTemplateSimple"; - - @EmbeddedId - private PfReferenceKey key; - - @Column(name = "description") - private String description; - - @OneToOne(cascade = CascadeType.ALL) - private ToscaPolicies policies; - - /** - * The Default Constructor creates a {@link ToscaTopologyTemplate} object with a null key. - */ - public ToscaTopologyTemplate() { - this(new PfReferenceKey(ToscaServiceTemplate.DEFAULT_NAME, ToscaServiceTemplate.DEFAULT_VERSION, - DEFAULT_LOCAL_NAME)); - } - - /** - * The Key Constructor creates a {@link ToscaTopologyTemplate} object with the given concept - * key. - * - * @param key the key - */ - public ToscaTopologyTemplate(@NonNull final PfReferenceKey key) { - this.key = key; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaTopologyTemplate(final ToscaTopologyTemplate copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - final List keyList = getKey().getKeys(); - - if (policies != null) { - keyList.addAll(policies.getKeys()); - } - - return keyList; - } - - @Override - public void clean() { - key.clean(); - - description = (description != null ? description.trim() : null); - - if (policies != null) { - policies.clean(); - } - } - - @Override - public PfValidationResult validate(PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (key.isNullKey()) { - result.addValidationMessage( - new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); - } - - result = key.validate(result); - - if (description != null && description.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "property description may not be blank")); - } - - if (policies != null) { - result = policies.validate(result); - } - - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaTopologyTemplate other = (ToscaTopologyTemplate) otherConcept; - if (!key.equals(other.key)) { - return key.compareTo(other.key); - } - - int result = ObjectUtils.compare(description, other.description); - if (result != 0) { - return result; - } - - return ObjectUtils.compare(policies, other.policies); - } - - @Override - public PfConcept copyTo(@NonNull PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, PfConcept.class); - - final ToscaTopologyTemplate copy = ((ToscaTopologyTemplate) copyObject); - copy.setKey(new PfReferenceKey(key)); - copy.setDescription(description); - copy.setPolicies(policies != null ? new ToscaPolicies(policies) : null); - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTrigger.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTrigger.java deleted file mode 100644 index d772d554e..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/ToscaTrigger.java +++ /dev/null @@ -1,335 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP Policy Model - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.concepts; - -import com.google.gson.annotations.SerializedName; - -import java.time.Duration; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NonNull; - -import org.apache.commons.lang3.ObjectUtils; -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.common.utils.validation.ParameterValidationUtils; -import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; - -/** - * Class to represent the trigger of policy type in TOSCA definition. - * - * @author Chenfei Gao (cgao@research.att.com) - * @author Liam Fallon (liam.fallon@est.tech) - */ -@Entity -@Table(name = "ToscaTrigger") -@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) -@Data -@EqualsAndHashCode(callSuper = false) -public class ToscaTrigger extends PfConcept { - private static final long serialVersionUID = -6515211640208986971L; - - @EmbeddedId - private PfReferenceKey key; - - @Column - private String description; - - @Column - @SerializedName("event_type") - private String eventType; - - @Column - @SerializedName("schedule") - private ToscaTimeInterval schedule; - - @Column - @SerializedName("target_filter") - private ToscaEventFilter targetFilter; - - @Column - private ToscaConstraint condition; - - @Column - private ToscaConstraint constraint; - - @Column - @SerializedName("period") - private Duration period; - - @Column - private int evaluations = 0; - - @Column - private String method; - - @Column - private String action; - - /** - * The Default Constructor creates a {@link ToscaTrigger} object with a null key. - */ - public ToscaTrigger() { - this(new PfReferenceKey()); - } - - /** - * The Key Constructor creates a {@link ToscaTrigger} object with the given concept key. - * - * @param key the key - */ - public ToscaTrigger(@NonNull final PfReferenceKey key) { - this(key, "", ""); - } - - /** - * The full Constructor creates a {@link ToscaTrigger} object with all mandatory objects. - * - * @param key the key - * @param eventType the event type - * @param action the trigger action - */ - public ToscaTrigger(@NonNull final PfReferenceKey key, @NonNull final String eventType, - @NonNull final String action) { - this.key = key; - this.eventType = eventType; - this.action = action; - } - - /** - * Copy constructor. - * - * @param copyConcept the concept to copy from - */ - public ToscaTrigger(final ToscaTrigger copyConcept) { - super(copyConcept); - } - - @Override - public List getKeys() { - final List keyList = getKey().getKeys(); - if (schedule != null) { - keyList.addAll(schedule.getKeys()); - } - if (targetFilter != null) { - keyList.addAll(targetFilter.getKeys()); - } - if (condition != null) { - keyList.addAll(condition.getKeys()); - } - if (constraint != null) { - keyList.addAll(constraint.getKeys()); - } - return keyList; - } - - @Override - public void clean() { - key.clean(); - - description = (description != null ? description.trim() : description); - eventType = eventType.trim(); - - if (schedule != null) { - schedule.clean(); - } - if (targetFilter != null) { - targetFilter.clean(); - } - if (condition != null) { - condition.clean(); - } - if (constraint != null) { - constraint.clean(); - } - - method = (method != null ? method.trim() : method); - action = action.trim(); - } - - @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - if (key.isNullKey()) { - result.addValidationMessage( - new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key")); - } - - result = key.validate(result); - - if (description != null && description.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "trigger description may not be blank")); - } - - if (!ParameterValidationUtils.validateStringParameter(eventType)) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "event type on trigger must be defined")); - } - - result = validateOptionalFields(result); - - if (evaluations < 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "evaluations on trigger must be zero or a positive integer")); - } - - if (method != null && method.trim().length() == 0) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "method on trigger may not be blank")); - } - - if (!ParameterValidationUtils.validateStringParameter(action)) { - result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, - "action on trigger must be defined")); - } - - return result; - } - - /** - * Validate optional fields. - * - * @param resultIn the validation result so far - * @return the validation resutls including these fields - */ - private PfValidationResult validateOptionalFields(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - result = (schedule != null ? schedule.validate(result) : result); - result = (targetFilter != null ? targetFilter.validate(result) : result); - result = (condition != null ? condition.validate(result) : result); - result = (constraint != null ? constraint.validate(result) : result); - - return result; - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } - if (this == otherConcept) { - return 0; - } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final ToscaTrigger other = (ToscaTrigger) otherConcept; - if (!key.equals(other.key)) { - return key.compareTo(other.key); - } - - return compareFields(other); - } - - /** - * Compare the fields of this ToscaTrigger object with the fields of the other ToscaProperty - * object. - * - * @param other the other ToscaTrigger object - */ - private int compareFields(final ToscaTrigger other) { - int result = ObjectUtils.compare(description, other.description); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(eventType, other.eventType); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(schedule, other.schedule); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(targetFilter, other.targetFilter); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(condition, other.condition); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(constraint, other.constraint); - if (result != 0) { - return result; - } - - result = ObjectUtils.compare(period, other.period); - if (result != 0) { - return result; - } - - if (evaluations != other.evaluations) { - return evaluations - other.evaluations; - } - - result = ObjectUtils.compare(method, other.method); - if (result != 0) { - return result; - } - - return ObjectUtils.compare(action, other.action); - } - - @Override - public PfConcept copyTo(@NonNull final PfConcept target) { - Assertions.instanceOf(target, ToscaTrigger.class); - - final ToscaTrigger copy = ((ToscaTrigger) target); - copy.setKey(new PfReferenceKey(key)); - copy.setDescription(description); - copy.setEventType(eventType); - copy.setSchedule(schedule != null ? new ToscaTimeInterval(schedule) : null); - copy.setTargetFilter(targetFilter != null ? new ToscaEventFilter(targetFilter) : null); - copy.setCondition(condition); - copy.setConstraint(constraint); - copy.setPeriod(period); - copy.setEvaluations(evaluations); - copy.setMethod(method); - copy.setAction(action); - - return copy; - } -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/mapping/JpaToscaServiceTemplateMapper.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/mapping/JpaToscaServiceTemplateMapper.java new file mode 100644 index 000000000..e7a4056f7 --- /dev/null +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/mapping/JpaToscaServiceTemplateMapper.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.mapping; + +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; + +/** + * This interface is used to map legacy and proprietary policies into and out of TOSCA service templates. + * + * @author Liam Fallon (liam.fallon@est.tech) + * @param the type for the incoming policy definition + * @param the type for the outgoing policy definition + */ +public interface JpaToscaServiceTemplateMapper { + + /** + * Translate from the other format to a TOSCA service template. + * + * @param otherPolicyType the other policy type + * @return the TOSCA service template + */ + public JpaToscaServiceTemplate toToscaServiceTemplate(final I otherPolicyType); + + /** + * Translate to the other format from a TOSCA service template. + * + * @param serviceTemplate the TOSCA service template + * @return the policy in the other format + */ + public O fromToscaServiceTemplate(final JpaToscaServiceTemplate serviceTemplate); +} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/mapping/ToscaServiceTemplateMapper.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/mapping/ToscaServiceTemplateMapper.java deleted file mode 100644 index 6dcbfe694..000000000 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/mapping/ToscaServiceTemplateMapper.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.simple.mapping; - -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; - -/** - * This interface is used to map legacy and proprietary policies into and out of TOSCA service templates. - * - * @author Liam Fallon (liam.fallon@est.tech) - * @param the type for the incoming policy definition - * @param the type for the outgoing policy definition - */ -public interface ToscaServiceTemplateMapper { - - /** - * Translate from the other format to a TOSCA service template. - * - * @param otherPolicyType the other policy type - * @return the TOSCA service template - */ - public ToscaServiceTemplate toToscaServiceTemplate(final I otherPolicyType); - - /** - * Translate to the other format from a TOSCA service template. - * - * @param serviceTemplate the TOSCA service template - * @return the policy in the other format - */ - public O fromToscaServiceTemplate(final ToscaServiceTemplate serviceTemplate); -} diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java index c7984c5ea..6e356d0ab 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java @@ -28,12 +28,12 @@ import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.dao.PfDao; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicies; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicyType; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicyTypes; -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate; import org.onap.policy.models.tosca.utils.ToscaUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,15 +55,15 @@ public class SimpleToscaProvider { * @return the policy types found * @throws PfModelException on errors getting policy types */ - public ToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, @NonNull final PfConceptKey policyTypeKey) + public JpaToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, @NonNull final PfConceptKey policyTypeKey) throws PfModelException { // Create the structure of the TOSCA service template to contain the policy type - ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setPolicyTypes(new ToscaPolicyTypes()); + JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); + serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes()); // Add the policy type to the TOSCA service template - ToscaPolicyType policyType = dao.get(ToscaPolicyType.class, policyTypeKey); + JpaToscaPolicyType policyType = dao.get(JpaToscaPolicyType.class, policyTypeKey); if (policyType != null) { serviceTemplate.getPolicyTypes().getConceptMap().put(policyTypeKey, policyType); return serviceTemplate; @@ -82,23 +82,23 @@ public class SimpleToscaProvider { * @return the TOSCA service template containing the created policy types * @throws PfModelException on errors creating policy types */ - public ToscaServiceTemplate createPolicyTypes(@NonNull final PfDao dao, - @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { + public JpaToscaServiceTemplate createPolicyTypes(@NonNull final PfDao dao, + @NonNull final JpaToscaServiceTemplate serviceTemplate) throws PfModelException { ToscaUtils.assertPolicyTypesExist(serviceTemplate); - for (ToscaPolicyType policyType : serviceTemplate.getPolicyTypes().getAll(null)) { + for (JpaToscaPolicyType policyType : serviceTemplate.getPolicyTypes().getAll(null)) { dao.create(policyType); } // Return the created policy types - ToscaPolicyTypes returnPolicyTypes = new ToscaPolicyTypes(); + JpaToscaPolicyTypes returnPolicyTypes = new JpaToscaPolicyTypes(); for (PfConceptKey policyTypeKey : serviceTemplate.getPolicyTypes().getConceptMap().keySet()) { - returnPolicyTypes.getConceptMap().put(policyTypeKey, dao.get(ToscaPolicyType.class, policyTypeKey)); + returnPolicyTypes.getConceptMap().put(policyTypeKey, dao.get(JpaToscaPolicyType.class, policyTypeKey)); } - ToscaServiceTemplate returnServiceTemplate = new ToscaServiceTemplate(); + JpaToscaServiceTemplate returnServiceTemplate = new JpaToscaServiceTemplate(); returnServiceTemplate.setPolicyTypes(returnPolicyTypes); return returnServiceTemplate; @@ -112,23 +112,23 @@ public class SimpleToscaProvider { * @return the TOSCA service template containing the modified policy types * @throws PfModelException on errors updating policy types */ - public ToscaServiceTemplate updatePolicyTypes(@NonNull final PfDao dao, - @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { + public JpaToscaServiceTemplate updatePolicyTypes(@NonNull final PfDao dao, + @NonNull final JpaToscaServiceTemplate serviceTemplate) throws PfModelException { ToscaUtils.assertPolicyTypesExist(serviceTemplate); - for (ToscaPolicyType policyType : serviceTemplate.getPolicyTypes().getAll(null)) { + for (JpaToscaPolicyType policyType : serviceTemplate.getPolicyTypes().getAll(null)) { dao.update(policyType); } // Return the created policy types - ToscaPolicyTypes returnPolicyTypes = new ToscaPolicyTypes(); + JpaToscaPolicyTypes returnPolicyTypes = new JpaToscaPolicyTypes(); for (PfConceptKey policyTypeKey : serviceTemplate.getPolicyTypes().getConceptMap().keySet()) { - returnPolicyTypes.getConceptMap().put(policyTypeKey, dao.get(ToscaPolicyType.class, policyTypeKey)); + returnPolicyTypes.getConceptMap().put(policyTypeKey, dao.get(JpaToscaPolicyType.class, policyTypeKey)); } - ToscaServiceTemplate returnServiceTemplate = new ToscaServiceTemplate(); + JpaToscaServiceTemplate returnServiceTemplate = new JpaToscaServiceTemplate(); returnServiceTemplate.setPolicyTypes(returnPolicyTypes); return returnServiceTemplate; @@ -143,12 +143,13 @@ public class SimpleToscaProvider { * @return the TOSCA service template containing the policy types that were deleted * @throws PfModelException on errors deleting policy types */ - public ToscaServiceTemplate deletePolicyTypes(@NonNull final PfDao dao, @NonNull final PfConceptKey policyTypeKey) + public JpaToscaServiceTemplate deletePolicyTypes(@NonNull final PfDao dao, + @NonNull final PfConceptKey policyTypeKey) throws PfModelException { - ToscaServiceTemplate serviceTemplate = getPolicyTypes(dao, policyTypeKey); + JpaToscaServiceTemplate serviceTemplate = getPolicyTypes(dao, policyTypeKey); - dao.delete(ToscaPolicyType.class, policyTypeKey); + dao.delete(JpaToscaPolicyType.class, policyTypeKey); return serviceTemplate; } @@ -162,16 +163,16 @@ public class SimpleToscaProvider { * @return the policies found * @throws PfModelException on errors getting policies */ - public ToscaServiceTemplate getPolicies(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey) + public JpaToscaServiceTemplate getPolicies(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey) throws PfModelException { // Create the structure of the TOSCA service template to contain the policy type - ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplate()); - serviceTemplate.getTopologyTemplate().setPolicies(new ToscaPolicies()); + JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); + serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate()); + serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); // Add the policy to the TOSCA service template - ToscaPolicy policy = dao.get(ToscaPolicy.class, policyKey); + JpaToscaPolicy policy = dao.get(JpaToscaPolicy.class, policyKey); if (policy != null) { serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(policyKey, policy); return serviceTemplate; @@ -190,21 +191,21 @@ public class SimpleToscaProvider { * @return the TOSCA service template containing the policy types that were created * @throws PfModelException on errors creating policies */ - public ToscaServiceTemplate createPolicies(@NonNull final PfDao dao, - @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { + public JpaToscaServiceTemplate createPolicies(@NonNull final PfDao dao, + @NonNull final JpaToscaServiceTemplate serviceTemplate) throws PfModelException { ToscaUtils.assertPoliciesExist(serviceTemplate); - for (ToscaPolicy policy : serviceTemplate.getTopologyTemplate().getPolicies().getAll(null)) { + for (JpaToscaPolicy policy : serviceTemplate.getTopologyTemplate().getPolicies().getAll(null)) { dao.create(policy); } // Return the created policy types - ToscaPolicies returnPolicies = new ToscaPolicies(); + JpaToscaPolicies returnPolicies = new JpaToscaPolicies(); returnPolicies.setKey(serviceTemplate.getTopologyTemplate().getPolicies().getKey()); for (PfConceptKey policyKey : serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().keySet()) { - returnPolicies.getConceptMap().put(policyKey, dao.get(ToscaPolicy.class, policyKey)); + returnPolicies.getConceptMap().put(policyKey, dao.get(JpaToscaPolicy.class, policyKey)); } serviceTemplate.getTopologyTemplate().setPolicies(returnPolicies); @@ -220,21 +221,21 @@ public class SimpleToscaProvider { * @return the TOSCA service template containing the policies that were updated * @throws PfModelException on errors updating policies */ - public ToscaServiceTemplate updatePolicies(@NonNull final PfDao dao, - @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { + public JpaToscaServiceTemplate updatePolicies(@NonNull final PfDao dao, + @NonNull final JpaToscaServiceTemplate serviceTemplate) throws PfModelException { ToscaUtils.assertPoliciesExist(serviceTemplate); - for (ToscaPolicy policy : serviceTemplate.getTopologyTemplate().getPolicies().getAll(null)) { + for (JpaToscaPolicy policy : serviceTemplate.getTopologyTemplate().getPolicies().getAll(null)) { dao.update(policy); } // Return the created policy types - ToscaPolicies returnPolicies = new ToscaPolicies(); + JpaToscaPolicies returnPolicies = new JpaToscaPolicies(); returnPolicies.setKey(serviceTemplate.getTopologyTemplate().getPolicies().getKey()); for (PfConceptKey policyKey : serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().keySet()) { - returnPolicies.getConceptMap().put(policyKey, dao.get(ToscaPolicy.class, policyKey)); + returnPolicies.getConceptMap().put(policyKey, dao.get(JpaToscaPolicy.class, policyKey)); } serviceTemplate.getTopologyTemplate().setPolicies(returnPolicies); @@ -250,12 +251,12 @@ public class SimpleToscaProvider { * @return the TOSCA service template containing the policies that were deleted * @throws PfModelException on errors deleting policies */ - public ToscaServiceTemplate deletePolicies(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey) + public JpaToscaServiceTemplate deletePolicies(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey) throws PfModelException { - ToscaServiceTemplate serviceTemplate = getPolicies(dao, policyKey); + JpaToscaServiceTemplate serviceTemplate = getPolicies(dao, policyKey); - dao.delete(ToscaPolicy.class, policyKey); + dao.delete(JpaToscaPolicy.class, policyKey); return serviceTemplate; } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypeJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypeJsonAdapter.java index 65e3d4ebf..6b00b20b6 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypeJsonAdapter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypeJsonAdapter.java @@ -34,8 +34,8 @@ import lombok.NonNull; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.tosca.simple.concepts.ToscaDataType; -import org.onap.policy.models.tosca.simple.concepts.ToscaProperty; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory; * * @author Chenfei Gao (cgao@research.att.com) */ -public class ToscaDataTypeJsonAdapter implements JsonSerializer, JsonDeserializer { +public class ToscaDataTypeJsonAdapter implements JsonSerializer, JsonDeserializer { private static final Logger LOGGER = LoggerFactory.getLogger(ToscaDataTypeJsonAdapter.class); @@ -55,7 +55,7 @@ public class ToscaDataTypeJsonAdapter implements JsonSerializer, private static final String DEFAULT_VERSION = "1.0.0"; @Override - public ToscaDataType deserialize(@NonNull final JsonElement dataTypeElement, @NonNull final Type type, + public JpaToscaDataType deserialize(@NonNull final JsonElement dataTypeElement, @NonNull final Type type, @NonNull final JsonDeserializationContext context) { // The incoming JSON @@ -79,7 +79,7 @@ public class ToscaDataTypeJsonAdapter implements JsonSerializer, } else { dataTypeKey = new PfConceptKey(dataTypeName, dataTypeJsonObject.get(VERSION).getAsString()); } - ToscaDataType dataType = new ToscaDataType(dataTypeKey); + JpaToscaDataType dataType = new JpaToscaDataType(dataTypeKey); // Set derived_from dataType.setDerivedFrom(new PfConceptKey(dataTypeJsonObject.get(DERIVED_FROM).getAsString(), @@ -95,7 +95,7 @@ public class ToscaDataTypeJsonAdapter implements JsonSerializer, if (dataTypeJsonObject.has(PROPERTIES)) { dataType.setProperties( new ToscaPropertiesJsonAdapter().deserializeProperties(dataTypeJsonObject.get(PROPERTIES))); - for (ToscaProperty property : dataType.getProperties()) { + for (JpaToscaProperty property : dataType.getProperties()) { property.getKey().setParentConceptKey(dataTypeKey); property.getType().setVersion(dataType.getKey().getVersion()); } @@ -105,7 +105,7 @@ public class ToscaDataTypeJsonAdapter implements JsonSerializer, } @Override - public JsonElement serialize(@NonNull final ToscaDataType dataType, @NonNull final Type type, + public JsonElement serialize(@NonNull final JpaToscaDataType dataType, @NonNull final Type type, @NonNull final JsonSerializationContext context) { JsonObject dataTypeValJsonObject = new JsonObject(); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypesJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypesJsonAdapter.java index 387b499cf..6131581ad 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypesJsonAdapter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypesJsonAdapter.java @@ -34,8 +34,8 @@ import lombok.NonNull; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.tosca.simple.concepts.ToscaDataType; -import org.onap.policy.models.tosca.simple.concepts.ToscaDataTypes; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,12 +44,13 @@ import org.slf4j.LoggerFactory; * * @author Chenfei Gao (cgao@research.att.com) */ -public class ToscaDataTypesJsonAdapter implements JsonSerializer, JsonDeserializer { +public class ToscaDataTypesJsonAdapter + implements JsonSerializer, JsonDeserializer { private static final Logger LOGGER = LoggerFactory.getLogger(ToscaDataTypesJsonAdapter.class); @Override - public ToscaDataTypes deserialize(@NonNull final JsonElement dataTypesElement, @NonNull final Type type, + public JpaToscaDataTypes deserialize(@NonNull final JsonElement dataTypesElement, @NonNull final Type type, @NonNull final JsonDeserializationContext context) { // The incoming JSON @@ -57,13 +58,13 @@ public class ToscaDataTypesJsonAdapter implements JsonSerializer // The outgoing object final PfConceptKey dataTypesKey = new PfConceptKey("IncomingDataTypes", "0.0.1"); - final ToscaDataTypes dataTypes = new ToscaDataTypes(dataTypesKey); + final JpaToscaDataTypes dataTypes = new JpaToscaDataTypes(dataTypesKey); // Get the dataTypes Iterator dataTypesIterator = dataTypesJsonArray.iterator(); while (dataTypesIterator.hasNext()) { - ToscaDataType dataType = new ToscaDataTypeJsonAdapter() - .deserialize(dataTypesIterator.next(), ToscaDataType.class, context); + JpaToscaDataType dataType = new ToscaDataTypeJsonAdapter().deserialize(dataTypesIterator.next(), + JpaToscaDataType.class, context); dataTypes.getConceptMap().put(dataType.getKey(), dataType); } @@ -72,7 +73,7 @@ public class ToscaDataTypesJsonAdapter implements JsonSerializer } @Override - public JsonElement serialize(@NonNull final ToscaDataTypes dataTypes, @NonNull final Type type, + public JsonElement serialize(@NonNull final JpaToscaDataTypes dataTypes, @NonNull final Type type, @NonNull final JsonSerializationContext context) { JsonArray dataTypesJsonArray = new JsonArray(); @@ -83,8 +84,8 @@ public class ToscaDataTypesJsonAdapter implements JsonSerializer throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, errorMessage); } - for (ToscaDataType dataType: dataTypes.getConceptMap().values()) { - JsonElement dataTypeEntry = new ToscaDataTypeJsonAdapter().serialize(dataType, type, context); + for (JpaToscaDataType dataType : dataTypes.getConceptMap().values()) { + JsonElement dataTypeEntry = new ToscaDataTypeJsonAdapter().serialize(dataType, type, context); dataTypesJsonArray.add(dataTypeEntry); } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPoliciesJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPoliciesJsonAdapter.java index 4b1b53c79..ca0e3d937 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPoliciesJsonAdapter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPoliciesJsonAdapter.java @@ -33,8 +33,8 @@ import java.util.Iterator; import lombok.NonNull; import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicies; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy; /** * GSON type adapter for TOSCA policies. @@ -42,22 +42,22 @@ import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; * @author Liam Fallon (liam.fallon@est.tech) * @author Chenfei Gao (cgao@research.att.com) */ -public class ToscaPoliciesJsonAdapter implements JsonSerializer, JsonDeserializer { +public class ToscaPoliciesJsonAdapter implements JsonSerializer, JsonDeserializer { @Override - public ToscaPolicies deserialize(@NonNull final JsonElement policiesElement, @NonNull final Type type, + public JpaToscaPolicies deserialize(@NonNull final JsonElement policiesElement, @NonNull final Type type, @NonNull final JsonDeserializationContext context) { // The incoming JSON final JsonArray policiesJsonArray = policiesElement.getAsJsonArray(); // The outgoing object final PfConceptKey policiesKey = new PfConceptKey("IncomingPolicies", "0.0.1"); - final ToscaPolicies policies = new ToscaPolicies(policiesKey); + final JpaToscaPolicies policies = new JpaToscaPolicies(policiesKey); // Get the policies for (Iterator policiesIterator = policiesJsonArray.iterator(); policiesIterator.hasNext(); ) { - ToscaPolicy policy = new ToscaPolicyJsonAdapter() - .deserialize(policiesIterator.next(), ToscaPolicy.class, context); + JpaToscaPolicy policy = new ToscaPolicyJsonAdapter() + .deserialize(policiesIterator.next(), JpaToscaPolicy.class, context); policies.getConceptMap().put(policy.getKey(), policy); } @@ -66,12 +66,12 @@ public class ToscaPoliciesJsonAdapter implements JsonSerializer, } @Override - public JsonElement serialize(@NonNull final ToscaPolicies policies, @NonNull final Type type, + public JsonElement serialize(@NonNull final JpaToscaPolicies policies, @NonNull final Type type, @NonNull final JsonSerializationContext context) { JsonArray policiesJsonArray = new JsonArray(); - for (ToscaPolicy policy: policies.getConceptMap().values()) { + for (JpaToscaPolicy policy: policies.getConceptMap().values()) { policiesJsonArray.add(new ToscaPolicyJsonAdapter().serialize(policy, type, context)); } return policiesJsonArray; diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyJsonAdapter.java index b52634b83..6b666e214 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyJsonAdapter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyJsonAdapter.java @@ -40,7 +40,7 @@ import lombok.NonNull; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,7 +50,7 @@ import org.slf4j.LoggerFactory; * @author Liam Fallon (liam.fallon@est.tech) * @author Chenfei Gao (cgao@research.att.com) */ -public class ToscaPolicyJsonAdapter implements JsonSerializer, JsonDeserializer { +public class ToscaPolicyJsonAdapter implements JsonSerializer, JsonDeserializer { // Logger for this class private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyJsonAdapter.class); @@ -63,7 +63,7 @@ public class ToscaPolicyJsonAdapter implements JsonSerializer, Json private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); @Override - public ToscaPolicy deserialize(@NonNull final JsonElement policyElement, @NonNull final Type type, + public JpaToscaPolicy deserialize(@NonNull final JsonElement policyElement, @NonNull final Type type, @NonNull final JsonDeserializationContext context) { // The incoming JSON @@ -85,7 +85,7 @@ public class ToscaPolicyJsonAdapter implements JsonSerializer, Json PfConceptKey policyTypeKey = new PfConceptKey( policyJsonObject.get(TYPE).getAsString(), policyJsonObject.get(VERSION).getAsString()); - ToscaPolicy policy = new ToscaPolicy(policyKey, policyTypeKey); + JpaToscaPolicy policy = new JpaToscaPolicy(policyKey, policyTypeKey); // Set description if (policyJsonObject.has(DESCRIPTION)) { @@ -121,7 +121,7 @@ public class ToscaPolicyJsonAdapter implements JsonSerializer, Json } @Override - public JsonElement serialize(@NonNull final ToscaPolicy policy, @NonNull final Type type, + public JsonElement serialize(@NonNull final JpaToscaPolicy policy, @NonNull final Type type, @NonNull final JsonSerializationContext context) { JsonObject policyValJsonObject = new JsonObject(); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypeJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypeJsonAdapter.java index 3bf98572f..a96642261 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypeJsonAdapter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypeJsonAdapter.java @@ -33,8 +33,8 @@ import lombok.NonNull; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicyType; -import org.onap.policy.models.tosca.simple.concepts.ToscaProperty; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +43,8 @@ import org.slf4j.LoggerFactory; * * @author Chenfei Gao (cgao@research.att.com) */ -public class ToscaPolicyTypeJsonAdapter implements JsonSerializer, JsonDeserializer { +public class ToscaPolicyTypeJsonAdapter + implements JsonSerializer, JsonDeserializer { private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyTypeJsonAdapter.class); @@ -54,7 +55,7 @@ public class ToscaPolicyTypeJsonAdapter implements JsonSerializer, - JsonDeserializer { +public class ToscaPolicyTypesJsonAdapter implements JsonSerializer, + JsonDeserializer { private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyTypesJsonAdapter.class); @Override - public ToscaPolicyTypes deserialize(@NonNull final JsonElement policyTypesElement, @NonNull final Type type, + public JpaToscaPolicyTypes deserialize(@NonNull final JsonElement policyTypesElement, @NonNull final Type type, @NonNull final JsonDeserializationContext context) { // The incoming JSON @@ -58,13 +58,13 @@ public class ToscaPolicyTypesJsonAdapter implements JsonSerializer policyTypesIterator = policyTypesJsonArray.iterator(); while (policyTypesIterator.hasNext()) { - ToscaPolicyType policyType = new ToscaPolicyTypeJsonAdapter() - .deserialize(policyTypesIterator.next(), ToscaPolicyType.class, context); + JpaToscaPolicyType policyType = new ToscaPolicyTypeJsonAdapter() + .deserialize(policyTypesIterator.next(), JpaToscaPolicyType.class, context); policyTypes.getConceptMap().put(policyType.getKey(), policyType); } @@ -73,7 +73,7 @@ public class ToscaPolicyTypesJsonAdapter implements JsonSerializer deserializeProperties(JsonElement propertiesElement) { + public List deserializeProperties(JsonElement propertiesElement) { final JsonObject propertiesMapObject = propertiesElement.getAsJsonObject(); - List properties = new LinkedList<>(); + List properties = new LinkedList<>(); for (Entry entry : propertiesMapObject.entrySet()) { final String propertyEntryKey = entry.getKey(); final JsonElement propertyEntryVal = entry.getValue(); // Set property: key and type - ToscaProperty property = new ToscaProperty( + JpaToscaProperty property = new JpaToscaProperty( new PfReferenceKey(new PfConceptKey(), propertyEntryKey), new PfConceptKey(propertyEntryVal.getAsJsonObject().get(TYPE).getAsString(), DEFAULT_VERSION)); @@ -110,7 +110,7 @@ public class ToscaPropertiesJsonAdapter { // Set property: constraints if (propertyJsonObject.has(CONSTRAINTS)) { property.setConstraints(deserializeConstraints(propertyJsonObject.get(CONSTRAINTS))); - for (ToscaConstraint c : property.getConstraints()) { + for (JpaToscaConstraint c : property.getConstraints()) { c.getKey().setParentConceptKey(property.getType()); } } @@ -129,11 +129,11 @@ public class ToscaPropertiesJsonAdapter { * * @return serialized JsonElement */ - public JsonElement serializeProperties(List properties) { + public JsonElement serializeProperties(List properties) { JsonObject propertiesJsonObject = new JsonObject(); - for (ToscaProperty property : properties) { + for (JpaToscaProperty property : properties) { JsonObject propertyValJsonObject = new JsonObject(); // Add type @@ -168,23 +168,23 @@ public class ToscaPropertiesJsonAdapter { return propertiesJsonObject; } - private JsonElement serializeConstraints(List constraints) { + private JsonElement serializeConstraints(List constraints) { JsonArray constraintsValJsonArray = new JsonArray(); - for (ToscaConstraint c : constraints) { + for (JpaToscaConstraint c : constraints) { JsonObject constraintJsonObject = new JsonObject(); // Check which type of constraint it is // TODO: here we only support valid_values and equal - if (c instanceof ToscaConstraintValidValues) { + if (c instanceof JpaToscaConstraintValidValues) { JsonArray validValuesJsonArray = new JsonArray(); - for (String validValue : ((ToscaConstraintValidValues)c).getValidValues()) { + for (String validValue : ((JpaToscaConstraintValidValues)c).getValidValues()) { validValuesJsonArray.add(validValue); } constraintJsonObject.add(VALID_VALUES, validValuesJsonArray); - } else if (c instanceof ToscaConstraintLogicalString) { - constraintJsonObject.addProperty(EQUAL, ((ToscaConstraintLogicalString)c).getCompareToString()); + } else if (c instanceof JpaToscaConstraintLogicalString) { + constraintJsonObject.addProperty(EQUAL, ((JpaToscaConstraintLogicalString)c).getCompareToString()); } else { String errorMessage = "constraint is neither valid_values nor equal"; LOGGER.debug(errorMessage); @@ -197,7 +197,7 @@ public class ToscaPropertiesJsonAdapter { return constraintsValJsonArray; } - private JsonElement serializeEntrySchema(ToscaEntrySchema entrySchema) { + private JsonElement serializeEntrySchema(JpaToscaEntrySchema entrySchema) { JsonObject entrySchemaValJsonObject = new JsonObject(); @@ -217,12 +217,12 @@ public class ToscaPropertiesJsonAdapter { return entrySchemaValJsonObject; } - private ToscaEntrySchema deserializeEntrySchema(JsonElement entrySchemaElement) { + private JpaToscaEntrySchema deserializeEntrySchema(JsonElement entrySchemaElement) { JsonObject entrySchemaJsonObject = entrySchemaElement.getAsJsonObject(); // Set entry_schema: key and type - ToscaEntrySchema entrySchema = new ToscaEntrySchema( + JpaToscaEntrySchema entrySchema = new JpaToscaEntrySchema( new PfReferenceKey(new PfConceptKey(), ENTRY_SCHEMA), new PfConceptKey(entrySchemaJsonObject.get(TYPE).getAsString(), DEFAULT_VERSION)); @@ -234,7 +234,7 @@ public class ToscaPropertiesJsonAdapter { // Set entry_schema: constraints if (entrySchemaJsonObject.has(CONSTRAINTS)) { entrySchema.setConstraints(deserializeConstraints(entrySchemaJsonObject.get(CONSTRAINTS))); - for (ToscaConstraint c : entrySchema.getConstraints()) { + for (JpaToscaConstraint c : entrySchema.getConstraints()) { c.getKey().setParentConceptKey(entrySchema.getType()); } } @@ -242,10 +242,10 @@ public class ToscaPropertiesJsonAdapter { return entrySchema; } - private List deserializeConstraints(JsonElement constraintsElement) { + private List deserializeConstraints(JsonElement constraintsElement) { JsonArray constraintsJsonArray = constraintsElement.getAsJsonArray(); - List constraints = new LinkedList<>(); + List constraints = new LinkedList<>(); for (Iterator constraintsIter = constraintsJsonArray.iterator(); constraintsIter.hasNext(); ) { JsonObject constraintJsonObject = constraintsIter.next().getAsJsonObject(); @@ -257,11 +257,11 @@ public class ToscaPropertiesJsonAdapter { .iterator(); validValuesIter.hasNext(); ) { validValues.add(validValuesIter.next().getAsString()); } - ToscaConstraint constraint = new ToscaConstraintValidValues( + JpaToscaConstraint constraint = new JpaToscaConstraintValidValues( new PfReferenceKey(new PfConceptKey(), VALID_VALUES), validValues); constraints.add(constraint); } else if (constraintJsonObject.get(EQUAL) != null) { - ToscaConstraint constraint = new ToscaConstraintLogicalString(new PfReferenceKey( + JpaToscaConstraint constraint = new JpaToscaConstraintLogicalString(new PfReferenceKey( new PfConceptKey(), EQUAL), Operation.EQ, constraintJsonObject.get(EQUAL).getAsString()); constraints.add(constraint); } else { diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateJsonAdapter.java index 78f3153e2..bb2ace87e 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateJsonAdapter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateJsonAdapter.java @@ -32,10 +32,10 @@ import java.lang.reflect.Type; import lombok.NonNull; -import org.onap.policy.models.tosca.simple.concepts.ToscaDataTypes; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicyTypes; -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate; /** * GSON type adapter for TOSCA policies. @@ -44,7 +44,7 @@ import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; * @author Chenfei Gao (cgao@research.att.com) */ public class ToscaServiceTemplateJsonAdapter - implements JsonSerializer, JsonDeserializer { + implements JsonSerializer, JsonDeserializer { private static final String TOPOLOGY_TEMPLATE = "topology_template"; private static final String TOSCA_DEFINITIONS_VERSION = "tosca_definitions_version"; @@ -52,40 +52,40 @@ public class ToscaServiceTemplateJsonAdapter private static final String DATA_TYPES = "data_types"; @Override - public ToscaServiceTemplate deserialize(@NonNull final JsonElement serviceTemplateElement, @NonNull final Type type, - @NonNull final JsonDeserializationContext context) { + public JpaToscaServiceTemplate deserialize(@NonNull final JsonElement serviceTemplateElement, + @NonNull final Type type, @NonNull final JsonDeserializationContext context) { // The incoming JSON final JsonObject serviceTemplateJsonObject = serviceTemplateElement.getAsJsonObject(); // The outgoing object - final ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); + final JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); serviceTemplate .setToscaDefinitionsVersion(serviceTemplateJsonObject.get(TOSCA_DEFINITIONS_VERSION).getAsString()); // Set topology_template if (serviceTemplateJsonObject.has(TOPOLOGY_TEMPLATE)) { serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplateJsonAdapter().deserialize( - serviceTemplateJsonObject.get(TOPOLOGY_TEMPLATE), ToscaTopologyTemplate.class, context)); + serviceTemplateJsonObject.get(TOPOLOGY_TEMPLATE), JpaToscaTopologyTemplate.class, context)); } // Set policy_types if (serviceTemplateJsonObject.has(POLICY_TYPES)) { serviceTemplate.setPolicyTypes(new ToscaPolicyTypesJsonAdapter() - .deserialize(serviceTemplateJsonObject.get(POLICY_TYPES), ToscaPolicyTypes.class, context)); + .deserialize(serviceTemplateJsonObject.get(POLICY_TYPES), JpaToscaPolicyTypes.class, context)); } // Set data_types if (serviceTemplateJsonObject.has(DATA_TYPES)) { serviceTemplate.setDataTypes(new ToscaDataTypesJsonAdapter() - .deserialize(serviceTemplateJsonObject.get(DATA_TYPES), ToscaDataTypes.class, context)); + .deserialize(serviceTemplateJsonObject.get(DATA_TYPES), JpaToscaDataTypes.class, context)); } return serviceTemplate; } @Override - public JsonElement serialize(@NonNull final ToscaServiceTemplate serviceTemplate, @NonNull final Type type, + public JsonElement serialize(@NonNull final JpaToscaServiceTemplate serviceTemplate, @NonNull final Type type, @NonNull final JsonSerializationContext context) { JsonObject serviceTemplateJsonObject = new JsonObject(); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateMessageBodyHandler.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateMessageBodyHandler.java index c7e78a524..b15a83016 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateMessageBodyHandler.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateMessageBodyHandler.java @@ -21,14 +21,14 @@ package org.onap.policy.models.tosca.simple.serialization; import com.google.gson.GsonBuilder; import org.onap.policy.common.gson.GsonMessageBodyHandler; -import org.onap.policy.models.tosca.simple.concepts.ToscaDataType; -import org.onap.policy.models.tosca.simple.concepts.ToscaDataTypes; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicies; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicyType; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicyTypes; -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,14 +56,14 @@ public class ToscaServiceTemplateMessageBodyHandler extends GsonMessageBodyHandl public ToscaServiceTemplateMessageBodyHandler(final GsonBuilder builder) { // @formatter:off super(builder - .registerTypeAdapter(ToscaServiceTemplate.class, new ToscaServiceTemplateJsonAdapter()) - .registerTypeAdapter(ToscaTopologyTemplate.class, new ToscaTopologyTemplateJsonAdapter()) - .registerTypeAdapter(ToscaPolicies.class, new ToscaPoliciesJsonAdapter()) - .registerTypeAdapter(ToscaPolicy.class, new ToscaPolicyJsonAdapter()) - .registerTypeAdapter(ToscaPolicyTypes.class, new ToscaPolicyTypesJsonAdapter()) - .registerTypeAdapter(ToscaPolicyType.class, new ToscaPolicyTypeJsonAdapter()) - .registerTypeAdapter(ToscaDataTypes.class, new ToscaDataTypesJsonAdapter()) - .registerTypeAdapter(ToscaDataType.class, new ToscaDataTypeJsonAdapter()) + .registerTypeAdapter(JpaToscaServiceTemplate.class, new ToscaServiceTemplateJsonAdapter()) + .registerTypeAdapter(JpaToscaTopologyTemplate.class, new ToscaTopologyTemplateJsonAdapter()) + .registerTypeAdapter(JpaToscaPolicies.class, new ToscaPoliciesJsonAdapter()) + .registerTypeAdapter(JpaToscaPolicy.class, new ToscaPolicyJsonAdapter()) + .registerTypeAdapter(JpaToscaPolicyTypes.class, new ToscaPolicyTypesJsonAdapter()) + .registerTypeAdapter(JpaToscaPolicyType.class, new ToscaPolicyTypeJsonAdapter()) + .registerTypeAdapter(JpaToscaDataTypes.class, new ToscaDataTypesJsonAdapter()) + .registerTypeAdapter(JpaToscaDataType.class, new ToscaDataTypeJsonAdapter()) .setPrettyPrinting() .create() ); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaTopologyTemplateJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaTopologyTemplateJsonAdapter.java index d302b7e6c..df8ebb556 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaTopologyTemplateJsonAdapter.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaTopologyTemplateJsonAdapter.java @@ -34,8 +34,8 @@ import lombok.NonNull; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.tosca.simple.concepts.ToscaPolicies; -import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate; /** * GSON type adapter for TOSCA policies. @@ -44,13 +44,13 @@ import org.onap.policy.models.tosca.simple.concepts.ToscaTopologyTemplate; * @author Chenfei Gao (cgao@research.att.com) */ public class ToscaTopologyTemplateJsonAdapter - implements JsonSerializer, JsonDeserializer { + implements JsonSerializer, JsonDeserializer { private static final String POLICIES = "policies"; private static final String DESCRIPTION = "description"; @Override - public ToscaTopologyTemplate deserialize(@NonNull final JsonElement toplogyTemplateElement, + public JpaToscaTopologyTemplate deserialize(@NonNull final JsonElement toplogyTemplateElement, @NonNull final Type type, @NonNull final JsonDeserializationContext context) { // The incoming JSON @@ -58,7 +58,7 @@ public class ToscaTopologyTemplateJsonAdapter // The outgoing object final PfReferenceKey topologyTemplateKey = new PfReferenceKey(new PfConceptKey(), "IncomingTopologyTemplate"); - final ToscaTopologyTemplate topologyTemplate = new ToscaTopologyTemplate(topologyTemplateKey); + final JpaToscaTopologyTemplate topologyTemplate = new JpaToscaTopologyTemplate(topologyTemplateKey); if (topologyTemplateJsonObject.has(DESCRIPTION)) { topologyTemplate.setDescription(topologyTemplateJsonObject.get(DESCRIPTION).getAsString()); @@ -66,14 +66,14 @@ public class ToscaTopologyTemplateJsonAdapter if (topologyTemplateJsonObject.has(POLICIES)) { topologyTemplate.setPolicies(new ToscaPoliciesJsonAdapter() - .deserialize(topologyTemplateJsonObject.get(POLICIES), ToscaPolicies.class, context)); + .deserialize(topologyTemplateJsonObject.get(POLICIES), JpaToscaPolicies.class, context)); } return topologyTemplate; } @Override - public JsonElement serialize(@NonNull final ToscaTopologyTemplate topologyTemplate, @NonNull final Type type, + public JsonElement serialize(@NonNull final JpaToscaTopologyTemplate topologyTemplate, @NonNull final Type type, @NonNull final JsonSerializationContext context) { JsonObject topologyTemplateJsonObject = new JsonObject(); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java index a02bfa4b7..93333c4e3 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java @@ -23,7 +23,7 @@ package org.onap.policy.models.tosca.utils; import javax.ws.rs.core.Response; import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +44,7 @@ public final class ToscaUtils { /** * Check if policy types have been specified is initialized. */ - public static void assertPolicyTypesExist(final ToscaServiceTemplate serviceTemplate) { + public static void assertPolicyTypesExist(final JpaToscaServiceTemplate serviceTemplate) { if (serviceTemplate.getPolicyTypes() == null) { String errorMessage = "no policy types specified on service template"; LOGGER.warn(errorMessage); @@ -61,7 +61,7 @@ public final class ToscaUtils { /** * Check if policy types have been specified is initialized. */ - public static void assertPoliciesExist(final ToscaServiceTemplate serviceTemplate) { + public static void assertPoliciesExist(final JpaToscaServiceTemplate serviceTemplate) { if (serviceTemplate.getTopologyTemplate() == null) { String errorMessage = "topology template not specified on service template"; LOGGER.warn(errorMessage); -- cgit 1.2.3-korg