+ return policyModelsRepository.saveAndFlush(policyModel);
+ }
+
+ /**
+ * Verify whether Policy Model exist by ID.
+ *
+ * @param policyModelId The policyModel Id
+ * @return The flag indicates whether Policy Model exist
+ */
+ public boolean existsById(PolicyModelId policyModelId) {
+ return policyModelsRepository.existsById(policyModelId);
+ }
+
+ /**
+ * Creates or updates the Tosca Policy Model.
+ *
+ * @param policyModelTosca The Policymodel object
+ * @return The Policy Model created
+ */
+ public PolicyModel createNewPolicyModelFromTosca(String policyModelTosca) {
+ JsonObject jsonObject = toscaYamlToJsonConvertor.validateAndConvertToJson(policyModelTosca);
+ String policyModelTypeFromTosca = toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject,
+ ToscaSchemaConstants.METADATA_POLICY_MODEL_TYPE);
+ Iterable<PolicyModel> models = getAllPolicyModelsByType(policyModelTypeFromTosca);
+ Collections.sort((List<PolicyModel>) models);
+ PolicyModel newPolicyModel = new PolicyModel(policyModelTypeFromTosca, policyModelTosca,
+ SemanticVersioning.incrementMajorVersion(((ArrayList) models).isEmpty() ? null
+ : ((ArrayList<PolicyModel>) models).get(0).getVersion()),
+ toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject,
+ ToscaSchemaConstants.METADATA_ACRONYM));
+ return saveOrUpdatePolicyModel(newPolicyModel);
+ }
+
+ /**
+ * Update an existing Tosca Policy Model.
+ *
+ * @param policyModelType The policy Model type in Tosca yaml
+ * @param policyModelVersion The policy Version to update
+ * @param policyModelTosca The Policy Model tosca
+ * @return The Policy Model updated
+ */
+ public PolicyModel updatePolicyModelTosca(String policyModelType, String policyModelVersion,
+ String policyModelTosca) {
+ JsonObject jsonObject = toscaYamlToJsonConvertor.validateAndConvertToJson(policyModelTosca);
+ PolicyModel thePolicyModel = getPolicyModelByType(policyModelType, policyModelVersion);
+ thePolicyModel.setPolicyAcronym(toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject,
+ ToscaSchemaConstants.METADATA_ACRONYM));
+ thePolicyModel.setPolicyModelTosca(policyModelTosca);
+ return saveOrUpdatePolicyModel(thePolicyModel);