void CDataBaseTest::preparePlaylist() {
	CCollection<CPlaylistItem>* playlist = 0;
	playlist = new CCollection<CPlaylistItem>();

	CCollection<CCollectionItem>* collection = m_session->getCollection(0);
	for(int i=0; i < collection->size(); i += 2) {
		CPlaylistItem* item = new CPlaylistItem(collection->getItem(i)->getHash());
		playlist->insert( item, -1);
	}
	m_session->addPlaylistRev(playlist);

	playlist = new CCollection<CPlaylistItem>();

	for(int i=0; i < collection->size(); i++) {
		CPlaylistItem* item = new CPlaylistItem(collection->getItem(i)->getHash());
		playlist->insert( item, -1);
	}
	m_session->addPlaylistRev(playlist);

	playlist = new CCollection<CPlaylistItem>();

	for( int i=1; i < collection->size(); i += 2 ) {
		CPlaylistItem* item = new CPlaylistItem(collection->getItem(i)->getHash());
		playlist->insert( item, -1);
	}
	m_session->addPlaylistRev(playlist);
}
Example #2
0
/**
 *   check for playlist entries not in collection. If any, remove them and create new playlist revision.
 */
void CStateDB::repairSession(CSession* session) {
	CCollection<CCollectionItem>* collection = session->getCollection();
	CCollection<CPlaylistItem>* playlist = session->getPlaylist();

	CCollection<CPlaylistItem>* newPlaylist = new CCollection<CPlaylistItem>();
	bool unknownItemInPlaylist = false;

	for(int i=0; i < playlist->size(); i++) {
		CPlaylistItem* plItem = new CPlaylistItem( *playlist->getItem(i) );
		unsigned hash = plItem->getCollectionHash();
		CCollectionItem* item = collection->getByHash(hash);
		if( item == 0 ) {
			unknownItemInPlaylist = true;
		}
		else {
			newPlaylist->insert(plItem);
		}
	}

	if( unknownItemInPlaylist ) {
		session->addPlaylistRev( newPlaylist );
		updatePlaylistRevsTable(session, session->getPlaylistRevision(), session->getPlaylistRevision());
	}
	else {
		delete newPlaylist;
	}

}
Example #3
0
void CStateDB::restoreNextlists(CSession * const session) {
	if(m_db == 0) throw(CApiMisuseException("Calling restoreNextlists(), but DB not opened."));
	bool found;

	int minRev = getIntValue("NextlistRevMin", found);
	assert(found);
	int maxRev = getIntValue("NextlistRevMax", found);
	assert(found);

	session->setMinNextlistRevision( minRev );

	for(int rev = minRev; rev < maxRev; rev++) {
		CCollection<CPlaylistItem>* nextlist = new CCollection<CPlaylistItem>(rev);

		CPlaylistItem* item;
		int pos = 0;
		do {
			item = getNextlistItemByPos(pos, rev);
			pos++;
			if(item) {
				nextlist->insert(item);
			}
		} while(item != 0);
		session->addNextlistRev(nextlist);
	}
}
Example #4
0
void CStateDB::restoreCollection(CSession * const session) {
	if(m_db == 0) throw(CApiMisuseException("Calling restoreCollection(), but DB not opened."));
	bool found;

	int minRev =  getIntValue("CollectionRevMin", found);
	assert(found);
	int maxRev = getIntValue("CollectionRevMax", found);
	assert(found);

	session->setMinCollectionRevision( minRev );

	for(int rev = minRev; rev <= maxRev; rev++) {
		CCollection<CCollectionItem>* collection = new CCollection<CCollectionItem>(rev);

		CCollectionItem* item;
		int pos = 0;
		do {
			item = getCollectionItemByPos(pos, rev);
			pos++;
			if(item) {
				collection->insert(item);
			}
		} while(item != 0);
		session->addCollectionRev(collection);
	}
}
Example #5
0
CCollection<CCollectionItem>* CStateDB::getCollectionRev(int rev) {
	CCollection<CCollectionItem>* collection = new CCollection<CCollectionItem>();

	CCollectionItem* item;
	int pos = 0;
	do {
		item = getCollectionItemByPos(pos, rev);
		pos++;
		if(item) {
			collection->insert(item);
		}
	} while(item != 0);

	return collection;
}