MUSIC-ORM-Implemetation
[music.git] / src / main / java / org / onap / music / datastore / jsonobjects / JsonKeySpace.java
index f2232ff..cada1c0 100644 (file)
@@ -4,6 +4,8 @@
  * ===================================================================
  *  Copyright (c) 2017 AT&T Intellectual Property
  * ===================================================================
+ *  Modifications Copyright (C) 2019 IBM 
+ * ===================================================================
  *  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
@@ -24,6 +26,16 @@ package org.onap.music.datastore.jsonobjects;
 
 import java.util.Map;
 
+import javax.ws.rs.core.Response.Status;
+
+import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
+import org.onap.music.exceptions.MusicQueryException;
+import org.onap.music.main.MusicUtil;
+
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
 import io.swagger.annotations.ApiModel;
@@ -32,6 +44,7 @@ import io.swagger.annotations.ApiModelProperty;
 @ApiModel(value = "JsonTable", description = "Json model creating new keyspace")
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class JsonKeySpace {
+    private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(JsonKeySpace.class);
     private String keyspaceName;
     private Map<String, Object> replicationInfo;
     private String durabilityOfWrites;
@@ -73,6 +86,78 @@ public class JsonKeySpace {
         this.keyspaceName = keyspaceName;
     }
 
+    /**
+     * Will generate query to create Keyspacce.
+     * 
+     * @throws MusicQueryException
+     */
+    @SuppressWarnings("deprecation")
+    public PreparedQueryObject genCreateKeyspaceQuery() throws MusicQueryException {
+
+        if (logger.isDebugEnabled()) {
+            logger.debug("Came inside createKeyspace method");
+        }
+
+        String keyspaceName = this.getKeyspaceName();
+        String durabilityOfWrites = this.getDurabilityOfWrites();
+        String consistency = MusicUtil.EVENTUAL;
+
+        logger.info("genCreateKeyspaceQuery keyspaceName ::" + keyspaceName);
+        logger.info("genCreateKeyspaceQuery class :: " + this.getReplicationInfo().get("class"));
+        logger.info("genCreateKeyspaceQuery replication_factor :: " + this.getReplicationInfo().get("replication_factor"));
+        logger.info("genCreateKeyspaceQuery durabilityOfWrites :: " + durabilityOfWrites);
+
+        PreparedQueryObject queryObject = new PreparedQueryObject();
+        
+        if(consistency.equalsIgnoreCase(MusicUtil.EVENTUAL) && this.getConsistencyInfo().get("consistency") != null) {
+            if(MusicUtil.isValidConsistency(this.getConsistencyInfo().get("consistency"))) {
+                queryObject.setConsistency(this.getConsistencyInfo().get("consistency"));
+            }else {
+                throw new MusicQueryException("Invalid Consistency type",Status.BAD_REQUEST.getStatusCode());
+            }  
+        }
+        
+        long start = System.currentTimeMillis();
+        Map<String, Object> replicationInfo = this.getReplicationInfo();
+        String repString = null;
+        try {
+            repString = "{" + MusicUtil.jsonMaptoSqlString(replicationInfo, ",") + "}";
+        } catch (Exception e) {
+            logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.MISSINGDATA,
+                    ErrorSeverity.CRITICAL, ErrorTypes.DATAERROR);
+        }
+        queryObject.appendQueryString("CREATE KEYSPACE " + keyspaceName + " WITH replication = " + repString);
+        if (this.getDurabilityOfWrites() != null) {
+            queryObject.appendQueryString(" AND durable_writes = " + this.getDurabilityOfWrites());
+        }
+        queryObject.appendQueryString(";");
+        long end = System.currentTimeMillis();
+        logger.info(EELFLoggerDelegate.applicationLogger,
+                "Time taken for setting up query in create keyspace:" + (end - start));
+
+        return queryObject;
+    }
+
+    /**
+     * Will generate Query to drop a keyspace.
+     * 
+     * @return
+     */
+    public PreparedQueryObject genDropKeyspaceQuery() {
+        if (logger.isDebugEnabled()) {
+            logger.debug("Coming inside genDropKeyspaceQuery method "+this.getKeyspaceName());
+        }
 
+        PreparedQueryObject queryObject = new PreparedQueryObject();
+        queryObject.appendQueryString("DROP KEYSPACE " + this.getKeyspaceName() + ";");
+
+        return queryObject;
+    }
+
+    @Override
+    public String toString() {
+        return "CassaKeyspaceObject [keyspaceName=" + keyspaceName + ", replicationInfo=" + replicationInfo
+                + "durabilityOfWrites=" + durabilityOfWrites + "]";
+    }
 
 }