Deadlock detection by owner
[music.git] / src / main / java / org / onap / music / datastore / PreparedQueryObject.java
index 9b10963..fdac50b 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START==========================================
  * org.onap.music
  * ===================================================================
- *  Copyright (c) 2017 AT&T Intellectual Property
+ *  Copyright (c) 2017-2019 AT&T Intellectual Property
  * ===================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -42,6 +42,35 @@ public class PreparedQueryObject {
     private String primaryKeyValue;
 
 
+    /**
+     * Create PreparedQueryObject
+     */
+    public PreparedQueryObject() {
+        this.values = new ArrayList<>();
+        this.query = new StringBuilder();
+    }
+    
+    /**
+     * Create PreparedQueryObject
+     * @param query query portion of the prepared query
+     */
+    public PreparedQueryObject(String query) {
+        this.values = new ArrayList<>();
+        this.query = new StringBuilder(query);
+    }
+    
+    /**
+     * Create PreparedQueryObject
+     * @param query query portion of the prepared query
+     * @param values to be added to the query string as prepared query
+     */
+    public PreparedQueryObject(String query, Object...values) {
+        this.query = new StringBuilder(query);
+        this.values = new ArrayList<>();
+        for (Object value: values) {
+            this.values.add(value);
+        }
+    }
 
     public String getKeyspaceName() {
         return keyspaceName;
@@ -60,7 +89,28 @@ public class PreparedQueryObject {
     }
 
     public String getOperation() {
-        return operation;
+        if (operation!=null) return operation;
+        if (query.length()==0) return null;
+        String queryStr = query.toString().toLowerCase();
+        String firstOp = null;
+        int firstOpChar = query.length();
+        if (queryStr.indexOf("insert")>-1 && queryStr.indexOf("insert")<firstOpChar) {
+            firstOp = "insert";
+            firstOpChar = queryStr.indexOf("insert");
+        }
+        if (queryStr.indexOf("update")>-1 && queryStr.indexOf("update")<firstOpChar) {
+            firstOp = "update";
+            firstOpChar = queryStr.indexOf("update");
+        }
+        if (queryStr.indexOf("delete")>-1 && queryStr.indexOf("delete")<firstOpChar) {
+            firstOp = "delete";
+            firstOpChar = queryStr.indexOf("delete");
+        }
+        if (queryStr.indexOf("select")>-1 && queryStr.indexOf("select")<firstOpChar) {
+            firstOp = "select";
+            firstOpChar = queryStr.indexOf("select");
+        }
+        return firstOp;
     }
 
     public void setOperation(String operation) {
@@ -84,27 +134,28 @@ public class PreparedQueryObject {
     }
 
     /**
-     * 
-     */
-    public PreparedQueryObject() {
-
-        this.values = new ArrayList<>();
-        this.query = new StringBuilder();
-    }
-
-    /**
-     * @return
+     * @return values to be set as part of the prepared query
      */
     public List<Object> getValues() {
         return values;
     }
 
     /**
-     * @param o
+     * @param o object to be added as a value to the prepared query, in order
      */
     public void addValue(Object o) {
         this.values.add(o);
     }
+    
+    /**
+     * Add values to the preparedQuery
+     * @param objs ordered list of objects to be added as values to the prepared query
+     */
+    public void addValues(Object... objs) {
+        for (Object obj: objs) {
+            this.values.add(obj);
+        }
+    }
 
     /**
      * @param s
@@ -117,12 +168,9 @@ public class PreparedQueryObject {
     }
 
     /**
-     * @return
+     * @return the query
      */
     public String getQuery() {
         return this.query.toString();
     }
-
-
-
 }