aboutsummaryrefslogtreecommitdiffstats
path: root/models-tosca/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'models-tosca/src/main/java')
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java6
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java5
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java19
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java67
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifier.java50
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java58
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java59
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifier.java50
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java3
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java5
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java106
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java4
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java4
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java105
14 files changed, 466 insertions, 75 deletions
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
index 4623b20e8..582b73cc6 100644
--- 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
@@ -24,6 +24,7 @@
package org.onap.policy.models.tosca.authorative.concepts;
import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
@@ -35,20 +36,25 @@ import lombok.Data;
@Data
public class ToscaConstraint {
+ @ApiModelProperty(name = "valid_values")
@SerializedName("valid_values")
private List<String> validValues;
private String equal;
+ @ApiModelProperty(name = "greater_than")
@SerializedName("greater_than")
private String greaterThan;
+ @ApiModelProperty(name = "greater_or_equal")
@SerializedName("greater_or_equal")
private String greaterOrEqual;
+ @ApiModelProperty(name = "less_than")
@SerializedName("less_than")
private String lessThan;
+ @ApiModelProperty(name = "less_or_equal")
@SerializedName("less_or_equal")
private String lessOrEqual;
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
index a61f2a781..9d327a2ca 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
@@ -23,15 +23,13 @@
package org.onap.policy.models.tosca.authorative.concepts;
import com.google.gson.annotations.SerializedName;
-
+import io.swagger.annotations.ApiModelProperty;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
-
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
-
import org.onap.policy.models.base.PfNameVersion;
/**
@@ -46,6 +44,7 @@ public class ToscaEntity implements PfNameVersion {
private String version;
+ @ApiModelProperty(name = "derived_from")
@SerializedName("derived_from")
private String derivedFrom;
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
index 38c68599d..9c6a375de 100644
--- 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
@@ -26,7 +26,6 @@ package org.onap.policy.models.tosca.authorative.concepts;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
-
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@@ -67,4 +66,22 @@ public class ToscaPolicy extends ToscaEntity {
}
}
}
+
+ /**
+ * Gets the identifier for this policy.
+ *
+ * @return this policy's identifier
+ */
+ public ToscaPolicyIdentifier getIdentifier() {
+ return new ToscaPolicyIdentifier(getName(), getVersion());
+ }
+
+ /**
+ * Gets the type identifier for this policy.
+ *
+ * @return this policy's type identifier
+ */
+ public ToscaPolicyTypeIdentifier getTypeIdentifier() {
+ return new ToscaPolicyTypeIdentifier(getType(), getTypeVersion());
+ }
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java
new file mode 100644
index 000000000..7781af236
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java
@@ -0,0 +1,67 @@
+/*-
+ * ============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.authorative.concepts;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import lombok.Builder;
+import lombok.Data;
+import lombok.NonNull;
+
+import org.onap.policy.models.base.PfObjectFiler;
+
+/**
+ * Filter class for searches for {@link ToscaPolicy} instances.
+ * If any fields are null, they are ignored.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+@Builder
+@Data
+public class ToscaPolicyFilter implements PfObjectFiler<ToscaPolicy> {
+ public static final String LATEST_VERSION = "LATEST";
+
+ // Regular expression
+ private String name;
+
+ // Regular Expression, set to LATEST_VERRSION to get the latest version
+ private String version;
+
+ // Regular expression
+ private String policyTypeName;
+
+ // Regular Expression, set to LATEST_VERRSION to get the latest version
+ private String policyTypeVersion;
+
+ @Override
+ public List<ToscaPolicy> filter(@NonNull final List<ToscaPolicy> originalList) {
+
+ // @formatter:off
+ return originalList.stream()
+ .filter(p -> name != null && p.getName() .matches(name))
+ .filter(p -> version != null && p.getVersion() .matches(version))
+ .filter(p -> policyTypeName != null && p.getType() .matches(policyTypeName))
+ .filter(p -> policyTypeVersion != null && p.getTypeVersion().matches(policyTypeVersion))
+ .collect(Collectors.toList());
+ // @formatter:off
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifier.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifier.java
new file mode 100644
index 000000000..e55c6bd4d
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifier.java
@@ -0,0 +1,50 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Models
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.tosca.authorative.concepts;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+/**
+ * Identifies a policy. Both the name and version must be non-null.
+ */
+@Data
+@NoArgsConstructor
+public class ToscaPolicyIdentifier {
+
+ @NonNull
+ private String name;
+
+ @NonNull
+ private String version;
+
+
+ public ToscaPolicyIdentifier(@NonNull String name, @NonNull String version) {
+ this.name = name;
+ this.version = version;
+ }
+
+ public ToscaPolicyIdentifier(ToscaPolicyIdentifier source) {
+ this.name = source.name;
+ this.version = source.version;
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java
new file mode 100644
index 000000000..9350d1738
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java
@@ -0,0 +1,58 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Models
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.tosca.authorative.concepts;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+/**
+ * Policy identifier with an optional version; only the "name" is required.
+ */
+@Data
+@NoArgsConstructor
+public class ToscaPolicyIdentifierOptVersion {
+
+ @NonNull
+ private String name;
+
+ private String version;
+
+
+ public ToscaPolicyIdentifierOptVersion(@NonNull String name, String version) {
+ this.name = name;
+ this.version = version;
+ }
+
+ public ToscaPolicyIdentifierOptVersion(ToscaPolicyIdentifierOptVersion source) {
+ this.name = source.name;
+ this.version = source.version;
+ }
+
+ /**
+ * Determines if the version is null/missing.
+ *
+ * @return {@code true} if the version is null/missing, {@code false}
+ */
+ public boolean isNullVersion() {
+ return (version == null);
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java
new file mode 100644
index 000000000..baa95045c
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java
@@ -0,0 +1,59 @@
+/*-
+ * ============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.authorative.concepts;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import lombok.Builder;
+import lombok.Data;
+import lombok.NonNull;
+
+import org.onap.policy.models.base.PfObjectFiler;
+
+/**
+ * Filter class for searches for {@link ToscaPolicyType} instances.
+ * If any fields are null, they are ignored.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+@Builder
+@Data
+public class ToscaPolicyTypeFilter implements PfObjectFiler<ToscaPolicyType> {
+ public static final String LATEST_VERSION = "LATEST";
+
+ // Regular expression
+ private String name;
+
+ // Regular Expression, set to LATEST_VERRSION to get the latest version
+ private String version;
+
+ @Override
+ public List<ToscaPolicyType> filter(@NonNull final List<ToscaPolicyType> originalList) {
+
+ // @formatter:off
+ return originalList.stream()
+ .filter(p -> name != null && p.getName() .matches(name))
+ .filter(p -> version != null && p.getVersion().matches(version))
+ .collect(Collectors.toList());
+ // @formatter:off
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifier.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifier.java
new file mode 100644
index 000000000..a10c3eb9c
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifier.java
@@ -0,0 +1,50 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Models
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.tosca.authorative.concepts;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+/**
+ * Identifies a policy type. Both the name and version must be non-null.
+ */
+@Data
+@NoArgsConstructor
+public class ToscaPolicyTypeIdentifier {
+
+ @NonNull
+ private String name;
+
+ @NonNull
+ private String version;
+
+
+ public ToscaPolicyTypeIdentifier(@NonNull String name, @NonNull String version) {
+ this.name = name;
+ this.version = version;
+ }
+
+ public ToscaPolicyTypeIdentifier(ToscaPolicyTypeIdentifier source) {
+ this.name = source.name;
+ this.version = source.version;
+ }
+}
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
index 84f798bc9..00005f2f8 100644
--- 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
@@ -24,6 +24,7 @@
package org.onap.policy.models.tosca.authorative.concepts;
import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
@@ -46,6 +47,7 @@ public class ToscaProperty {
private String description;
+ @ApiModelProperty(name = "default")
@SerializedName("default")
private String defaultValue;
@@ -55,6 +57,7 @@ public class ToscaProperty {
private List<ToscaConstraint> constraints;
+ @ApiModelProperty(name = "entry_schema")
@SerializedName("entry_schema")
private ToscaEntrySchema entrySchema;
}
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
index a9a1783d7..0b19708dc 100644
--- 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
@@ -24,6 +24,7 @@
package org.onap.policy.models.tosca.authorative.concepts;
import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import java.util.Map;
import lombok.Data;
@@ -38,15 +39,19 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
public class ToscaServiceTemplate extends ToscaEntity {
+ @ApiModelProperty(name = "tosca_definitions_version")
@SerializedName("tosca_definitions_version")
private String toscaDefinitionsVersion;
+ @ApiModelProperty(name = "topology_template")
@SerializedName("topology_template")
private ToscaTopologyTemplate toscaTopologyTemplate;
+ @ApiModelProperty(name = "policy_types")
@SerializedName("policy_types")
private List<Map<String, ToscaPolicyType>> policyTypes;
+ @ApiModelProperty(name = "data_types")
@SerializedName("data_types")
private List<Map<String, ToscaDataType>> dataTypes;
} \ No newline at end of file
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java
index 2b6c25e7a..274130a71 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java
@@ -21,7 +21,9 @@
package org.onap.policy.models.tosca.authorative.provider;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Map;
import lombok.NonNull;
@@ -29,7 +31,9 @@ import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.dao.PfDao;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter;
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.provider.SimpleToscaProvider;
@@ -52,7 +56,7 @@ public class AuthorativeToscaProvider {
public ToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
- return new SimpleToscaProvider().getPolicyTypes(dao, new PfConceptKey(name, version)).toAuthorative();
+ return new SimpleToscaProvider().getPolicyTypes(dao, name, version).toAuthorative();
}
/**
@@ -66,33 +70,37 @@ public class AuthorativeToscaProvider {
*/
public List<ToscaPolicyType> getPolicyTypeList(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
- return new ArrayList<>();
+
+ return (asConceptList(
+ new SimpleToscaProvider().getPolicyTypes(dao, name, version).toAuthorative().getPolicyTypes()));
}
/**
- * Get latest policy types.
+ * Get filtered policy types.
*
* @param dao the DAO to use to access the database
- * @param name the name of the policy type to get, set to null to get all policy types
+ * @param filter the filter for the policy types to get
* @return the policy types found
* @throws PfModelException on errors getting policy types
*/
- public ToscaServiceTemplate getLatestPolicyTypes(@NonNull final PfDao dao, final String name)
- throws PfModelException {
- return null;
+ public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull final PfDao dao,
+ @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
+ return new SimpleToscaProvider().getFilteredPolicyTypes(dao, filter).toAuthorative();
}
/**
- * Get latest policy types.
+ * Get filtered policy types.
*
* @param dao the DAO to use to access the database
- * @param name the name of the policy type to get, set to null to get all policy types
+ * @param filter the filter for the policy types to get
* @return the policy types found
* @throws PfModelException on errors getting policy types
*/
- public List<ToscaPolicyType> getLatestPolicyTypeList(@NonNull final PfDao dao, final String name)
- throws PfModelException {
- return new ArrayList<>();
+ public List<ToscaPolicyType> getFilteredPolicyTypeList(@NonNull final PfDao dao,
+ @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
+
+ return (asConceptList(
+ new SimpleToscaProvider().getFilteredPolicyTypes(dao, filter).toAuthorative().getPolicyTypes()));
}
/**
@@ -152,7 +160,7 @@ public class AuthorativeToscaProvider {
public ToscaServiceTemplate getPolicies(@NonNull final PfDao dao, @NonNull final String name,
@NonNull final String version) throws PfModelException {
- return new SimpleToscaProvider().getPolicies(dao, new PfConceptKey(name, version)).toAuthorative();
+ return new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative();
}
/**
@@ -166,61 +174,38 @@ public class AuthorativeToscaProvider {
*/
public List<ToscaPolicy> getPolicyList(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
- return new ArrayList<>();
- }
- /**
- * Get policies for a policy type name.
- *
- * @param dao the DAO to use to access the database
- * @param policyTypeName the name of the policy type for which to get policies
- * @param policyTypeVersion the version of the policy type, null returns all versions of deployed policies for
- * policy types
- * @return the policies found
- * @throws PfModelException on errors getting policies
- */
- public ToscaServiceTemplate getPolicies4PolicyType(@NonNull final PfDao dao, @NonNull final String policyTypeName,
- final String policyTypeVersion) throws PfModelException {
- return null;
+ return asConceptList(new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative()
+ .getToscaTopologyTemplate().getPolicies());
}
/**
- * Get policies for a policy type name.
+ * Get filtered policies.
*
* @param dao the DAO to use to access the database
- * @param policyTypeName the name of the policy type for which to get policies
- * @param policyTypeVersion the version of the policy type, null returns all versions of deployed policies for
- * policy types
+ * @param filter the filter for the policies to get
* @return the policies found
* @throws PfModelException on errors getting policies
*/
- public List<ToscaPolicy> getPolicyList4PolicyType(@NonNull final PfDao dao, @NonNull final String policyTypeName,
- final String policyTypeVersion) throws PfModelException {
- return new ArrayList<>();
- }
+ public ToscaServiceTemplate getFilteredPolicies(@NonNull final PfDao dao, @NonNull final ToscaPolicyFilter filter)
+ throws PfModelException {
- /**
- * Get latest policies.
- *
- * @param dao the DAO to use to access the database
- * @param name the name of the policy to get, null to get all policies
- * @return the policies found
- * @throws PfModelException on errors getting policies
- */
- public ToscaServiceTemplate getLatestPolicies(@NonNull final PfDao dao, final String name) throws PfModelException {
- return null;
+ return new SimpleToscaProvider().getFilteredPolicies(dao, filter).toAuthorative();
}
/**
- * Get latest policies.
+ * Get filtered policies.
*
* @param dao the DAO to use to access the database
- * @param name the name of the policy to get, null to get all policies
+ * @param filter the filter for the policies to get
* @return the policies found
* @throws PfModelException on errors getting policies
*/
- public List<ToscaPolicy> getLatestPolicyList(@NonNull final PfDao dao, final String name) throws PfModelException {
- return new ArrayList<>();
+ public List<ToscaPolicy> getFilteredPolicyList(@NonNull final PfDao dao, @NonNull final ToscaPolicyFilter filter)
+ throws PfModelException {
+
+ return asConceptList(new SimpleToscaProvider().getFilteredPolicies(dao, filter).toAuthorative()
+ .getToscaTopologyTemplate().getPolicies());
}
/**
@@ -267,4 +252,25 @@ public class AuthorativeToscaProvider {
return new SimpleToscaProvider().deletePolicy(dao, new PfConceptKey(name, version)).toAuthorative();
}
+
+ /**
+ * Return the contents of a list of maps as a plain list.
+ *
+ * @param listOfMaps the list of maps
+ * @return the plain list
+ */
+ private <T> List<T> asConceptList(final List<Map<String, T>> listOfMaps) {
+ if (listOfMaps == null) {
+ return Collections.emptyList();
+ }
+
+ List<T> returnList = new ArrayList<>();
+ for (Map<String, T> conceptMap : listOfMaps) {
+ for (T concept : conceptMap.values()) {
+ returnList.add(concept);
+ }
+ }
+
+ return returnList;
+ }
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java
index 18853c100..819fcba75 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java
@@ -22,7 +22,7 @@
package org.onap.policy.models.tosca.legacy.concepts;
import com.google.gson.annotations.SerializedName;
-
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -33,9 +33,11 @@ import lombok.Data;
@Data
public class LegacyGuardPolicyInput {
+ @ApiModelProperty(name = "policy-id")
@SerializedName("policy-id")
private String policyId;
+ @ApiModelProperty(name = "policy-version")
@SerializedName("policy-version")
private String policyVersion;
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java
index 1db4d6e20..70453da76 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java
@@ -22,7 +22,7 @@
package org.onap.policy.models.tosca.legacy.concepts;
import com.google.gson.annotations.SerializedName;
-
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -33,9 +33,11 @@ import lombok.Data;
@Data
public class LegacyOperationalPolicy {
+ @ApiModelProperty(name = "policy-id")
@SerializedName("policy-id")
private String policyId;
+ @ApiModelProperty(name = "policy-version")
@SerializedName("policy-version")
private String policyVersion;
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 e7e81603a..6c588a50c 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
@@ -20,14 +20,21 @@
package org.onap.policy.models.tosca.simple.provider;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
import javax.ws.rs.core.Response;
import lombok.NonNull;
+import org.onap.policy.models.base.PfConcept;
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.authorative.concepts.ToscaPolicyFilter;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter;
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;
@@ -50,12 +57,12 @@ public class SimpleToscaProvider {
* Get policy types.
*
* @param dao the DAO to use to access the database
- * @param policyTypeKey the policy type key for the policy types to be retrieved. A null key name returns all policy
- * types. A null key version returns all versions of the policy type name specified in the key.
+ * @param name the name of the policy type to get, set to null to get all policy types
+ * @param version the version of the policy type to get, set to null to get all versions
* @return the policy types found
* @throws PfModelException on errors getting policy types
*/
- public JpaToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, @NonNull final PfConceptKey policyTypeKey)
+ public JpaToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
// Create the structure of the TOSCA service template to contain the policy type
@@ -63,18 +70,40 @@ public class SimpleToscaProvider {
serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
// Add the policy type to the TOSCA service template
- JpaToscaPolicyType policyType = dao.get(JpaToscaPolicyType.class, policyTypeKey);
- if (policyType != null) {
- serviceTemplate.getPolicyTypes().getConceptMap().put(policyTypeKey, policyType);
+ List<JpaToscaPolicyType> jpaPolicyTypeList = dao.getFiltered(JpaToscaPolicyType.class, name, version);
+ if (jpaPolicyTypeList != null) {
+ serviceTemplate.getPolicyTypes().getConceptMap().putAll(asConceptMap(jpaPolicyTypeList));
return serviceTemplate;
} else {
- String errorMessage = "policy type not found: " + policyTypeKey.getId();
+ String errorMessage = "policy type not found: " + name + ":" + version;
LOGGER.warn(errorMessage);
throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
}
}
/**
+ * Get filtered policy types.
+ *
+ * @param dao the DAO to use to access the database
+ * @param filter the filter for the policy types to get
+ * @return the policy types found
+ * @throws PfModelException on errors getting policy types
+ */
+ public JpaToscaServiceTemplate getFilteredPolicyTypes(@NonNull final PfDao dao,
+ @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
+
+ // Create the structure of the TOSCA service template to contain the policy type
+ JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
+ serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
+
+ List<JpaToscaPolicyType> jpaPolicyTypeList = dao.getAll(JpaToscaPolicyType.class);
+ // TODO: The actual filtering
+
+ serviceTemplate.getPolicyTypes().getConceptMap().putAll(asConceptMap(jpaPolicyTypeList));
+ return serviceTemplate;
+ }
+
+ /**
* Create policy types.
*
* @param dao the DAO to use to access the database
@@ -143,11 +172,11 @@ public class SimpleToscaProvider {
* @return the TOSCA service template containing the policy types that were deleted
* @throws PfModelException on errors deleting policy types
*/
- public JpaToscaServiceTemplate deletePolicyType(@NonNull final PfDao dao,
- @NonNull final PfConceptKey policyTypeKey)
+ public JpaToscaServiceTemplate deletePolicyType(@NonNull final PfDao dao, @NonNull final PfConceptKey policyTypeKey)
throws PfModelException {
- JpaToscaServiceTemplate serviceTemplate = getPolicyTypes(dao, policyTypeKey);
+ JpaToscaServiceTemplate serviceTemplate =
+ getPolicyTypes(dao, policyTypeKey.getName(), policyTypeKey.getVersion());
dao.delete(JpaToscaPolicyType.class, policyTypeKey);
@@ -158,12 +187,12 @@ public class SimpleToscaProvider {
* Get policies.
*
* @param dao the DAO to use to access the database
- * @param policyKey the policy key for the policies to be retrieved. The parent name and version must be specified.
- * A null local name returns all policies for a parent policy type.
+ * @param name the name of the policy to get, set to null to get all policy types
+ * @param version the version of the policy to get, set to null to get all versions
* @return the policies found
* @throws PfModelException on errors getting policies
*/
- public JpaToscaServiceTemplate getPolicies(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey)
+ public JpaToscaServiceTemplate getPolicies(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
// Create the structure of the TOSCA service template to contain the policy type
@@ -171,19 +200,42 @@ public class SimpleToscaProvider {
serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
- // Add the policy to the TOSCA service template
- JpaToscaPolicy policy = dao.get(JpaToscaPolicy.class, policyKey);
- if (policy != null) {
- serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(policyKey, policy);
+ // Add the policy type to the TOSCA service template
+ List<JpaToscaPolicy> jpaPolicyList = dao.getFiltered(JpaToscaPolicy.class, name, version);
+ if (jpaPolicyList != null) {
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().putAll(asConceptMap(jpaPolicyList));
return serviceTemplate;
} else {
- String errorMessage = "policy not found: " + policyKey.getId();
+ String errorMessage = "policy not found: " + name + ":" + version;
LOGGER.warn(errorMessage);
throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
}
}
/**
+ * Get filtered policies.
+ *
+ * @param dao the DAO to use to access the database
+ * @param filter the filter for the policies to get
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ public JpaToscaServiceTemplate getFilteredPolicies(@NonNull final PfDao dao,
+ @NonNull final ToscaPolicyFilter filter) throws PfModelException {
+
+ // Create the structure of the TOSCA service template to contain the policy type
+ JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
+ serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
+ serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
+
+ List<JpaToscaPolicy> jpaPolicyList = dao.getAll(JpaToscaPolicy.class);
+ // TODO: Do the actual filtering
+
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().putAll(asConceptMap(jpaPolicyList));
+ return serviceTemplate;
+ }
+
+ /**
* Create policies.
*
* @param dao the DAO to use to access the database
@@ -254,10 +306,25 @@ public class SimpleToscaProvider {
public JpaToscaServiceTemplate deletePolicy(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey)
throws PfModelException {
- JpaToscaServiceTemplate serviceTemplate = getPolicies(dao, policyKey);
+ JpaToscaServiceTemplate serviceTemplate = getPolicies(dao, policyKey.getName(), policyKey.getVersion());
dao.delete(JpaToscaPolicy.class, policyKey);
return serviceTemplate;
}
+
+ /**
+ * Convert a list of concepts to a map of concepts.
+ *
+ * @param conceptList the concept list
+ * @return the concept map
+ */
+ private <T extends PfConcept> Map<PfConceptKey, T> asConceptMap(List<T> conceptList) {
+ Map<PfConceptKey, T> conceptMap = new LinkedHashMap<>();
+ for (T concept : conceptList) {
+ conceptMap.put((PfConceptKey) concept.getKey(), concept);
+ }
+
+ return conceptMap;
+ }
}