home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 100
/
FreelogNo100-NovembreDecembre2010.iso
/
Multimedia
/
Songbird
/
Songbird_1.8.0-1800_windows-i686-msvc8.exe
/
components
/
sbMigrate14to15pre.smartplaylist.js
< prev
next >
Wrap
Text File
|
2010-08-30
|
4KB
|
137 lines
/*
*=BEGIN SONGBIRD GPL
*
* This file is part of the Songbird web player.
*
* Copyright(c) 2005-2009 POTI, Inc.
* http://www.songbirdnest.com
*
* This file may be licensed under the terms of of the
* GNU General Public License Version 2 (the ``GPL'').
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the GPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the GPL along with this
* program. If not, go to http://www.gnu.org/licenses/gpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*=END SONGBIRD GPL
*/
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://app/jsmodules/sbLocalDatabaseMigrationUtils.jsm");
const Cc = Components.classes;
const Ci = Components.interfaces;
const Cr = Components.results;
const FROM_VERSION = 22;
const TO_VERSION = 23;
function LOG(s) {
dump("----++++----++++sbLibraryMigration " +
FROM_VERSION + " to " + TO_VERSION + ": " +
s +
"\n----++++----++++\n");
}
function sbLibraryMigration()
{
SBLocalDatabaseMigrationUtils.BaseMigrationHandler.call(this);
this._errors = [];
}
//-----------------------------------------------------------------------------
// sbLocalDatabaseMigration Implementation
//-----------------------------------------------------------------------------
sbLibraryMigration.prototype = {
__proto__: SBLocalDatabaseMigrationUtils.BaseMigrationHandler.prototype,
classDescription: 'Songbird Migration Handler, version ' +
FROM_VERSION + ' to ' + TO_VERSION,
classID: Components.ID("{6C8BA317-BD30-479d-9D9A-8EE44D1F36F7}"),
contractID: SBLocalDatabaseMigrationUtils.baseHandlerContractID +
FROM_VERSION + 'to' + TO_VERSION,
fromVersion: FROM_VERSION,
toVersion: TO_VERSION,
migrate: function sbLibraryMigration_migrate(aLibrary) {
try {
this._databaseGUID = aLibrary.databaseGuid;
this._databaseLocation = aLibrary.databaseLocation;
// Get all the smart playlists
var dbQuery = Cc["@songbirdnest.com/Songbird/DatabaseQuery;1"]
.createInstance(Ci.sbIDatabaseQuery);
dbQuery.databaseLocation = aLibrary.databaseLocation;
dbQuery.setDatabaseGUID(aLibrary.databaseGuid);
dbQuery.addQuery(<>
SELECT guid FROM media_items
WHERE media_list_type_id = "2" AND is_list = "1";
</>);
dbQuery.setAsyncQuery(false);
if (dbQuery.execute() != 0) {
throw "Failed to get the smart playlists";
}
// Insert all the smart playlist guids to the dirty db.
// sbSmartMediaListsUpdater will update them later.
var result = dbQuery.getResultObject();
var length = result.getRowCount();
// Run a query that will mark the library as migrated
var query = this.createMigrationQuery(aLibrary);
query.addQuery("commit");
var retval;
query.setAsyncQuery(false);
if (length == 0) {
query.execute(retval);
return;
}
// Init the dirty db
var smartListQuery = Cc["@songbirdnest.com/Songbird/DatabaseQuery;1"]
.createInstance(Ci.sbIDatabaseQuery);
smartListQuery.setAsyncQuery(false);
smartListQuery.setDatabaseGUID("songbird");
smartListQuery.addQuery("CREATE TABLE IF NOT EXISTS smartplupd_dirty_lists " +
"(listguid TEXT UNIQUE NOT NULL)");
var prepStatement = smartListQuery.prepareQuery(
"INSERT OR REPLACE INTO smartplupd_dirty_lists VALUES (?)");
var guid;
for (var i = 0; i < length; ++i) {
guid = result.getRowCell(i, 0);
smartListQuery.addPreparedStatement(prepStatement);
smartListQuery.bindStringParameter(0, guid);
}
if (smartListQuery.execute() != 0) {
throw "Failed to insert the guid to the dirty db";
}
query.execute(retval);
}
catch (e) {
LOG("Exception occured: " + e);
throw e;
}
},
};
//-----------------------------------------------------------------------------
// Module
//-----------------------------------------------------------------------------
function NSGetModule(compMgr, fileSpec) {
return XPCOMUtils.generateModule([
sbLibraryMigration
]);
}