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 class PersistentStorage::Private
00033 {
00034   public:
00035   Backend *backend;
00036 };
00037 
00039 //
00040 //      CLASS NAME : PersistentStorage
00041 //
00043 
00045 //
00046 //      METHOD NAME : PersistentStorage::PersistentStorage
00047 //      METHOD TYPE : Ctor
00048 //
00049 PersistentStorage::PersistentStorage()
00050 {
00051   d = new Private;
00052   DBG << "  Creating XML Files backend" << endl;
00053   d->backend = 0L;
00054 }
00055 
00056 void PersistentStorage::init(const Pathname &root)
00057 {
00058   d->backend = new XMLFilesBackend(root);
00059 }
00060 
00061 bool PersistentStorage::isInitialized() const
00062 {
00063   return ! (d->backend == 0L);
00064 }
00065 
00067 //
00068 //      METHOD NAME : PersistentStorage::~PersistentStorage
00069 //      METHOD TYPE : Dtor
00070 //
00071 PersistentStorage::~PersistentStorage()
00072 {}
00073 
00075 //
00076 //      METHOD NAME : PersistentStorage::~PersistentStorage
00077 //      METHOD TYPE : Dtor
00078 //
00079 void PersistentStorage::doTest()
00080 {
00081   d->backend->doTest();
00082 }
00083 
00084 void
00085 PersistentStorage::storeObject( ResObject::constPtr resolvable )
00086 {
00087   d->backend->storeObject(resolvable);
00088 }
00089 
00090 void
00091 PersistentStorage::deleteObject( ResObject::constPtr resolvable )
00092 {
00093   d->backend->deleteObject(resolvable);
00094 }
00095 
00096 std::list<ResObject::Ptr>
00097 PersistentStorage::storedObjects() const
00098 {
00099   return d->backend->storedObjects();
00100 }
00101 
00102 std::list<ResObject::Ptr>
00103 PersistentStorage::storedObjects(const Resolvable::Kind kind) const
00104 {
00105   //list<ResObject::Ptr>::iterator it;
00106   //it = find(nums.begin(), nums.end(), 3); // Search the list.
00107   return d->backend->storedObjects(kind);
00108 }
00109 
00110 std::list<ResObject::Ptr>
00111 PersistentStorage::storedObjects(const Resolvable::Kind kind, const std::string & name, bool partial_match) const
00112 {
00113   return d->backend->storedObjects(kind, name, partial_match);
00114 }
00115 
00117 // FLAGS API
00119 
00120 void
00121 PersistentStorage::setObjectFlag( ResObject::constPtr resolvable, const std::string &flag )
00122 { d->backend->setObjectFlag(resolvable, flag); }
00123 
00124 void
00125 PersistentStorage::removeObjectFlag( ResObject::constPtr resolvable, const std::string &flag )
00126 { d->backend->removeObjectFlag(resolvable, flag); }
00127 
00128 std::set<std::string>
00129 PersistentStorage::objectFlags( ResObject::constPtr resolvable ) const
00130 { return d->backend->objectFlags(resolvable); }
00131 
00132 bool
00133 PersistentStorage::doesObjectHasFlag( ResObject::constPtr resolvable, const std::string &flag ) const
00134 { return d->backend->doesObjectHasFlag(resolvable, flag); }
00135 
00137 // Named Flags API
00139 
00140 void 
00141 PersistentStorage::setFlag( const std::string &key, const std::string &flag )
00142 {
00143   d->backend->setFlag(key, flag);
00144 }
00145 
00146 void
00147 PersistentStorage::removeFlag( const std::string &key, const std::string &flag )
00148 {
00149   d->backend->removeFlag(key, flag);
00150 }
00151 
00152 std::set<std::string>
00153 PersistentStorage::flags( const std::string &key ) const
00154 {
00155   return d->backend->flags(key);
00156 }
00157 
00158 bool
00159 PersistentStorage::hasFlag( const std::string &key, const std::string &flag ) const
00160 {
00161   return d->backend->hasFlag(key, flag);
00162 }
00163 
00165 // SOURCES API
00167 
00168 std::list<PersistentStorage::SourceData>
00169 PersistentStorage::storedSources() const
00170 {
00171   return d->backend->storedSources();
00172 }
00173 
00174 void
00175 PersistentStorage::storeSource(const PersistentStorage::SourceData &data)
00176 {
00177   d->backend->storeSource(data);
00178 }
00179 
00180 void
00181 PersistentStorage::deleteSource(const std::string &alias)
00182 {
00183   d->backend->deleteSource(alias);
00184 }
00185 
00186 /******************************************************************
00187 **
00188 **      FUNCTION NAME : operator<<
00189 **      FUNCTION TYPE : std::ostream &
00190 */
00191 std::ostream & operator<<( std::ostream & str, const PersistentStorage & obj )
00192 {
00193   //return str << *obj._pimpl;
00194   return str;
00195 }
00197 } // namespace storage
00200 } // namespace zypp

Generated on Mon Jun 5 19:10:43 2006 for zypp by  doxygen 1.4.6