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 Date
00083 PersistentStorage::timestamp() const
00084 {
00085   return d->backend->timestamp();
00086 }
00087 
00088 void
00089 PersistentStorage::storeObject( ResObject::constPtr resolvable )
00090 {
00091   d->backend->storeObject(resolvable);
00092 }
00093 
00094 void
00095 PersistentStorage::deleteObject( ResObject::constPtr resolvable )
00096 {
00097   d->backend->deleteObject(resolvable);
00098 }
00099 
00100 std::list<ResObject::Ptr>
00101 PersistentStorage::storedObjects() const
00102 {
00103   return d->backend->storedObjects();
00104 }
00105 
00106 std::list<ResObject::Ptr>
00107 PersistentStorage::storedObjects(const Resolvable::Kind kind) const
00108 {
00109   //list<ResObject::Ptr>::iterator it;
00110   //it = find(nums.begin(), nums.end(), 3); // Search the list.
00111   return d->backend->storedObjects(kind);
00112 }
00113 
00114 std::list<ResObject::Ptr>
00115 PersistentStorage::storedObjects(const Resolvable::Kind kind, const std::string & name, bool partial_match) const
00116 {
00117   return d->backend->storedObjects(kind, name, partial_match);
00118 }
00119 
00121 // FLAGS API
00123 
00124 void
00125 PersistentStorage::setObjectFlag( ResObject::constPtr resolvable, const std::string &flag )
00126 { d->backend->setObjectFlag(resolvable, flag); }
00127 
00128 void
00129 PersistentStorage::removeObjectFlag( ResObject::constPtr resolvable, const std::string &flag )
00130 { d->backend->removeObjectFlag(resolvable, flag); }
00131 
00132 std::set<std::string>
00133 PersistentStorage::objectFlags( ResObject::constPtr resolvable ) const
00134 { return d->backend->objectFlags(resolvable); }
00135 
00136 bool
00137 PersistentStorage::doesObjectHasFlag( ResObject::constPtr resolvable, const std::string &flag ) const
00138 { return d->backend->doesObjectHasFlag(resolvable, flag); }
00139 
00141 // Named Flags API
00143 
00144 void
00145 PersistentStorage::setFlag( const std::string &key, const std::string &flag )
00146 {
00147   d->backend->setFlag(key, flag);
00148 }
00149 
00150 void
00151 PersistentStorage::removeFlag( const std::string &key, const std::string &flag )
00152 {
00153   d->backend->removeFlag(key, flag);
00154 }
00155 
00156 std::set<std::string>
00157 PersistentStorage::flags( const std::string &key ) const
00158 {
00159   return d->backend->flags(key);
00160 }
00161 
00162 bool
00163 PersistentStorage::hasFlag( const std::string &key, const std::string &flag ) const
00164 {
00165   return d->backend->hasFlag(key, flag);
00166 }
00167 
00168 /******************************************************************
00169 **
00170 **      FUNCTION NAME : operator<<
00171 **      FUNCTION TYPE : std::ostream &
00172 */
00173 std::ostream & operator<<( std::ostream & str, const PersistentStorage & obj )
00174 {
00175   //return str << *obj._pimpl;
00176   return str;
00177 }
00179 } // namespace storage
00182 } // namespace zypp

Generated on Tue Sep 25 19:23:09 2007 for libzypp by  doxygen 1.5.3