PersistentStorage.cc

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #include <iostream>
00013 #include "zypp/base/Logger.h"
00014 
00015 #include "PersistentStorage.h"
00016 #include "Backend.h"
00017 #include "XMLFilesBackend.h"
00018 
00019 using std::endl;
00020 
00022 namespace zypp
00023 { 
00024 
00025 namespace storage
00026 {
00028 //
00029 //      CLASS NAME : PersistentStoragePrivate
00030 //
00032 struct PersistentStorage::Private
00033 {
00034   shared_ptr<Backend> backend;
00035 };
00036 
00038 //
00039 //      CLASS NAME : PersistentStorage
00040 //
00042 
00044 //
00045 //      METHOD NAME : PersistentStorage::PersistentStorage
00046 //      METHOD TYPE : Ctor
00047 //
00048 PersistentStorage::PersistentStorage()
00049 : d( new Private )
00050 {
00051   DBG << "  Creating XML Files backend" << endl;
00052 }
00053 
00054 void PersistentStorage::init(const Pathname &root)
00055 {
00056   d->backend.reset( new XMLFilesBackend(root) );
00057 }
00058 
00059 bool PersistentStorage::isInitialized() const
00060 {
00061   return d->backend;
00062 }
00063 
00065 //
00066 //      METHOD NAME : PersistentStorage::~PersistentStorage
00067 //      METHOD TYPE : Dtor
00068 //
00069 PersistentStorage::~PersistentStorage()
00070 {}
00071 
00073 //
00074 //      METHOD NAME : PersistentStorage::~PersistentStorage
00075 //      METHOD TYPE : Dtor
00076 //
00077 void PersistentStorage::doTest()
00078 {
00079   d->backend->doTest();
00080 }
00081 
00082 void
00083 PersistentStorage::storeObject( ResObject::constPtr resolvable )
00084 {
00085   d->backend->storeObject(resolvable);
00086 }
00087 
00088 void
00089 PersistentStorage::deleteObject( ResObject::constPtr resolvable )
00090 {
00091   d->backend->deleteObject(resolvable);
00092 }
00093 
00094 std::list<ResObject::Ptr>
00095 PersistentStorage::storedObjects() const
00096 {
00097   return d->backend->storedObjects();
00098 }
00099 
00100 std::list<ResObject::Ptr>
00101 PersistentStorage::storedObjects(const Resolvable::Kind kind) const
00102 {
00103   //list<ResObject::Ptr>::iterator it;
00104   //it = find(nums.begin(), nums.end(), 3); // Search the list.
00105   return d->backend->storedObjects(kind);
00106 }
00107 
00108 std::list<ResObject::Ptr>
00109 PersistentStorage::storedObjects(const Resolvable::Kind kind, const std::string & name, bool partial_match) const
00110 {
00111   return d->backend->storedObjects(kind, name, partial_match);
00112 }
00113 
00115 // FLAGS API
00117 
00118 void
00119 PersistentStorage::setObjectFlag( ResObject::constPtr resolvable, const std::string &flag )
00120 { d->backend->setObjectFlag(resolvable, flag); }
00121 
00122 void
00123 PersistentStorage::removeObjectFlag( ResObject::constPtr resolvable, const std::string &flag )
00124 { d->backend->removeObjectFlag(resolvable, flag); }
00125 
00126 std::set<std::string>
00127 PersistentStorage::objectFlags( ResObject::constPtr resolvable ) const
00128 { return d->backend->objectFlags(resolvable); }
00129 
00130 bool
00131 PersistentStorage::doesObjectHasFlag( ResObject::constPtr resolvable, const std::string &flag ) const
00132 { return d->backend->doesObjectHasFlag(resolvable, flag); }
00133 
00135 // Named Flags API
00137 
00138 void
00139 PersistentStorage::setFlag( const std::string &key, const std::string &flag )
00140 {
00141   d->backend->setFlag(key, flag);
00142 }
00143 
00144 void
00145 PersistentStorage::removeFlag( const std::string &key, const std::string &flag )
00146 {
00147   d->backend->removeFlag(key, flag);
00148 }
00149 
00150 std::set<std::string>
00151 PersistentStorage::flags( const std::string &key ) const
00152 {
00153   return d->backend->flags(key);
00154 }
00155 
00156 bool
00157 PersistentStorage::hasFlag( const std::string &key, const std::string &flag ) const
00158 {
00159   return d->backend->hasFlag(key, flag);
00160 }
00161 
00163 // SOURCES API
00165 
00166 std::list<PersistentStorage::SourceData>
00167 PersistentStorage::storedSources() const
00168 {
00169   return d->backend->storedSources();
00170 }
00171 
00172 void
00173 PersistentStorage::storeSource(const PersistentStorage::SourceData &data)
00174 {
00175   d->backend->storeSource(data);
00176 }
00177 
00178 void
00179 PersistentStorage::deleteSource(const std::string &alias)
00180 {
00181   d->backend->deleteSource(alias);
00182 }
00183 
00184 /******************************************************************
00185 **
00186 **      FUNCTION NAME : operator<<
00187 **      FUNCTION TYPE : std::ostream &
00188 */
00189 std::ostream & operator<<( std::ostream & str, const PersistentStorage & obj )
00190 {
00191   //return str << *obj._pimpl;
00192   return str;
00193 }
00195 } // namespace storage
00198 } // namespace zypp

Generated on Thu Jul 6 00:07:26 2006 for zypp by  doxygen 1.4.6