Minor Improvement
[clamp.git] / src / main / java / org / onap / clamp / clds / dao / CldsDao.java
index d54976b..a3771aa 100644 (file)
@@ -2,7 +2,7 @@
  * ============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 java.io.IOException;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
 import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.sql.Blob;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -36,47 +35,44 @@ import java.util.Map;
 
 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;
 import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 import org.springframework.jdbc.core.namedparam.SqlParameterSource;
 import org.springframework.jdbc.core.simple.SimpleJdbcCall;
 import org.springframework.stereotype.Repository;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
 /**
  * Data Access for CLDS Model tables.
  */
 @Repository("cldsDao")
 public class CldsDao {
 
-    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(CldsDao.class);
-    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
-    private JdbcTemplate            jdbcTemplateObject;
-    private SimpleJdbcCall          procGetModel;
-    private SimpleJdbcCall          procGetModelTemplate;
-    private SimpleJdbcCall          procSetModel;
-    private SimpleJdbcCall          procInsEvent;
-    private SimpleJdbcCall          procUpdEvent;
-    private SimpleJdbcCall          procSetTemplate;
-    private SimpleJdbcCall          procGetTemplate;
-    private SimpleJdbcCall          procDelAllModelInstances;
-    private SimpleJdbcCall          procInsModelInstance;
-    private SimpleJdbcCall          procDelModelInstance;
-
-    private static final String     healthcheck   = "Select 1";
-
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsDao.class);
+    private JdbcTemplate jdbcTemplateObject;
+    private SimpleJdbcCall procGetModel;
+    private SimpleJdbcCall procGetModelTemplate;
+    private SimpleJdbcCall procSetModel;
+    private SimpleJdbcCall procInsEvent;
+    private SimpleJdbcCall procUpdEvent;
+    private SimpleJdbcCall procSetTemplate;
+    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
      */
@@ -86,8 +82,6 @@ public class CldsDao {
 
     /**
      * When dataSource is provided, instantiate spring jdbc objects.
-     *
-     * @param dataSource
      */
     public void setDataSource(DataSource dataSource) {
         this.jdbcTemplateObject = new JdbcTemplate(dataSource);
@@ -99,15 +93,12 @@ public class CldsDao {
         this.procGetTemplate = new SimpleJdbcCall(dataSource).withProcedureName("get_template");
         this.procSetTemplate = new SimpleJdbcCall(dataSource).withProcedureName("set_template");
         this.procInsModelInstance = new SimpleJdbcCall(dataSource).withProcedureName("ins_model_instance");
-        this.procDelModelInstance = new SimpleJdbcCall(dataSource).withProcedureName("del_model_instance");
         this.procDelAllModelInstances = new SimpleJdbcCall(dataSource).withProcedureName("del_all_model_instances");
+        this.procDeleteModel = new SimpleJdbcCall(dataSource).withProcedureName("del_model");
     }
 
     /**
      * Get a model from the database given the model name.
-     *
-     * @param modelName
-     * @return model
      */
     public CldsModel getModel(String modelName) {
         return getModel(modelName, null);
@@ -115,51 +106,19 @@ public class CldsDao {
 
     /**
      * Get a model from the database given the controlNameUuid.
-     *
-     * @param controlNameUuid
-     * @return model
      */
     public CldsModel getModelByUuid(String controlNameUuid) {
         return getModel(null, controlNameUuid);
     }
 
-    /**
-     * Get a model from the database given the model name or a controlNameUuid.
-     *
-     * @param modelName
-     * @return model
-     */
+    // Get a model from the database given the model name or a controlNameUuid.
     private CldsModel getModel(String modelName, String controlNameUuid) {
         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.setBpmnId((String) (out.get("v_template_bpmn_id")));
-        model.setBpmnUserid((String) out.get("v_template_bpmn_user_id"));
-        model.setBpmnText((String) out.get("v_template_bpmn_text"));
-        model.setPropId((String) (out.get("v_model_prop_id")));
-        model.setPropUserid((String) out.get("v_model_prop_user_id"));
-        model.setPropText((String) out.get("v_model_prop_text"));
-        model.setImageId((String) (out.get("v_template_image_id")));
-        model.setImageUserid((String) out.get("v_template_image_user_id"));
-        model.setImageText((String) out.get("v_template_image_text"));
-        model.setDocId((String) (out.get("v_template_doc_id")));
-        model.setDocUserid((String) out.get("v_template_doc_user_id"));
-        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;
     }
 
@@ -176,32 +135,7 @@ public class CldsDao {
         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.setBpmnId((String) (out.get("v_template_bpmn_id")));
-        model.setBpmnUserid((String) out.get("v_template_bpmn_user_id"));
-        model.setBpmnText((String) out.get("v_template_bpmn_text"));
-        model.setPropId((String) (out.get("v_model_prop_id")));
-        model.setPropUserid((String) out.get("v_model_prop_user_id"));
-        model.setPropText((String) out.get("v_model_prop_text"));
-        model.setImageId((String) (out.get("v_template_image_id")));
-        model.setImageUserid((String) out.get("v_template_image_user_id"));
-        model.setImageText((String) out.get("v_template_image_text"));
-        model.setDocId((String) (out.get("v_template_doc_id")));
-        model.setDocUserid((String) out.get("v_template_doc_user_id"));
-        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) {
@@ -236,15 +170,11 @@ public class CldsDao {
                 .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.setPropId((String) (out.get("v_model_prop_id")));
-        model.setPropUserid((String) (out.get("v_model_prop_user_id")));
-        model.setBlueprintId((String) (out.get("v_model_blueprint_id")));
-        model.setBlueprintUserid((String) out.get("v_model_blueprint_user_id"));
         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"));
@@ -265,7 +195,6 @@ public class CldsDao {
         // Delete all existing model instances for given controlNameUUID
         logger.debug("deleting instances for: {}", model.getControlNameUuid());
         delAllModelInstances(model.getControlNameUuid());
-
         if (modelInstancesList == null) {
             logger.debug("modelInstancesList == null");
         } else {
@@ -274,7 +203,7 @@ public class CldsDao {
                 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);
@@ -288,29 +217,6 @@ public class CldsDao {
         }
     }
 
-    /**
-     * Delete a list of modelInstance from the database using parameter values
-     * and returns updated model object. This method is defunct - DCAE Proxy
-     * will not undeploy individual instances. It will send an empty list of
-     * deployed instances to indicate all have been removed. Or it will send an
-     * updated list to indicate those that are still deployed with any not on
-     * the list considered undeployed.
-     *
-     * @param controlNameUUid
-     * @param modelInstancesList
-     * @return
-     */
-    private CldsModel delModelInstance(String controlNameUUid, List<CldsModelInstance> modelInstancesList) {
-        CldsModel model = new CldsModel();
-        for (CldsModelInstance currModelInstance : modelInstancesList) {
-            SqlParameterSource in = new MapSqlParameterSource().addValue("v_control_name_uuid", controlNameUUid)
-                    .addValue("v_vm_name", currModelInstance.getVmName());
-            Map<String, Object> out = logSqlExecution(procDelModelInstance, in);
-            model.setId((String) (out.get("v_model_id")));
-        }
-        return model;
-    }
-
     /**
      * Insert an event in the database - require either modelName or
      * controlNamePrefix/controlNameUuid.
@@ -324,7 +230,7 @@ public class CldsDao {
     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());
@@ -333,14 +239,8 @@ public class CldsDao {
         return event;
     }
 
-    /**
-     * Method to delete all model instances based on controlNameUUID
-     *
-     * @param controlNameUUid
-     * @return
-     */
     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"));
     }
@@ -357,49 +257,14 @@ public class CldsDao {
         logSqlExecution(procUpdEvent, in);
     }
 
-    /**
-     * Generic mapper for list of values
-     */
-    private static final class ValueItemMapper implements RowMapper<ValueItem> {
-        @Override
-        public ValueItem mapRow(ResultSet rs, int rowNum) throws SQLException {
-            ValueItem item = new ValueItem();
-            item.setValue(rs.getString(1));
-            return item;
-        }
-    }
-
-    /**
-     * Generic mapper for CldsDBServiceCache
-     */
-    private static final class CldsServiceDataMapper implements RowMapper<CldsServiceData> {
-        @Override
-        public CldsServiceData mapRow(ResultSet rs, int rowNum) throws SQLException {
-            CldsServiceData cldsServiceData = new CldsServiceData();
-            long age;
-            age = rs.getLong(5);
-            Blob blob = rs.getBlob(4);
-            InputStream is = blob.getBinaryStream();
-            ObjectInputStream oip;
-            try {
-                oip = new ObjectInputStream(is);
-                cldsServiceData = (CldsServiceData) oip.readObject();
-                cldsServiceData.setAgeOfRecord(age);
-            } catch (IOException | ClassNotFoundException e) {
-                logger.error("Error caught while retrieving cldsServiceData from database");
-            }
-            return cldsServiceData;
-        }
-    }
-
     /**
      * Return list of model names
      *
      * @return model names
      */
     public List<ValueItem> getBpmnNames() {
-        String SQL = "SELECT model_name FROM model ORDER BY 1;";
-        return jdbcTemplateObject.query(SQL, new ValueItemMapper());
+        String sql = "SELECT model_name FROM model ORDER BY 1;";
+        return jdbcTemplateObject.query(sql, new ValueItemMapper());
     }
 
     /**
@@ -408,9 +273,8 @@ public class CldsDao {
      *
      * @param template
      * @param userid
-     * @return
      */
-    public CldsTemplate setTemplate(CldsTemplate template, String userid) {
+    public void setTemplate(CldsTemplate template, String userid) {
         SqlParameterSource in = new MapSqlParameterSource().addValue("v_template_name", template.getName())
                 .addValue("v_user_id", userid).addValue("v_template_bpmn_text", template.getBpmnText())
                 .addValue("v_template_image_text", template.getImageText())
@@ -419,14 +283,10 @@ public class CldsDao {
         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;
     }
 
     /**
@@ -435,8 +295,8 @@ public class CldsDao {
      * @return template names
      */
     public List<ValueItem> getTemplateNames() {
-        String SQL = "SELECT template_name FROM template ORDER BY 1;";
-        return jdbcTemplateObject.query(SQL, new ValueItemMapper());
+        String sql = "SELECT template_name FROM template ORDER BY 1;";
+        return jdbcTemplateObject.query(sql, new ValueItemMapper());
     }
 
     /**
@@ -463,22 +323,33 @@ public class CldsDao {
         return template;
     }
 
-    public CldsServiceData getCldsServiceCache(String invariantUUID)
-            throws SQLException, IOException, ClassNotFoundException {
+    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);
+            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.info("cache row not found for invariantUUID: {}", invariantUUID);
+            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) throws SQLException, IOException {
+    public void setCldsServiceCache(CldsDbServiceCache cldsDBServiceCache) {
         if (cldsDBServiceCache != null && cldsDBServiceCache.getInvariantId() != null
                 && cldsDBServiceCache.getServiceId() != null) {
             String invariantUuid = cldsDBServiceCache.getInvariantId();
@@ -500,8 +371,96 @@ public class CldsDao {
         }
     }
 
-    public void doHealthCheck() throws SQLException, IOException {
-        jdbcTemplateObject.execute(healthcheck);
+    public void doHealthCheck() {
+        jdbcTemplateObject.execute(HEALTHCHECK);
     }
 
+    /**
+     * Method to get deployed/active models with model properties.
+     * 
+     * @return list of CldsModelProp
+     */
+    public List<CldsModelProp> getDeployedModelProperties() {
+        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);
+        CldsModelProp cldsModelProp = null;
+        for (Map<String, Object> row : rows) {
+            cldsModelProp = new CldsModelProp();
+            cldsModelProp.setId((String) row.get("model_id"));
+            cldsModelProp.setName((String) row.get("model_name"));
+            cldsModelProp.setPropId((String) row.get("model_prop_id"));
+            cldsModelProp.setPropText((String) row.get("model_prop_text"));
+            cldsModelPropList.add(cldsModelProp);
+        }
+        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"));            
+    }    
 }