/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <rights/RoManager.h> #include <rights/Asset.h> using namespace ustl; RoManager* RoManager::msInstance = NULL; /** see RoManager.h */ RoManager* RoManager::Instance() { if (NULL == msInstance) { msInstance = new RoManager(); } return msInstance; } /** see RoManager.h */ RoManager::RoManager() { //load the ro list from local system. } /** see RoManager.h */ RoManager::~RoManager() { msInstance = NULL; for (vector<Ro*>::iterator it = mRoList.begin(); it != mRoList.end(); it++) { delete (*it); } mRoList.clear(); } /** see RoManager.h */ Ro::ERRCODE RoManager::installRo(istringstream *roStream) { Ro *ro = new Ro(); Ro::ERRCODE ret = ro->parse(roStream); if (Ro::RO_OK == ret) { ro->save(); mRoList.push_back(ro); } return ret; } /** see RoManager.h */ Ro* RoManager::getRoByContentID(const string& contentID) { for (vector<Ro*>::iterator it = mRoList.begin(); it != mRoList.end(); it++) { for (vector<Asset*>::iterator ita = (*it)->mAssetList.begin(); ita != (*it)->mAssetList.end(); ita++) { if (contentID.compare((*ita)->getContentID()) == 0) { return *it; } } } return NULL; } /** see RoManager.h */ Ro* RoManager::getRo(const string& roID) { for (vector<Ro*>::iterator it = mRoList.begin(); it != mRoList.end(); it++) { if (roID.compare((*it)->getRoID()) == 0) { return (*it); } } return NULL; } /** see RoManager.h */ vector<Ro*> RoManager::getAllRo() { return mRoList; } /** see RoManager.h */ bool RoManager::deleteRo(const string& roID) { return true; } /** see RoManager.h */ bool RoManager::checkRoInCache(const string& roID) { return true; }