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

PMRpmPackageDataProvider.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:       PMRpmPackageDataProvider.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 PMRpmPackageDataProvider_h
00021 #define PMRpmPackageDataProvider_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/RpmDbPtr.h>
00033 #include <y2pm/RpmHeaderPtr.h>
00034 
00035 #include <y2pm/PMRpmPackageDataProviderPtr.h>
00036 #include <y2pm/PMPackageDataProvider.h>
00037 #include <y2pm/PMPackage.h>
00038 #include <y2pm/PMObject.h>
00039 
00040 class PMRpmPackageDataProvider : public PMPackageDataProvider
00041 {
00042     REP_BODY(PMRpmPackageDataProvider);
00043 
00044     friend class RpmDb;
00045 
00046     private:
00047         // back pointer to RpmDb for on-demand rpm access
00048         RpmDbPtr _rpmdb;
00049 
00050         // cached values per package
00051         // !!! RpmDb uses a per Package DataProvider, so it's always the
00052         //     same PMPackage that calls the inteface. So it makes sense to
00053         //     store data here.
00054         Date              _attr_INSTALLTIME; // referenced from rpmdb during setup
00055         std::string       _attr_SUMMARY;
00056         FSize             _attr_SIZE;
00057         YStringTreeItem * _attr_GROUP;
00058         Vendor            _attr_VENDOR;
00059 
00060 
00064         void loadStaticData( constRpmHeaderPtr h );
00065 
00072         static PMPackagePtr         _cachedPkg;
00073         static constRpmHeaderPtr _cachedData;
00074 
00075         constRpmHeaderPtr fillCache( PMPackagePtr package ) const;
00076 
00077   public:
00078 
00082         PMRpmPackageDataProvider( RpmDbPtr rpmdb );
00083 
00084         virtual ~PMRpmPackageDataProvider();
00085 
00086   public:
00087 
00092     // PMObject attributes
00093     virtual std::string            summary     ( const PMPackage & pkg_r ) const;
00094     virtual std::list<std::string> description ( const PMPackage & pkg_r ) const;
00095     virtual FSize                  size        ( const PMPackage & pkg_r ) const;
00096 
00097     // PMPackage attributes
00098     virtual Date                   buildtime   ( const PMPackage & pkg_r ) const;
00099     virtual std::string            buildhost   ( const PMPackage & pkg_r ) const;
00100     virtual Date                   installtime ( const PMPackage & pkg_r ) const;
00101     virtual std::string            distribution( const PMPackage & pkg_r ) const;
00102     virtual Vendor                 vendor      ( const PMPackage & pkg_r ) const;
00103     virtual std::string            license     ( const PMPackage & pkg_r ) const;
00104     virtual std::string            packager    ( const PMPackage & pkg_r ) const;
00105     virtual std::string            group       ( const PMPackage & pkg_r ) const;
00106     virtual YStringTreeItem *      group_ptr   ( const PMPackage & pkg_r ) const;
00107     virtual std::list<std::string> changelog   ( const PMPackage & pkg_r ) const;
00108     virtual std::string            url         ( const PMPackage & pkg_r ) const;
00109     virtual std::string            os          ( const PMPackage & pkg_r ) const;
00110     virtual std::list<std::string> prein       ( const PMPackage & pkg_r ) const;
00111     virtual std::list<std::string> postin      ( const PMPackage & pkg_r ) const;
00112     virtual std::list<std::string> preun       ( const PMPackage & pkg_r ) const;
00113     virtual std::list<std::string> postun      ( const PMPackage & pkg_r ) const;
00114     virtual std::list<std::string> filenames   ( const PMPackage & pkg_r ) const;
00115 
00116     // dudata is special
00117     virtual void du( const PMPackage & pkg_r, PkgDu & dudata_r ) const;
00118 };
00119 
00120 #endif // PMRpmPackageDataProvider_h
00121 
00122 // vim:sw=4

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