* ============LICENSE_START=======================================================
* ONAP CLAMP
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
* reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* limitations under the License.
* ============LICENSE_END============================================
* ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
*/
package org.onap.clamp.clds.dao;
import com.att.eelf.configuration.EELFManager;
import java.io.InputStream;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.sql.DataSource;
-import org.onap.clamp.clds.model.CldsDBServiceCache;
+import org.onap.clamp.clds.model.CldsDbServiceCache;
import org.onap.clamp.clds.model.CldsEvent;
import org.onap.clamp.clds.model.CldsModel;
import org.onap.clamp.clds.model.CldsModelInstance;
import org.onap.clamp.clds.model.CldsModelProp;
+import org.onap.clamp.clds.model.CldsMonitoringDetails;
import org.onap.clamp.clds.model.CldsServiceData;
import org.onap.clamp.clds.model.CldsTemplate;
import org.onap.clamp.clds.model.ValueItem;
*/
@Repository("cldsDao")
public class CldsDao {
+
private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsDao.class);
private JdbcTemplate jdbcTemplateObject;
private SimpleJdbcCall procGetModel;
private SimpleJdbcCall procGetTemplate;
private SimpleJdbcCall procDelAllModelInstances;
private SimpleJdbcCall procInsModelInstance;
+ private SimpleJdbcCall procDeleteModel;
private static final String HEALTHCHECK = "Select 1";
-
+ private static final String V_CONTROL_NAME_PREFIX = "v_control_name_prefix";
+ private static final String V_CONTROL_NAME_UUID = "v_control_name_uuid";
+
/**
* Log message when instantiating
*/
this.procSetTemplate = new SimpleJdbcCall(dataSource).withProcedureName("set_template");
this.procInsModelInstance = new SimpleJdbcCall(dataSource).withProcedureName("ins_model_instance");
this.procDelAllModelInstances = new SimpleJdbcCall(dataSource).withProcedureName("del_all_model_instances");
+ this.procDeleteModel = new SimpleJdbcCall(dataSource).withProcedureName("del_model");
}
/**
CldsModel model = new CldsModel();
model.setName(modelName);
SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName)
- .addValue("v_control_name_uuid", controlNameUuid);
+ .addValue(V_CONTROL_NAME_UUID, controlNameUuid);
Map<String, Object> out = logSqlExecution(procGetModel, in);
- model.setControlNamePrefix((String) out.get("v_control_name_prefix"));
- model.setControlNameUuid((String) out.get("v_control_name_uuid"));
- model.setId((String) (out.get("v_model_id")));
- model.setTemplateId((String) (out.get("v_template_id")));
- model.setTemplateName((String) (out.get("v_template_name")));
- model.setBpmnText((String) out.get("v_template_bpmn_text"));
- model.setPropText((String) out.get("v_model_prop_text"));
- model.setImageText((String) out.get("v_template_image_text"));
- model.setDocText((String) out.get("v_template_doc_text"));
- model.setBlueprintText((String) out.get("v_model_blueprint_text"));
- model.getEvent().setId((String) (out.get("v_event_id")));
- model.getEvent().setActionCd((String) out.get("v_action_cd"));
- model.getEvent().setActionStateCd((String) out.get("v_action_state_cd"));
- model.getEvent().setProcessInstanceId((String) out.get("v_event_process_instance_id"));
- model.getEvent().setUserid((String) out.get("v_event_user_id"));
- model.setTypeId((String) out.get("v_service_type_id"));
- model.setDeploymentId((String) out.get("v_deployment_id"));
+ populateModelProperties(model, out);
return model;
}
SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName);
Map<String, Object> out = logSqlExecution(procGetModelTemplate, in);
// todo : rationalize
- model.setControlNamePrefix((String) out.get("v_control_name_prefix"));
- model.setControlNameUuid((String) out.get("v_control_name_uuid"));
- model.setId((String) (out.get("v_model_id")));
- model.setTemplateId((String) (out.get("v_template_id")));
- model.setTemplateName((String) (out.get("v_template_name")));
- model.setBpmnText((String) out.get("v_template_bpmn_text"));
- model.setPropText((String) out.get("v_model_prop_text"));
- model.setImageText((String) out.get("v_template_image_text"));
- model.setDocText((String) out.get("v_template_doc_text"));
- model.setBlueprintText((String) out.get("v_model_blueprint_text"));
- model.getEvent().setId((String) (out.get("v_event_id")));
- model.getEvent().setActionCd((String) out.get("v_action_cd"));
- model.getEvent().setActionStateCd((String) out.get("v_action_state_cd"));
- model.getEvent().setProcessInstanceId((String) out.get("v_event_process_instance_id"));
- model.getEvent().setUserid((String) out.get("v_event_user_id"));
- model.setTypeId((String) out.get("v_service_type_id"));
- model.setDeploymentId((String) out.get("v_deployment_id"));
+ populateModelProperties(model, out);
Map<String, Object> modelResults = logSqlExecution(procGetModel, in);
Object modelResultObject = modelResults.get("#result-set-1");
if (modelResultObject != null && modelResultObject instanceof ArrayList) {
.addValue("v_model_blueprint_text", model.getBlueprintText())
.addValue("v_service_type_id", model.getTypeId()).addValue("v_deployment_id", model.getDeploymentId())
.addValue("v_control_name_prefix", model.getControlNamePrefix())
- .addValue("v_control_name_uuid", model.getControlNameUuid());
+ .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid());
Map<String, Object> out = logSqlExecution(procSetModel, in);
- model.setControlNamePrefix((String) out.get("v_control_name_prefix"));
- model.setControlNameUuid((String) out.get("v_control_name_uuid"));
+ model.setControlNamePrefix((String) out.get(V_CONTROL_NAME_PREFIX));
+ model.setControlNameUuid((String) out.get(V_CONTROL_NAME_UUID));
model.setId((String) (out.get("v_model_id")));
model.getEvent().setId((String) (out.get("v_event_id")));
model.getEvent().setActionCd((String) out.get("v_action_cd"));
logger.debug("v_vm_name={}", currModelInstance.getVmName());
logger.debug("v_location={}", currModelInstance.getLocation());
SqlParameterSource in = new MapSqlParameterSource()
- .addValue("v_control_name_uuid", model.getControlNameUuid())
+ .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid())
.addValue("v_vm_name", currModelInstance.getVmName())
.addValue("v_location", currModelInstance.getLocation());
Map<String, Object> out = logSqlExecution(procInsModelInstance, in);
public CldsEvent insEvent(String modelName, String controlNamePrefix, String controlNameUuid, CldsEvent cldsEvent) {
CldsEvent event = new CldsEvent();
SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName)
- .addValue("v_control_name_prefix", controlNamePrefix).addValue("v_control_name_uuid", controlNameUuid)
+ .addValue(V_CONTROL_NAME_PREFIX, controlNamePrefix).addValue(V_CONTROL_NAME_UUID, controlNameUuid)
.addValue("v_user_id", cldsEvent.getUserid()).addValue("v_action_cd", cldsEvent.getActionCd())
.addValue("v_action_state_cd", cldsEvent.getActionStateCd())
.addValue("v_process_instance_id", cldsEvent.getProcessInstanceId());
}
private String delAllModelInstances(String controlNameUUid) {
- SqlParameterSource in = new MapSqlParameterSource().addValue("v_control_name_uuid", controlNameUUid);
+ SqlParameterSource in = new MapSqlParameterSource().addValue(V_CONTROL_NAME_UUID, controlNameUUid);
Map<String, Object> out = logSqlExecution(procDelAllModelInstances, in);
return (String) (out.get("v_model_id"));
}
template.setId((String) (out.get("v_template_id")));
template.setBpmnUserid((String) (out.get("v_template_bpmn_user_id")));
template.setBpmnId((String) (out.get("v_template_bpmn_id")));
- template.setBpmnText((String) (out.get("v_template_bpmn_text")));
template.setImageId((String) (out.get("v_template_image_id")));
template.setImageUserid((String) out.get("v_template_image_user_id"));
- template.setImageText((String) out.get("v_template_image_text"));
template.setPropId((String) (out.get("v_template_doc_id")));
template.setPropUserid((String) out.get("v_template_doc_user_id"));
- template.setPropText((String) out.get("v_template_doc_text"));
}
/**
return template;
}
+ public void clearServiceCache() {
+ String clearCldsServiceCacheSql = "TRUNCATE clds_service_cache";
+ jdbcTemplateObject.execute(clearCldsServiceCacheSql);
+ }
+
public CldsServiceData getCldsServiceCache(String invariantUUID) {
CldsServiceData cldsServiceData = null;
- List<CldsServiceData> cldsServiceDataList = new ArrayList<>();
try {
String getCldsServiceSQL = "SELECT * , TIMESTAMPDIFF(SECOND, timestamp, CURRENT_TIMESTAMP()) FROM clds_service_cache where invariant_service_id = ? ";
- cldsServiceData = jdbcTemplateObject.queryForObject(getCldsServiceSQL, new Object[] {
- invariantUUID
- }, new CldsServiceDataMapper());
- logger.info("value of cldsServiceDataList: {}", cldsServiceDataList);
+ cldsServiceData = jdbcTemplateObject.queryForObject(getCldsServiceSQL, new Object[] { invariantUUID },
+ new CldsServiceDataMapper());
+ if (cldsServiceData != null) {
+ logger.info("CldsServiceData found in cache for Service Invariant ID:"
+ + cldsServiceData.getServiceInvariantUUID());
+ return cldsServiceData;
+ } else {
+ logger.warn("CldsServiceData not found in cache for Service Invariant ID:" + invariantUUID);
+ return null;
+ }
} catch (EmptyResultDataAccessException e) {
- logger.warn("cache row not found for invariantUUID: " + invariantUUID, e);
+ logger.info("CldsServiceData not found in cache for Service Invariant ID: " + invariantUUID);
+ logger.debug("CldsServiceData not found in cache for Service Invariant ID: " + invariantUUID, e);
+ return null;
}
- return cldsServiceData;
}
- public void setCldsServiceCache(CldsDBServiceCache cldsDBServiceCache) {
+ public void setCldsServiceCache(CldsDbServiceCache cldsDBServiceCache) {
if (cldsDBServiceCache != null && cldsDBServiceCache.getInvariantId() != null
&& cldsDBServiceCache.getServiceId() != null) {
String invariantUuid = cldsDBServiceCache.getInvariantId();
* @return list of CldsModelProp
*/
public List<CldsModelProp> getDeployedModelProperties() {
- List<CldsModelProp> cldsModelPropList = new ArrayList<CldsModelProp>();
+ List<CldsModelProp> cldsModelPropList = new ArrayList<>();
String modelsSql = "select m.model_id, m.model_name, mp.model_prop_id, mp.model_prop_text FROM model m, model_properties mp, event e "
+ "WHERE m.model_prop_id = mp.model_prop_id and m.event_id = e.event_id and e.action_cd = 'DEPLOY'";
List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(modelsSql);
}
return cldsModelPropList;
}
+
+ /**
+ * Method to get deployed/active models with model properties.
+ *
+ * @return list of CLDS-Monitoring-Details: CLOSELOOP_NAME | Close loop name
+ * used in the CLDS application (prefix: ClosedLoop- + unique
+ * ClosedLoop ID) MODEL_NAME | Model Name in CLDS application
+ * SERVICE_TYPE_ID | TypeId returned from the DCAE application when
+ * the ClosedLoop is submitted (DCAEServiceTypeRequest generated in
+ * DCAE application). DEPLOYMENT_ID | Id generated when the
+ * ClosedLoop is deployed in DCAE. TEMPLATE_NAME | Template used to
+ * generate the ClosedLoop model. ACTION_CD | Current state of the
+ * ClosedLoop in CLDS application.
+ */
+ public List<CldsMonitoringDetails> getCLDSMonitoringDetails() {
+ SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
+ List<CldsMonitoringDetails> cldsMonitoringDetailsList = new ArrayList<CldsMonitoringDetails>();
+ String modelsSql = "SELECT CONCAT(M.CONTROL_NAME_PREFIX, M.CONTROL_NAME_UUID) AS CLOSELOOP_NAME , M.MODEL_NAME, M.SERVICE_TYPE_ID, M.DEPLOYMENT_ID, T.TEMPLATE_NAME, E.ACTION_CD, E.USER_ID, E.TIMESTAMP "
+ + "FROM MODEL M, TEMPLATE T, EVENT E "
+ + "WHERE M.TEMPLATE_ID = T.TEMPLATE_ID AND M.EVENT_ID = E.EVENT_ID " + "ORDER BY ACTION_CD";
+ List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(modelsSql);
+ CldsMonitoringDetails cldsMonitoringDetails = null;
+ for (Map<String, Object> row : rows) {
+ cldsMonitoringDetails = new CldsMonitoringDetails();
+ cldsMonitoringDetails.setCloseloopName((String) row.get("CLOSELOOP_NAME"));
+ cldsMonitoringDetails.setModelName((String) row.get("MODEL_NAME"));
+ cldsMonitoringDetails.setServiceTypeId((String) row.get("SERVICE_TYPE_ID"));
+ cldsMonitoringDetails.setDeploymentId((String) row.get("DEPLOYMENT_ID"));
+ cldsMonitoringDetails.setTemplateName((String) row.get("TEMPLATE_NAME"));
+ cldsMonitoringDetails.setAction((String) row.get("ACTION_CD"));
+ cldsMonitoringDetails.setUserid((String) row.get("USER_ID"));
+ cldsMonitoringDetails.setTimestamp(sdf.format(row.get("TIMESTAMP")));
+ cldsMonitoringDetailsList.add(cldsMonitoringDetails);
+ }
+ return cldsMonitoringDetailsList;
+ }
+
+ /**
+ * Method to delete model from database.
+ *
+ * @param modelName
+ */
+ public void deleteModel(String modelName) {
+ SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName);
+ logSqlExecution(procDeleteModel, in);
+ }
+
+ private void populateModelProperties(CldsModel model, Map out) {
+ // todo : rationalize
+ model.setControlNamePrefix((String) out.get(V_CONTROL_NAME_PREFIX));
+ model.setControlNameUuid((String) out.get(V_CONTROL_NAME_UUID));
+ model.setId((String) (out.get("v_model_id")));
+ model.setTemplateId((String) (out.get("v_template_id")));
+ model.setTemplateName((String) (out.get("v_template_name")));
+ model.setBpmnText((String) out.get("v_template_bpmn_text"));
+ model.setPropText((String) out.get("v_model_prop_text"));
+ model.setImageText((String) out.get("v_template_image_text"));
+ model.setDocText((String) out.get("v_template_doc_text"));
+ model.setBlueprintText((String) out.get("v_model_blueprint_text"));
+ model.getEvent().setId((String) (out.get("v_event_id")));
+ model.getEvent().setActionCd((String) out.get("v_action_cd"));
+ model.getEvent().setActionStateCd((String) out.get("v_action_state_cd"));
+ model.getEvent().setProcessInstanceId((String) out.get("v_event_process_instance_id"));
+ model.getEvent().setUserid((String) out.get("v_event_user_id"));
+ model.setTypeId((String) out.get("v_service_type_id"));
+ model.setDeploymentId((String) out.get("v_deployment_id"));
+ }
}