+ model.setDeploymentId((String) out.get("v_deployment_id"));
+ model.setDeploymentStatusUrl((String) out.get("v_deployment_status_url"));
+
+ setEventProp(model.getEvent(), out);
+ }
+
+ /**
+ * Helper method to setup the event prop to the CldsEvent class
+ *
+ * @param event
+ * the clds event
+ * @param prop
+ * collection with the configuration
+ */
+ private void setEventProp(CldsEvent event, Map prop) {
+ event.setId((String) prop.get("v_event_id"));
+ event.setActionCd((String) prop.get("v_action_cd"));
+ event.setActionStateCd((String) prop.get("v_action_state_cd"));
+ event.setProcessInstanceId((String) prop.get("v_event_process_instance_id"));
+ event.setUserid((String) prop.get("v_event_user_id"));
+ }
+
+ /**
+ * Method to retrieve a tosca models by Policy Type from database.
+ *
+ * @return List of CldsToscaModel
+ */
+ public List<CldsToscaModel> getAllToscaModels() {
+ return getToscaModel(null, null);
+ }
+
+ /**
+ * Method to retrieve a tosca models by Policy Type from database.
+ *
+ * @param policyType
+ * the policy type
+ * @return List of CldsToscaModel
+ */
+ public List<CldsToscaModel> getToscaModelByPolicyType(String policyType) {
+ return getToscaModel(null, policyType);
+ }
+
+ /**
+ * Method to retrieve a tosca models by toscaModelName, version from database.
+ *
+ * @param toscaModelName
+ * the tosca model name
+ * @return List of CldsToscaModel
+ */
+ public List<CldsToscaModel> getToscaModelByName(String toscaModelName) {
+ return getToscaModel(toscaModelName, null);
+ }
+
+ // Retrieve the latest tosca model for a policy type or by tosca model name
+
+ private List<CldsToscaModel> getToscaModel(String toscaModelName, String policyType) {
+ SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
+ List<CldsToscaModel> cldsToscaModels = new ArrayList<>();
+
+ String toscaModelSql = new StringBuilder("SELECT tm.tosca_model_name, tm.tosca_model_id, tm.policy_type, " +
+ "tmr.tosca_model_revision_id, tmr.tosca_model_json, tmr.version, tmr.user_id, tmr.createdTimestamp, " +
+ "tmr.lastUpdatedTimestamp")
+ .append(toscaModelName != null ? (", tmr.tosca_model_yaml") : "")
+ .append(" FROM tosca_model tm, tosca_model_revision tmr WHERE tm.tosca_model_id = tmr.tosca_model_id")
+ .append(toscaModelName != null ? (" AND tm.tosca_model_name = '" + toscaModelName + "'") : "")
+ .append(policyType != null ? (" AND tm.policy_type = '" + policyType + "'") : "")
+ .append(" AND tmr.version = (select max(version) from tosca_model_revision st where tmr.tosca_model_id=st.tosca_model_id)")
+ .toString();
+
+ List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(toscaModelSql);
+
+ if (rows != null) {
+ rows.forEach(row -> {
+ CldsToscaModel cldsToscaModel = new CldsToscaModel();
+ cldsToscaModel.setId((String) row.get("tosca_model_id"));
+ cldsToscaModel.setPolicyType((String) row.get("policy_type"));
+ cldsToscaModel.setToscaModelName((String) row.get("tosca_model_name"));
+ cldsToscaModel.setUserId((String) row.get("user_id"));
+ cldsToscaModel.setRevisionId((String) row.get("tosca_model_revision_id"));
+ cldsToscaModel.setToscaModelJson((String) row.get("tosca_model_json"));
+ cldsToscaModel.setVersion(((Double) row.get("version")));
+ cldsToscaModel.setCreatedDate(sdf.format(row.get("createdTimestamp")));
+ cldsToscaModel.setLastUpdatedDate(sdf.format(row.get("lastUpdatedTimestamp")));
+ if (toscaModelName != null) {
+ cldsToscaModel.setToscaModelYaml((String) row.get("tosca_model_yaml"));
+ }
+ cldsToscaModels.add(cldsToscaModel);
+ });
+ }
+ return cldsToscaModels;
+ }
+
+ /**
+ * Method to upload a new version of Tosca Model Yaml in Database.
+ *
+ * @param cldsToscaModel
+ * the clds tosca model
+ * @param userId
+ * the user id
+ * @return CldsToscaModel clds tosca model
+ */
+ public CldsToscaModel updateToscaModelWithNewVersion(CldsToscaModel cldsToscaModel, String userId) {
+ SqlParameterSource in = new MapSqlParameterSource().addValue("v_tosca_model_id", cldsToscaModel.getId())
+ .addValue("v_version", cldsToscaModel.getVersion())
+ .addValue("v_tosca_model_yaml", cldsToscaModel.getToscaModelYaml())
+ .addValue("v_tosca_model_json", cldsToscaModel.getToscaModelJson()).addValue("v_user_id", userId);
+ Map<String, Object> out = logSqlExecution(procInsertNewToscaModelVersion, in);
+ cldsToscaModel.setRevisionId((String) out.get("v_revision_id"));
+ return cldsToscaModel;
+ }
+
+ /**
+ * Method to upload a new Tosca model Yaml in DB. Default version is 1.0
+ *
+ * @param cldsToscaModel
+ * the clds tosca model
+ * @param userId
+ * the user id
+ * @return CldsToscaModel clds tosca model
+ */
+ public CldsToscaModel insToscaModel(CldsToscaModel cldsToscaModel, String userId) {
+ SqlParameterSource in = new MapSqlParameterSource()
+ .addValue("v_tosca_model_name", cldsToscaModel.getToscaModelName())
+ .addValue("v_policy_type", cldsToscaModel.getPolicyType())
+ .addValue("v_tosca_model_yaml", cldsToscaModel.getToscaModelYaml())
+ .addValue("v_tosca_model_json", cldsToscaModel.getToscaModelJson())
+ .addValue("v_version", cldsToscaModel.getVersion()).addValue("v_user_id", userId);
+ Map<String, Object> out = logSqlExecution(procInsertToscaModel, in);
+ cldsToscaModel.setId((String) (out.get("v_tosca_model_id")));
+ cldsToscaModel.setRevisionId((String) (out.get("v_revision_id")));
+ cldsToscaModel.setUserId((String) out.get("v_user_id"));
+ return cldsToscaModel;
+ }
+
+ /**
+ * Method to insert a new Dictionary in Database.
+ *
+ * @param cldsDictionary
+ * the clds dictionary
+ */
+ public void insDictionary(CldsDictionary cldsDictionary) {
+ SqlParameterSource in = new MapSqlParameterSource()
+ .addValue("v_dictionary_name", cldsDictionary.getDictionaryName())
+ .addValue("v_user_id", cldsDictionary.getCreatedBy());
+ Map<String, Object> out = logSqlExecution(procInsertDictionary, in);
+ cldsDictionary.setDictionaryId((String) out.get("v_dictionary_id"));
+ }
+
+ /**
+ * Method to update Dictionary with new info in Database.
+ *
+ * @param dictionaryId
+ * the dictionary id
+ * @param cldsDictionary
+ * the clds dictionary
+ * @param userId
+ * the user id
+ */
+ public void updateDictionary(String dictionaryId, CldsDictionary cldsDictionary, String userId) {
+
+ String dictionarySql = new StringBuilder("UPDATE dictionary SET dictionary_name = '")
+ .append(cldsDictionary.getDictionaryName())
+ .append("', modified_by = '").append(userId)
+ .append("'WHERE dictionary_id = '").append(dictionaryId).append("'")
+ .toString();
+ jdbcTemplateObject.update(dictionarySql);
+ cldsDictionary.setUpdatedBy(userId);
+ }
+
+ /**
+ * Method to get list of Dictionaries from the Database.
+ *
+ * @param dictionaryId
+ * the dictionary id
+ * @param dictionaryName
+ * the dictionary name
+ * @return dictionary
+ */
+ public List<CldsDictionary> getDictionary(String dictionaryId, String dictionaryName) {
+ SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
+ List<CldsDictionary> dictionaries = new ArrayList<>();
+
+ String whereFilter = " WHERE ";
+ if (dictionaryName != null) {
+ whereFilter += "dictionary_name = '" + dictionaryName + "'";
+ if (dictionaryId != null){
+ whereFilter += " AND dictionary_id = '" + dictionaryId + "'";
+ }
+ } else if (dictionaryId != null) {
+ whereFilter += "dictionary_id = '" + dictionaryId + "'";
+ } else {
+ whereFilter = "";
+ }
+ String dictionarySql = new StringBuilder("SELECT dictionary_id, dictionary_name, created_by, " +
+ "modified_by, timestamp FROM dictionary")
+ .append(whereFilter).toString();
+
+ List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(dictionarySql);
+
+ if (rows != null) {
+ rows.forEach(row -> {
+ CldsDictionary cldsDictionary = new CldsDictionary();
+ cldsDictionary.setDictionaryId((String) row.get("dictionary_id"));
+ cldsDictionary.setDictionaryName((String) row.get("dictionary_name"));
+ cldsDictionary.setCreatedBy((String) row.get("created_by"));
+ cldsDictionary.setUpdatedBy((String) row.get("modified_by"));
+ cldsDictionary.setLastUpdatedDate(sdf.format(row.get("timestamp")));
+ dictionaries.add(cldsDictionary);
+ });
+ }
+ return dictionaries;
+ }
+
+ /**
+ * Method to insert a new Dictionary Element for given dictionary in Database.
+ *
+ * @param cldsDictionaryItem
+ * the clds dictionary item
+ * @param userId
+ * the user id
+ */
+ public void insDictionarElements(CldsDictionaryItem cldsDictionaryItem, String userId) {
+ SqlParameterSource in = new MapSqlParameterSource()
+ .addValue("v_dictionary_id", cldsDictionaryItem.getDictionaryId())
+ .addValue("v_dict_element_name", cldsDictionaryItem.getDictElementName())
+ .addValue("v_dict_element_short_name", cldsDictionaryItem.getDictElementShortName())
+ .addValue("v_dict_element_description", cldsDictionaryItem.getDictElementDesc())
+ .addValue("v_dict_element_type", cldsDictionaryItem.getDictElementType()).addValue("v_user_id", userId);
+ Map<String, Object> out = logSqlExecution(procInsertDictionaryElement, in);
+ cldsDictionaryItem.setDictElementId((String) out.get("v_dict_element_id"));
+ }
+
+ /**
+ * Method to update Dictionary Elements with new info for a given dictionary in
+ * Database.
+ *
+ * @param dictionaryElementId
+ * the dictionary element id
+ * @param cldsDictionaryItem
+ * the clds dictionary item
+ * @param userId
+ * the user id
+ */
+ public void updateDictionaryElements(String dictionaryElementId, CldsDictionaryItem cldsDictionaryItem,
+ String userId) {
+
+ String dictionarySql = new StringBuilder().append("UPDATE dictionary_elements SET dict_element_name = '")
+ .append(cldsDictionaryItem.getDictElementName())
+ .append("', dict_element_short_name = '").append(cldsDictionaryItem.getDictElementShortName())
+ .append("', dict_element_description= '").append(cldsDictionaryItem.getDictElementDesc())
+ .append("', dict_element_type = '").append(cldsDictionaryItem.getDictElementType())
+ .append("', modified_by = '").append(userId).append("'")
+ .append(" WHERE dict_element_id = '")
+ .append(dictionaryElementId).append("'")
+ .toString();
+ jdbcTemplateObject.update(dictionarySql);
+ cldsDictionaryItem.setUpdatedBy(userId);
+ }
+
+ /**
+ * Method to get list of all dictionary elements for a given dictionary in the
+ * Database.
+ *
+ * @param dictionaryName
+ * the dictionary name
+ * @param dictionaryId
+ * the dictionary id
+ * @param dictElementShortName
+ * the dict element short name
+ * @return dictionary elements
+ */
+ public List<CldsDictionaryItem> getDictionaryElements(String dictionaryName, String dictionaryId,
+ String dictElementShortName) {
+ SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
+ List<CldsDictionaryItem> dictionaryItems = new ArrayList<>();
+ String dictionarySql = new StringBuilder("SELECT de.dict_element_id, de.dictionary_id, de.dict_element_name, " +
+ "de.dict_element_short_name, de.dict_element_description, de.dict_element_type, de.created_by, " +
+ "de.modified_by, de.timestamp FROM dictionary_elements de, " +
+ "dictionary d WHERE de.dictionary_id = d.dictionary_id")
+ .append((dictionaryId != null) ? (" AND d.dictionary_id = '" + dictionaryId + "'") : "")
+ .append((dictElementShortName != null) ? (" AND de.dict_element_short_name = '" + dictElementShortName + "'") : "")
+ .append((dictionaryName != null) ? (" AND dictionary_name = '" + dictionaryName + "'") : "").toString();
+
+ List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(dictionarySql);
+
+ if (rows != null) {
+ rows.forEach(row -> {
+ CldsDictionaryItem dictionaryItem = new CldsDictionaryItem();
+ dictionaryItem.setDictElementId((String) row.get("dict_element_id"));
+ dictionaryItem.setDictionaryId((String) row.get("dictionary_id"));
+ dictionaryItem.setDictElementName((String) row.get("dict_element_name"));
+ dictionaryItem.setDictElementShortName((String) row.get("dict_element_short_name"));
+ dictionaryItem.setDictElementDesc((String) row.get("dict_element_description"));
+ dictionaryItem.setDictElementType((String) row.get("dict_element_type"));
+ dictionaryItem.setCreatedBy((String) row.get("created_by"));
+ dictionaryItem.setUpdatedBy((String) row.get("modified_by"));
+ dictionaryItem.setLastUpdatedDate(sdf.format(row.get("timestamp")));
+ dictionaryItems.add(dictionaryItem);
+ });
+ }
+ return dictionaryItems;
+ }
+
+ /**
+ * Method to get Map of all dictionary elements with key as dictionary short
+ * name and value as the full name.
+ *
+ * @param dictionaryElementType
+ * the dictionary element type
+ * @return Map of dictionary elements as key value pair
+ */
+ public Map<String, String> getDictionaryElementsByType(String dictionaryElementType) {
+ Map<String, String> dictionaryItems = new HashMap<>();
+ String dictionarySql = new StringBuilder("SELECT dict_element_name, dict_element_short_name " +
+ "FROM dictionary_elements WHERE dict_element_type = '")
+ .append(dictionaryElementType).append("'").toString();
+
+ List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(dictionarySql);
+
+ if (rows != null) {
+ rows.forEach(row -> {
+ dictionaryItems.put(((String) row.get("dict_element_short_name")),
+ ((String) row.get("dict_element_name")));
+ });
+ }
+ return dictionaryItems;
+ }