annotate chrome/content/loader.js @ 5:8f7e53bfe0e8

not to show silly alert
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sat, 23 May 2009 11:56:02 +0900
parents c47ec96326ad
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1 var LoaderBase = function(){};
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
2 LoaderBase.prototype = {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
3 init: function(loadingBox, loadingMessage, database, callback) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
4 this.loadingBox = loadingBox;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
5 this.loadingMessage = loadingMessage;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
6 this.database = database;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
7 this.callback = callback || function() {};
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
8
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
9 try {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
10 this.insertHandler = new UpdateHandler(this.database, this.insertSql);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
11 } catch(e) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
12 this.error(e.message || e);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
13 throw e;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
14 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
15 this.load();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
16 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
17 insertSql: "INSERT INTO bookmark VALUES(:id, :url, :title, :info, :tags, :time, UPPER(:title||' '||:info||' '||:tags))",
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
18 truncateSql: 'DELETE FROM bookmark',
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
19
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
20 load: function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
21 this.dispStart();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
22
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
23 this.bookmarks = [];
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
24 this.total = null;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
25
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
26 this._load();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
27 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
28 dispStart: function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
29 Glayer.showBox(this.loadingBox);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
30 this.loadingMessage.innerHTML = 'Bookmarks Loading...';
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
31 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
32 dispLoading: function(count) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
33 this.loadingMessage.innerHTML = 'Bookmarks Loading... ' + count + '/' + this.total;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
34 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
35 dispEnd: function(count) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
36 this.loadingBox.style.display = 'none';
5
8f7e53bfe0e8 not to show silly alert
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 0
diff changeset
37 // Glayer.showAlert('Finish!! loaded ' + count + ' bookmarks', {callback: function(){ incsearch.input.focus(); Glayer.hideAlert(); }});
8f7e53bfe0e8 not to show silly alert
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 0
diff changeset
38 // document.getElementById(Glayer.defaultAlert.okId).focus();
8f7e53bfe0e8 not to show silly alert
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 0
diff changeset
39
8f7e53bfe0e8 not to show silly alert
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 0
diff changeset
40 Glayer.hide();
8f7e53bfe0e8 not to show silly alert
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 0
diff changeset
41 incsearch.input.focus();
0
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
42
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
43 incsearch.reset();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
44 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
45 error: function(errMsg) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
46 this.loadingBox.style.display = 'none';
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
47
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
48 var self = this;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
49 Glayer.showConfirm(
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
50 errMsg,
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
51 function(result){
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
52 Glayer.hideConfirm();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
53 if (result) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
54 self.dispStart();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
55 self._load();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
56 } else {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
57 incsearch.input.focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
58 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
59 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
60 {okLabel: 'Retry', cancelLabel: 'cancel'}
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
61 );
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
62 document.getElementById(Glayer.defaultConfirm.cancelId).focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
63
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
64 throw errMsg;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
65 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
66
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
67 truncate: function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
68 this.database.execute(this.truncateSql);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
69 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
70 insert: function(bookmark) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
71 this.insertHandler.execute(bookmark);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
72 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
73
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
74 update: function(bookmarks) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
75
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
76 var self = this;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
77
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
78 var conn = this.database.connection;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
79 try {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
80 conn.beginTransaction();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
81 this.truncate();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
82
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
83 for (var i = 0, len = bookmarks.length; i < len; i++) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
84 if (i % 100 == 0) yield i;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
85 this.insert(bookmarks[i]);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
86 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
87
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
88 conn.commitTransaction();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
89 } catch(e) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
90 conn.rollbackTransaction();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
91
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
92 this.error(e.message || e);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
93 throw e;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
94 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
95 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
96 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
97
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
98
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
99 var Executer = function(generator, interval, func, callback) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
100 this.generator = generator;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
101 this.func = func || function(){};
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
102 this.interval = interval;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
103 this.callback = callback;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
104
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
105 var self = this;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
106 this.run = function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
107 try{
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
108 self.func(self.generator.next());
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
109 setTimeout(function(){self.run()}, self.interval);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
110 } catch (e) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
111 if (e instanceof StopIteration) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
112 self.callback();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
113 } else {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
114 throw e;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
115 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
116 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
117 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
118 };
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
119