XMLFilesBackend.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #ifndef DEVEL_DEVEL_DMACVICAR_XMLFILESBACKEND_H
00013 #define DEVEL_DEVEL_DMACVICAR_XMLFILESBACKEND_H
00014 
00015 #include <iosfwd>
00016 
00017 #include "zypp/Atom.h"
00018 #include "zypp/Message.h"
00019 #include "zypp/Patch.h"
00020 #include "zypp/Script.h"
00021 #include "zypp/Product.h"
00022 #include "zypp/Selection.h"
00023 #include "zypp/Pattern.h"
00024 #include "zypp/Language.h"
00025 
00026 #include "zypp/parser/xmlstore/XMLParserData.h"
00027 
00028 #include "zypp/base/PtrTypes.h"
00029 #include "Backend.h"
00030 
00031 using namespace zypp;
00032 using namespace zypp::parser::xmlstore;
00033 
00035 namespace zypp
00036 { 
00037 
00038 namespace storage
00039 { 
00040 
00041 //
00042 //      CLASS NAME : XMLFilesBackend
00043 //
00045 class XMLFilesBackend : public Backend
00046 {
00047   friend std::ostream & operator<<( std::ostream & str, const XMLFilesBackend & obj );
00048 public:
00049   typedef intrusive_ptr<XMLFilesBackend> Ptr;
00050   typedef intrusive_ptr<const XMLFilesBackend> constPtr;
00051 
00052   public:
00054   XMLFilesBackend(const Pathname &root);
00056   ~XMLFilesBackend();
00057   void setRandomFileNameEnabled( bool enabled );
00058   virtual void doTest();
00059 
00063   virtual bool isBackendInitialized() const;
00067   virtual void initBackend();
00071   virtual void storeObject( ResObject::constPtr resolvable ) ;
00075   virtual void deleteObject( ResObject::constPtr resolvable );
00079   virtual std::list<ResObject::Ptr> storedObjects() const;
00083   virtual std::list<ResObject::Ptr> storedObjects(const Resolvable::Kind) const;
00088   virtual std::list<ResObject::Ptr> storedObjects(const Resolvable::Kind, const std::string & name, bool partial_match = false) const;
00089 
00091   // Resolvables Flags API
00093   public:
00094   void setObjectFlag( ResObject::constPtr resolvable, const std::string &flag );
00095   void removeObjectFlag( ResObject::constPtr resolvable, const std::string &flag );
00096   std::set<std::string> objectFlags( ResObject::constPtr resolvable ) const;
00097   bool doesObjectHasFlag( ResObject::constPtr resolvable, const std::string &flag ) const;
00098 
00100   // Named Flags API
00102   public:
00103   void setFlag( const std::string &key, const std::string &flag );
00104   void removeFlag( const std::string &key, const std::string &flag );
00105   std::set<std::string> flags( const std::string &key ) const;
00106   bool hasFlag( const std::string &key, const std::string &flag ) const;
00107 
00108   protected:
00109   void writeObjectFlags( ResObject::constPtr resolvable, const std::set<std::string> &pflags );
00110   void writeFlags( const std::string &key, const std::set<std::string> &pflags );
00111   
00112   void writeFlagsInFile( const std::string &filename, const std::set<std::string> &pflags );
00113   std::set<std::string> flagsFromFile( const std::string &filename ) const;
00115   // SOURCES API
00117   public:
00121   virtual std::list<PersistentStorage::SourceData> storedSources() const;
00125   virtual void storeSource(const PersistentStorage::SourceData &data);
00129   virtual void deleteSource(const std::string &alias);
00130   
00131 
00132   protected:
00133   std::string randomString(int length) const;
00134   int random() const;
00135 
00136   
00140   std::string dirForResolvable( ResObject::constPtr resolvable ) const;
00144   std::string dirForResolvableFlags( ResObject::constPtr resolvable ) const;
00148   std::string fileNameForResolvable( ResObject::constPtr resolvable ) const;
00152   std::string fullPathForResolvableFlags( ResObject::constPtr resolvable ) const;
00156   std::string dirForNamedFlags() const;
00160   std::string fullPathForNamedFlags( const std::string &key ) const;
00161 
00162 
00166   std::string dirForResolvableKind( Resolvable::Kind kind ) const;
00170   std::string dirForResolvableKindFlags( Resolvable::Kind kind ) const;
00175   std::string fullPathForResolvable( ResObject::constPtr resolvable ) const;
00180   std::list<ResObject::Ptr> resolvablesFromFile( std::string file_path, Resolvable::Kind kind ) const;
00181 
00182   Patch::Ptr createPatch( const zypp::parser::xmlstore::XMLPatchData & parsed ) const;
00183   Message::Ptr createMessage( const zypp::parser::xmlstore::XMLPatchMessageData & parsed ) const;
00184   Script::Ptr createScript(const zypp::parser::xmlstore::XMLPatchScriptData & parsed ) const;
00185   Product::Ptr createProduct( const zypp::parser::xmlstore::XMLProductData & parsed ) const;
00186   Selection::Ptr createSelection( const zypp::parser::xmlstore::XMLPatternData & parsed ) const;
00187   Pattern::Ptr createPattern( const zypp::parser::xmlstore::XMLPatternData & parsed ) const;
00188   Atom::Ptr createAtom( const zypp::parser::xmlstore::XMLPatchAtomData & parsed ) const;
00189   Language::Ptr createLanguage( const zypp::parser::xmlstore::XMLLanguageData & parsed ) const;
00190   
00191   Dependencies createDependencies( const zypp::parser::xmlstore::XMLResObjectData & parsed, const Resolvable::Kind my_kind ) const;
00192   
00193   Capability createCapability(const XMLDependency & dep, const Resolvable::Kind & my_kind) const;
00194   
00195   private:
00196   class Private;
00197   Private *d;
00198 };
00199 
00201 
00202 std::ostream & operator<<( std::ostream & str, const XMLFilesBackend & obj );
00204 } // namespace devel.dmacvicar
00207 } // namespace devel
00209 #endif // DEVEL_DEVEL_DMACVICAR_SQLITEBACKEND_H

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