Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

PMPLAINPackageDataProvider.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                                                                      |
00003 |                      __   __    ____ _____ ____                      |
00004 |                      \ \ / /_ _/ ___|_   _|___ \                     |
00005 |                       \ V / _` \___ \ | |   __) |                    |
00006 |                        | | (_| |___) || |  / __/                     |
00007 |                        |_|\__,_|____/ |_| |_____|                    |
00008 |                                                                      |
00009 |                               core system                            |
00010 |                                                     (C) 2002 SuSE AG |
00011 \----------------------------------------------------------------------/
00012 
00013    File:       PMPLAINPackageDataProvider.h
00014    Purpose:    Implements PackageDataProvider for installed rpms
00015    Author:     Ludwig Nussel <lnussel@suse.de>
00016    Maintainer: Ludwig Nussel <lnussel@suse.de>
00017 
00018 /-*/
00019 
00020 #ifndef PMPLAINPackageDataProvider_h
00021 #define PMPLAINPackageDataProvider_h
00022 
00023 #include <iosfwd>
00024 #include <map>
00025 #include <vector>
00026 
00027 #include <y2util/YRpmGroupsTree.h>
00028 #include <y2util/FSize.h>
00029 #include <y2util/Date.h>
00030 #include <y2util/Vendor.h>
00031 
00032 #include <y2pm/InstSrcDataPLAINPtr.h>
00033 #include <y2pm/RpmHeaderPtr.h>
00034 
00035 #include <y2pm/PMPLAINPackageDataProviderPtr.h>
00036 #include <y2pm/PMPackageDataProvider.h>
00037 #include <y2pm/PMPackage.h>
00038 
00039 class PMPLAINPackageDataProvider : public PMPackageDataProvider
00040 {
00041   REP_BODY(PMPLAINPackageDataProvider);
00042 
00043   friend class InstSrcDataPLAIN;
00044 
00045   private:
00046 
00047     // back pointer to InstSrc for on-demand data access
00048     constInstSrcDataPLAINPtr _instSrcData;
00049 
00050     // cached values per package
00051     unsigned          _cachepos;
00052     Pathname          _pkgfile;
00053 
00054     PkgSplitSet       _attr_SPLITPROVIDES;
00055     std::string       _attr_SUMMARY;
00056     FSize             _attr_SIZE;
00057     YStringTreeItem * _attr_GROUP;
00058     Vendor            _attr_VENDOR;
00059 
00060     Pathname          _attr_SOURCELOC;  // empty if no source
00061     FSize             _attr_SOURCESIZE; // 0 if no source
00065     void loadStaticData( constRpmHeaderPtr h );
00066 
00073     static PMPackagePtr         _cachedPkg;
00074     static constRpmHeaderPtr _cachedData;
00075 
00076     constRpmHeaderPtr fillCache( PMPackagePtr package ) const;
00077 
00078   public:
00079 
00083     PMPLAINPackageDataProvider( constInstSrcDataPLAINPtr instSrc_r,
00084                                 unsigned cachepos_r, const Pathname & pkgfile_r );
00085 
00086     virtual ~PMPLAINPackageDataProvider();
00087 
00088   public:
00089 
00094     // PMObject attributes
00095     virtual std::string            summary     ( const PMPackage & pkg_r ) const;
00096     virtual std::list<std::string> description ( const PMPackage & pkg_r ) const;
00097     virtual FSize                  size        ( const PMPackage & pkg_r ) const;
00098     virtual bool                   providesSources( const PMPackage & pkg_r ) const;
00099     virtual std::string            instSrcLabel   ( const PMPackage & pkg_r ) const;
00100     virtual Vendor                 instSrcVendor  ( const PMPackage & pkg_r ) const;
00101     virtual unsigned               instSrcRank    ( const PMPackage & pkg_r ) const;
00102 
00103     // PMPackage attributes
00104     virtual PkgSplitSet            splitprovides( const PMPackage & pkg_r ) const;
00105     virtual Date                   buildtime   ( const PMPackage & pkg_r ) const;
00106     virtual std::string            buildhost   ( const PMPackage & pkg_r ) const;
00107     virtual std::string            distribution( const PMPackage & pkg_r ) const;
00108     virtual Vendor                 vendor      ( const PMPackage & pkg_r ) const;
00109     virtual std::string            license     ( const PMPackage & pkg_r ) const;
00110     virtual std::string            packager    ( const PMPackage & pkg_r ) const;
00111     virtual std::string            group       ( const PMPackage & pkg_r ) const;
00112     virtual YStringTreeItem *      group_ptr   ( const PMPackage & pkg_r ) const;
00113     virtual std::list<std::string> changelog   ( const PMPackage & pkg_r ) const;
00114     virtual std::string            url         ( const PMPackage & pkg_r ) const;
00115     virtual std::string            os          ( const PMPackage & pkg_r ) const;
00116     virtual std::list<std::string> prein       ( const PMPackage & pkg_r ) const;
00117     virtual std::list<std::string> postin      ( const PMPackage & pkg_r ) const;
00118     virtual std::list<std::string> preun       ( const PMPackage & pkg_r ) const;
00119     virtual std::list<std::string> postun      ( const PMPackage & pkg_r ) const;
00120     virtual std::string            sourceloc   ( const PMPackage & pkg_r ) const;
00121     virtual FSize                  sourcesize  ( const PMPackage & pkg_r ) const;
00122     virtual FSize                  archivesize ( const PMPackage & pkg_r ) const;
00123     //virtual std::list<std::string> authors     ( const PMPackage & pkg_r ) const;
00124     virtual std::list<std::string> filenames   ( const PMPackage & pkg_r ) const;
00125 
00126     // suse packages values
00127     //virtual std::list<std::string> recommends  ( const PMPackage & pkg_r ) const;
00128     //virtual std::list<std::string> suggests    ( const PMPackage & pkg_r ) const;
00129     virtual std::string            location    ( const PMPackage & pkg_r ) const;
00130     virtual unsigned int           medianr     ( const PMPackage & pkg_r ) const;
00131     //virtual std::list<std::string> keywords    ( const PMPackage & pkg_r ) const;
00132     //virtual std::string            externalUrl ( const PMPackage & pkg_r ) const;
00133     //virtual std::list<PkgEdition>  patchRpmBaseVersions( const PMPackage & pkg_r ) const;
00134     //virtual FSize                  patchRpmSize( const PMPackage & pkg_r ) const;
00135 
00136     // physical access to the rpm file.
00137     virtual PMError providePkgToInstall( const PMPackage & pkg_r, Pathname& path_r ) const;
00138     // physical access to the src.rpm file.
00139     virtual PMError provideSrcPkgToInstall( const PMPackage & pkg_r, Pathname& path_r ) const;
00140 
00141     // source for this package, needed for callbacks
00142     virtual constInstSrcPtr source   ( const PMPackage & pkg_r ) const;
00143     virtual bool            isRemote ( const PMPackage & pkg_r ) const;
00144 
00145     // dudata is special
00146     virtual void du( const PMPackage & pkg_r, PkgDu & dudata_r ) const;
00147 };
00148 
00149 #endif // PMPLAINPackageDataProvider_h
00150 
00151 // vim:sw=4

Generated on Fri Nov 9 14:30:31 2007 for yast2-packagemanager by doxygen 1.3.6