Version 0.7-0
[vicar] / src / vicar-config-qml / qml / vicarconfigqml / Library / js / DBUtility.js
diff --git a/src/vicar-config-qml/qml/vicarconfigqml/Library/js/DBUtility.js b/src/vicar-config-qml/qml/vicarconfigqml/Library/js/DBUtility.js
new file mode 100644 (file)
index 0000000..0583583
--- /dev/null
@@ -0,0 +1,206 @@
+/*
+@version: 0.2
+@author: Sudheer K. <scifi1947 at gmail.com>
+@license: GNU General Public License
+*/
+
+function getDatabase() {
+     logMessage("Opening VICaR database..");
+     return openDatabaseSync("VICaR", "1.0", "StorageDatabase", 100);
+}
+
+function logMessage(strMessage){
+    if (typeof(logUtility)!== 'undefined'){
+        logUtility.logMessage(strMessage);
+    }
+    else{        
+        console.log(strMessage);
+    }
+}
+
+// Initialize tables
+function initialize() {
+    var db = getDatabase();
+    db.transaction(
+        function(tx) {
+            // Create the settings table if it doesn't already exist
+            // If the table exists, this is skipped
+            tx.executeSql('CREATE TABLE IF NOT EXISTS settings(setting TEXT PRIMARY KEY, value TEXT)');
+            tx.executeSql('CREATE TABLE IF NOT EXISTS rules(id INTEGER PRIMARY KEY, numberpattern TEXT, gatewaynumber TEXT, dtmfformat TEXT, dtmfprefix TEXT, dtmfsuffix TEXT)');
+          },
+        function(error) {
+            logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
+         });
+}
+
+function getSetting(setting) {
+    var db = getDatabase();
+    var res="";
+    db.transaction(
+      function(tx) {
+          var rs = tx.executeSql('SELECT value FROM settings WHERE setting=?;', [setting]);
+          if (rs.rows.length > 0) {
+               res = rs.rows.item(0).value;
+               logMessage(setting+" is "+res);
+          } else {
+              res = "Unknown";
+          }
+      },
+      function(error) {
+         logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
+      }
+     );
+     return res;
+}
+
+
+function setSetting(setting, value) {
+    var db = getDatabase();
+    var res = "";
+    db.transaction(
+        function(tx) {
+            var rs = tx.executeSql('INSERT OR REPLACE INTO settings VALUES (?,?);', [setting,value]);
+            if (rs.rowsAffected > 0) {
+                res = "OK";
+                logMessage("Updated "+setting+" to "+value);
+            } else {
+             res = "Error";
+            }
+        },
+        function(error) {
+            logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
+        }
+    );
+   return res;
+}
+
+function addRule(ruleObj){
+    logMessage('SQL> INSERT INTO rules(id, numberpattern, gatewaynumber, dtmfformat, dtmfprefix, dtmfsuffix) VALUES (NULL, '+[ruleObj.numberpattern, ruleObj.gatewaynumber, ruleObj.dtmfformat, ruleObj.dtmfprefix, ruleObj.dtmfsuffix]+')');
+    var db = getDatabase();
+    var res = "";
+    logMessage("Opened VICaR database..");
+
+    db.transaction(function(tx) {
+               var rs = tx.executeSql('INSERT INTO rules(id, numberpattern, gatewaynumber, dtmfformat, dtmfprefix, dtmfsuffix) VALUES (NULL, ?, ?, ?, ?, ?);', [ruleObj.numberpattern, ruleObj.gatewaynumber, ruleObj.dtmfformat, ruleObj.dtmfprefix, ruleObj.dtmfsuffix]);
+               logMessage("Inserted "+rs.rowsAffected+" rows");
+               if (rs.rowsAffected > 0) {
+                 res = "OK";
+               } else {
+                 res = "Error";
+               }
+         },
+         function(error) {
+           logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
+         }
+   );
+   return res;
+}
+
+function updateRule(id,ruleObj){
+    logMessage('SQL> UPDATE rules set numberpattern = '+[ruleObj.numberpattern]+
+               ', gatewaynumber = '+[ruleObj.gatewaynumber]+
+               ', dtmfformat = '+[ruleObj.dtmfformat]+
+               ', dtmfprefix = '+[ruleObj.dtmfprefix]+
+               ', dtmfsuffix = '+[ruleObj.dtmfsuffix]+
+               ' WHERE id = ?'+[id]);
+    var db = getDatabase();
+    var res = "";
+    db.transaction(function(tx) {
+           var rs = tx.executeSql('UPDATE rules set numberpattern = ?, gatewaynumber = ?, dtmfformat = ?, dtmfprefix = ?, dtmfsuffix = ? WHERE id = ?;',
+                            [ruleObj.numberpattern, ruleObj.gatewaynumber, ruleObj.dtmfformat, ruleObj.dtmfprefix, ruleObj.dtmfsuffix, id]);
+           logMessage("Updated "+rs.rowsAffected+" rows");
+           if (rs.rowsAffected > 0) {
+             res = "OK";
+           } else {
+             res = "Error";
+           }
+         },
+         function(error) {
+            logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
+         }
+   );
+   return res;
+}
+
+function removeRule(id){
+    logMessage('SQL> DELETE FROM rules WHERE id = '+[id]);
+    var db = getDatabase();
+    var res = "";
+    db.transaction(function(tx) {
+         var rs = tx.executeSql('DELETE FROM rules WHERE id = ?;', [id]);
+               logMessage("Deleted "+rs.rowsAffected+" rows");
+               if (rs.rowsAffected > 0) {
+                 res = "OK";
+               } else {
+                 res = "Error";
+               }
+         },
+         function(error) {
+            logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
+         }
+   );
+   return res;
+}
+
+function getAllRules(){
+    var db = getDatabase();
+    var rulesArray = new Array();
+    var ruleObj;
+    db.transaction(function(tx) {
+           var rs = tx.executeSql('SELECT * FROM rules');
+           logMessage("Fetched "+rs.rows.length+" rows");
+           var i = 0;
+           for (i = 0; i < rs.rows.length; i++){
+               ruleObj = new Object();
+               ruleObj.id = rs.rows.item(i).id;
+               ruleObj.numberpattern = rs.rows.item(i).numberpattern;
+               ruleObj.gatewaynumber = rs.rows.item(i).gatewaynumber;
+               ruleObj.dtmfformat = rs.rows.item(i).dtmfformat;
+               ruleObj.dtmfprefix = rs.rows.item(i).dtmfprefix;
+               ruleObj.dtmfsuffix = rs.rows.item(i).dtmfsuffix;
+               rulesArray[i] = ruleObj;
+               logMessage("id = "+ruleObj.id
+                          +", numberpattern = "+ruleObj.numberpattern
+                          +", gatewaynumber = "+ruleObj.gatewaynumber
+                          +", dtmfformat = "+ruleObj.dtmfformat
+                          +", dtmfprefix = "+ruleObj.dtmfprefix
+                          +", dtmfsuffix = "+ruleObj.dtmfsuffix);
+           }
+       },
+       function(error) {
+           logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
+       }
+   );
+   return rulesArray;
+}
+
+
+function getRuleByID(id){
+    var db = getDatabase();
+    var ruleObj;
+    db.transaction(function(tx) {
+           logMessage('SQL> SELECT * FROM rules WHERE id = '+[id]);
+           var rs = tx.executeSql('SELECT * FROM rules WHERE id = '+[id]);
+           logMessage("Fetched "+rs.rows.length+" rows");
+           if (rs.rows.length > 0){
+               ruleObj = new Object();
+               ruleObj.id = rs.rows.item(0).id;
+               ruleObj.numberpattern = rs.rows.item(0).numberpattern;
+               ruleObj.gatewaynumber = rs.rows.item(0).gatewaynumber;
+               ruleObj.dtmfformat = rs.rows.item(0).dtmfformat;
+               ruleObj.dtmfprefix = rs.rows.item(0).dtmfprefix;
+               ruleObj.dtmfsuffix = rs.rows.item(0).dtmfsuffix;
+               logMessage("id = "+ruleObj.id
+                          +", numberpattern = "+ruleObj.numberpattern
+                          +", gatewaynumber = "+ruleObj.gatewaynumber
+                          +", dtmfformat = "+ruleObj.dtmfformat
+                          +", dtmfprefix = "+ruleObj.dtmfprefix
+                          +", dtmfsuffix = "+ruleObj.dtmfsuffix);
+           }
+       },
+       function(error) {
+           logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
+       }
+   );
+   return ruleObj;
+}