058358393dbdc8dd2a46f8201595bdda27399925
[vicar] / src / vicar-config-qml / qml / vicarconfigqml / Library / js / DBUtility.js
1 /*
2 @version: 0.2
3 @author: Sudheer K. <scifi1947 at gmail.com>
4 @license: GNU General Public License
5 */
6
7 function getDatabase() {
8      logMessage("Opening VICaR database..");
9      return openDatabaseSync("VICaR", "1.0", "StorageDatabase", 100);
10 }
11
12 function logMessage(strMessage){
13     if (typeof(logUtility)!== 'undefined'){
14         logUtility.logMessage(strMessage);
15     }
16     else{        
17         console.log(strMessage);
18     }
19 }
20
21 // Initialize tables
22 function initialize() {
23     var db = getDatabase();
24     db.transaction(
25         function(tx) {
26             // Create the settings table if it doesn't already exist
27             // If the table exists, this is skipped
28             tx.executeSql('CREATE TABLE IF NOT EXISTS settings(setting TEXT PRIMARY KEY, value TEXT)');
29             tx.executeSql('CREATE TABLE IF NOT EXISTS rules(id INTEGER PRIMARY KEY, numberpattern TEXT, gatewaynumber TEXT, dtmfformat TEXT, dtmfprefix TEXT, dtmfsuffix TEXT)');
30           },
31         function(error) {
32             logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
33          });
34 }
35
36 function getSetting(setting) {
37     var db = getDatabase();
38     var res="";
39     db.transaction(
40       function(tx) {
41           var rs = tx.executeSql('SELECT value FROM settings WHERE setting=?;', [setting]);
42           if (rs.rows.length > 0) {
43                res = rs.rows.item(0).value;
44                logMessage(setting+" is "+res);
45           } else {
46               res = "Unknown";
47           }
48       },
49       function(error) {
50          logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
51       }
52      );
53      return res;
54 }
55
56
57 function setSetting(setting, value) {
58     var db = getDatabase();
59     var res = "";
60     db.transaction(
61         function(tx) {
62             var rs = tx.executeSql('INSERT OR REPLACE INTO settings VALUES (?,?);', [setting,value]);
63             if (rs.rowsAffected > 0) {
64                 res = "OK";
65                 logMessage("Updated "+setting+" to "+value);
66             } else {
67              res = "Error";
68             }
69         },
70         function(error) {
71             logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
72         }
73     );
74    return res;
75 }
76
77 function addRule(ruleObj){
78     logMessage('SQL> INSERT INTO rules(id, numberpattern, gatewaynumber, dtmfformat, dtmfprefix, dtmfsuffix) VALUES (NULL, '+[ruleObj.numberpattern, ruleObj.gatewaynumber, ruleObj.dtmfformat, ruleObj.dtmfprefix, ruleObj.dtmfsuffix]+')');
79     var db = getDatabase();
80     var res = "";
81     logMessage("Opened VICaR database..");
82
83     db.transaction(function(tx) {
84                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]);
85                logMessage("Inserted "+rs.rowsAffected+" rows");
86                if (rs.rowsAffected > 0) {
87                  res = "OK";
88                } else {
89                  res = "Error";
90                }
91          },
92          function(error) {
93            logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
94          }
95    );
96    return res;
97 }
98
99 function updateRule(id,ruleObj){
100     logMessage('SQL> UPDATE rules set numberpattern = '+[ruleObj.numberpattern]+
101                ', gatewaynumber = '+[ruleObj.gatewaynumber]+
102                ', dtmfformat = '+[ruleObj.dtmfformat]+
103                ', dtmfprefix = '+[ruleObj.dtmfprefix]+
104                ', dtmfsuffix = '+[ruleObj.dtmfsuffix]+
105                ' WHERE id = ?'+[id]);
106     var db = getDatabase();
107     var res = "";
108     db.transaction(function(tx) {
109            var rs = tx.executeSql('UPDATE rules set numberpattern = ?, gatewaynumber = ?, dtmfformat = ?, dtmfprefix = ?, dtmfsuffix = ? WHERE id = ?;',
110                             [ruleObj.numberpattern, ruleObj.gatewaynumber, ruleObj.dtmfformat, ruleObj.dtmfprefix, ruleObj.dtmfsuffix, id]);
111            logMessage("Updated "+rs.rowsAffected+" rows");
112            if (rs.rowsAffected > 0) {
113              res = "OK";
114            } else {
115              res = "Error";
116            }
117          },
118          function(error) {
119             logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
120          }
121    );
122    return res;
123 }
124
125 function removeRule(id){
126     logMessage('SQL> DELETE FROM rules WHERE id = '+[id]);
127     var db = getDatabase();
128     var res = "";
129     db.transaction(function(tx) {
130          var rs = tx.executeSql('DELETE FROM rules WHERE id = ?;', [id]);
131                logMessage("Deleted "+rs.rowsAffected+" rows");
132                if (rs.rowsAffected > 0) {
133                  res = "OK";
134                } else {
135                  res = "Error";
136                }
137          },
138          function(error) {
139             logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
140          }
141    );
142    return res;
143 }
144
145 function getAllRules(){
146     var db = getDatabase();
147     var rulesArray = new Array();
148     var ruleObj;
149     db.transaction(function(tx) {
150            var rs = tx.executeSql('SELECT * FROM rules');
151            logMessage("Fetched "+rs.rows.length+" rows");
152            var i = 0;
153            for (i = 0; i < rs.rows.length; i++){
154                ruleObj = new Object();
155                ruleObj.id = rs.rows.item(i).id;
156                ruleObj.numberpattern = rs.rows.item(i).numberpattern;
157                ruleObj.gatewaynumber = rs.rows.item(i).gatewaynumber;
158                ruleObj.dtmfformat = rs.rows.item(i).dtmfformat;
159                ruleObj.dtmfprefix = rs.rows.item(i).dtmfprefix;
160                ruleObj.dtmfsuffix = rs.rows.item(i).dtmfsuffix;
161                rulesArray[i] = ruleObj;
162                logMessage("id = "+ruleObj.id
163                           +", numberpattern = "+ruleObj.numberpattern
164                           +", gatewaynumber = "+ruleObj.gatewaynumber
165                           +", dtmfformat = "+ruleObj.dtmfformat
166                           +", dtmfprefix = "+ruleObj.dtmfprefix
167                           +", dtmfsuffix = "+ruleObj.dtmfsuffix);
168            }
169        },
170        function(error) {
171            logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
172        }
173    );
174    return rulesArray;
175 }
176
177
178 function getRuleByID(id){
179     var db = getDatabase();
180     var ruleObj;
181     db.transaction(function(tx) {
182            logMessage('SQL> SELECT * FROM rules WHERE id = '+[id]);
183            var rs = tx.executeSql('SELECT * FROM rules WHERE id = '+[id]);
184            logMessage("Fetched "+rs.rows.length+" rows");
185            if (rs.rows.length > 0){
186                ruleObj = new Object();
187                ruleObj.id = rs.rows.item(0).id;
188                ruleObj.numberpattern = rs.rows.item(0).numberpattern;
189                ruleObj.gatewaynumber = rs.rows.item(0).gatewaynumber;
190                ruleObj.dtmfformat = rs.rows.item(0).dtmfformat;
191                ruleObj.dtmfprefix = rs.rows.item(0).dtmfprefix;
192                ruleObj.dtmfsuffix = rs.rows.item(0).dtmfsuffix;
193                logMessage("id = "+ruleObj.id
194                           +", numberpattern = "+ruleObj.numberpattern
195                           +", gatewaynumber = "+ruleObj.gatewaynumber
196                           +", dtmfformat = "+ruleObj.dtmfformat
197                           +", dtmfprefix = "+ruleObj.dtmfprefix
198                           +", dtmfsuffix = "+ruleObj.dtmfsuffix);
199            }
200        },
201        function(error) {
202            logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred.");
203        }
204    );
205    return ruleObj;
206 }