27 Components.utils.import(
"resource://gre/modules/XPCOMUtils.jsm");
28 Components.utils.import(
"resource://app/jsmodules/ArrayConverter.jsm");
29 Components.utils.import(
"resource://app/jsmodules/sbLocalDatabaseMigrationUtils.jsm");
30 Components.utils.import(
"resource://app/jsmodules/SBJobUtils.jsm");
32 const Cc = Components.classes;
33 const Ci = Components.interfaces;
34 const Cr = Components.results;
37 dump(
"----++++----++++\nsbLocalDatabaseMigrate070RC1to070 ---> " +
39 "\n----++++----++++\n");
44 SBLocalDatabaseMigrationUtils.BaseMigrationHandler.call(
this);
55 __proto__: SBLocalDatabaseMigrationUtils.BaseMigrationHandler.prototype,
58 classID: Components.ID(
"{60e48ff7-13b4-498d-9c2e-a077a34a9ca6}"),
59 contractID: SBLocalDatabaseMigrationUtils.baseHandlerContractID +
"0.7.0 RC1 to 0.7.0",
61 _databaseLocation:
null,
66 migrate:
function sbLDBM070RC1to070_migrate(aLibrary) {
67 this._databaseGUID = aLibrary.databaseGuid;
68 this._databaseLocation = aLibrary.databaseLocation;
70 this._getMediaItems();
72 var query = this._createQuery();
73 query.addQuery(
"begin");
76 query.addQuery(
"alter table media_items add column is_list integer not null check(is_list in (0, 1)) default 0");
78 query.addQuery(
"alter table library_media_item add column is_list integer not null check(is_list in (0, 1)) default 0");
80 query.addQuery(
"create index idx_media_items_is_list on media_items (is_list)");
82 for(let
i = 0;
i < this._mediaItems.length; ++
i) {
83 let
str =
"update media_items set is_list = ? where media_item_id = ?";
86 query.bindInt32Parameter(0, this._mediaItems[
i].isList);
87 query.bindInt32Parameter(1, this._mediaItems[
i].itemId);
91 query.addQuery(
"update library_metadata set value = '7' where name = 'version'");
94 query.addQuery(
"commit");
97 query.setAsyncQuery(
true);
98 query.execute(retval);
100 var sip =
Cc[
"@mozilla.org/supports-interface-pointer;1"]
101 .createInstance(
Ci.nsISupportsInterfacePointer);
104 this._titleText =
"Library Migration Helper";
105 this._statusText =
"Migrating 0.7.0 RC1 database to 0.7.0 database...";
106 this.migrationQuery = query;
108 this.startNotificationTimer();
109 SBJobUtils.showProgressDialog(sip.data,
null, 0);
110 this.stopNotificationTimer();
113 _createQuery:
function sbLDBM070RC1to070_createQuery() {
114 var query =
Cc[
"@songbirdnest.com/Songbird/DatabaseQuery;1"]
115 .createInstance(
Ci.sbIDatabaseQuery);
116 query.databaseLocation = this._databaseLocation;
117 query.setDatabaseGUID(this._databaseGUID);
122 _getMediaItems:
function sbLDBM070RC1to070_getMediaItems() {
123 this._mediaItems = [];
125 let sql =
"select media_item_id, media_list_type_id from media_items where media_list_type_id is not null";
127 var query = this._createQuery();
131 query.execute(retval);
133 var resultSet = query.getResultObject();
135 var rowCount = resultSet.getRowCount();
136 for(let currentRow = 0; currentRow < rowCount; ++currentRow) {
137 let _mediaItemId = resultSet.getRowCell(currentRow, 0);
138 let _listType = resultSet.getRowCell(currentRow, 1);
139 let _isList = Number(parseInt(_listType) > 0);
141 var
entry = {itemId: _mediaItemId, isList: _isList};
142 this._mediaItems.push(entry);
153 return XPCOMUtils.generateModule([
sbDeviceFirmwareAutoCheckForUpdate prototype contractID
sbDeviceFirmwareAutoCheckForUpdate prototype classDescription
function sbLocalDatabaseMigrate070RC1to070()
sbDeviceFirmwareAutoCheckForUpdate prototype classID
_getSelectedPageStyle s i