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

YUMPackageDataProvider.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:       YUMPackageDataProvider.h
00014  Purpose:    Implements PackageDataProvider for YUM
00015  Author:     Michael Andres <ma@suse.de>
00016  Maintainer: Michael Andres <ma@suse.de>
00017 
00018  /-*/
00019 
00020 #ifndef YUMPackageDataProvider_h
00021 #define YUMPackageDataProvider_h
00022 
00023 #include <iosfwd>
00024 #include <vector>
00025 #include <map>
00026 
00027 #include <y2util/YRpmGroupsTree.h>
00028 #include <y2util/Vendor.h>
00029 #include <y2util/FSize.h>
00030 #include <y2util/Date.h>
00031 
00032 #include <y2pm/PMPackageDataProvider.h>
00033 #include <y2pm/PMPackageManager.h>
00034 #include <y2pm/PMPackage.h>
00035 #include <y2pm/InstSrcDataYUM.h>
00036 #include <y2pm/InstSrcDescr.h>
00037 #include <Y2PM.h>
00038 
00039 #include "YUMPackageDataProviderPtr.h"
00040 #include "y2pm/InstSrcDataYUM.h"
00041 #include "YUMImpl.h"
00042 
00043 
00045 namespace YUM
00046 { 
00047 
00048   class PackageDataProvider : public PMPackageDataProvider
00049   {
00050     REP_BODY(PackageDataProvider);
00051 
00052     friend class Impl;
00053 
00054   public:
00055 
00059     PackageDataProvider( const VarPtr<Impl> impl_r );
00060 
00061     virtual ~PackageDataProvider();
00062 
00063   public:
00064 
00065     // PMObject attributes
00066     virtual std::string            summary     ( const PMPackage & pkg_r ) const
00067     { return _attr_SUMMARY; }
00068     virtual std::list<std::string> description ( const PMPackage & pkg_r ) const
00069     { return _attr_DESCRIPTION; }
00070     virtual FSize                  size        ( const PMPackage & pkg_r ) const
00071     { return _attr_SIZE; }
00072     virtual bool                   providesSources( const PMPackage & pkg_r ) const
00073     { return !_sourcefile.empty(); }
00074     virtual std::string            instSrcLabel   ( const PMPackage & pkg_r ) const
00075     {
00076       if ( source(pkg_r) && source(pkg_r)->descr() )
00077         return source(pkg_r)->descr()->label();
00078       return PMPackageDataProvider::instSrcLabel();
00079     }
00080     virtual Vendor                 instSrcVendor  ( const PMPackage & pkg_r ) const
00081     {
00082       if ( source(pkg_r) && source(pkg_r)->descr() )
00083         return source(pkg_r)->descr()->content_vendor();
00084       return PMPackageDataProvider::instSrcVendor();
00085     }
00086     virtual unsigned               instSrcRank    ( const PMPackage & pkg_r ) const
00087     {
00088       if ( source(pkg_r) && source(pkg_r)->descr() )
00089         return source(pkg_r)->descr()->default_rank();
00090       return PMPackageDataProvider::instSrcRank();
00091     }
00092 
00093     // PMPackage attributes
00094     virtual PkgSplitSet            splitprovides( const PMPackage & pkg_r ) const
00095     { return _attr_SPLITPROVIDES; }
00096     virtual Date                   buildtime   ( const PMPackage & pkg_r ) const
00097     { return Date( pkg_r.edition().buildtime() ); }
00098     //virtual std::string            buildhost   ( const PMPackage & pkg_r ) const;
00099     //virtual std::string            distribution( const PMPackage & pkg_r ) const;
00100     virtual Vendor                 vendor      ( const PMPackage & pkg_r ) const
00101     { return _attr_VENDOR; }
00102     virtual std::string            license     ( const PMPackage & pkg_r ) const
00103     { return _attr_LICENSE; }
00104     //virtual std::string            packager    ( const PMPackage & pkg_r ) const;
00105     virtual std::string            group       ( const PMPackage & pkg_r ) const
00106     { return _attr_GROUP ? Y2PM::packageManager().rpmGroup( _attr_GROUP ) : std::string(); }
00107     virtual YStringTreeItem *      group_ptr   ( const PMPackage & pkg_r ) const
00108     { return _attr_GROUP; }
00109     //virtual std::list<std::string> changelog   ( const PMPackage & pkg_r ) const;
00110     //virtual std::string            url         ( const PMPackage & pkg_r ) const;
00111     //virtual std::string            os          ( const PMPackage & pkg_r ) const;
00112     //virtual std::list<std::string> prein       ( const PMPackage & pkg_r ) const;
00113     //virtual std::list<std::string> postin      ( const PMPackage & pkg_r ) const;
00114     //virtual std::list<std::string> preun       ( const PMPackage & pkg_r ) const;
00115     //virtual std::list<std::string> postun      ( const PMPackage & pkg_r ) const;
00116     virtual std::string            sourceloc   ( const PMPackage & pkg_r ) const
00117     { return _sourcefile.asString(); }
00118     virtual FSize                  sourcesize  ( const PMPackage & pkg_r ) const
00119     { return _attr_SOURCESIZE; }
00120     virtual FSize                  archivesize ( const PMPackage & pkg_r ) const
00121     { return _attr_ARCHIVESIZE; }
00122     //virtual std::list<std::string> authors     ( const PMPackage & pkg_r ) const;
00123     //virtual std::list<std::string> filenames   ( const PMPackage & pkg_r ) const;
00124 
00125     // suse packages values
00126     //virtual std::list<std::string> recommends  ( const PMPackage & pkg_r ) const;
00127     //virtual std::list<std::string> suggests    ( const PMPackage & pkg_r ) const;
00128     virtual std::string            location    ( const PMPackage & pkg_r ) const
00129     { return _pkgfile.asString(); }
00130     virtual unsigned int           medianr     ( const PMPackage & pkg_r ) const
00131     { return 1; }
00132     //virtual std::list<std::string> keywords    ( const PMPackage & pkg_r ) const;
00133     //virtual std::string            externalUrl ( const PMPackage & pkg_r ) const;
00134     //virtual std::list<PkgEdition>  patchRpmBaseVersions( const PMPackage & pkg_r ) const;
00135     //virtual FSize                  patchRpmSize( const PMPackage & pkg_r ) const;
00136 
00137     // physical access to the rpm file.
00138     virtual PMError providePkgToInstall( const PMPackage & pkg_r, Pathname& path_r ) const
00139     { return _impl->providePkgToInstall( _pkgfile, path_r ); }
00140     // physical access to the src.rpm file.
00141     virtual PMError provideSrcPkgToInstall( const PMPackage & pkg_r, Pathname& path_r ) const
00142     { return _impl->providePkgToInstall( _sourcefile, path_r );}
00143 
00144     // source for this package, needed for callbacks
00145     virtual constInstSrcPtr source   ( const PMPackage & pkg_r ) const
00146     { return _impl->instSrc(); }
00147     virtual bool            isRemote ( const PMPackage & pkg_r ) const
00148     { return( source(pkg_r) ? source(pkg_r)->isRemote() : false ); }
00149     // dudata is special
00150     //virtual void du( const PMPackage & pkg_r, PkgDu & dudata_r ) const;
00151 
00152   private:
00153 
00154     // the source
00155     const VarPtr<Impl>     _impl;
00156 
00157     Pathname               _pkgfile;
00158     Pathname               _sourcefile;
00159 
00160     std::string            _attr_SUMMARY;
00161     std::list<std::string> _attr_DESCRIPTION;
00162     FSize                  _attr_SIZE;
00163 
00164     PkgSplitSet            _attr_SPLITPROVIDES; // provided by YUMImpl
00165     Vendor                 _attr_VENDOR;
00166     std::string            _attr_LICENSE;
00167     YStringTreeItem *      _attr_GROUP;
00168     FSize                  _attr_SOURCESIZE;
00169     FSize                  _attr_ARCHIVESIZE;
00170 
00171   private:
00172 
00173     void loadAttr( YUMPrimaryDataPtr pdata_r )
00174     {
00175       _pkgfile              = pdata_r->location;
00176 
00177       _attr_SUMMARY         = pdata_r->summary;
00178       _attr_DESCRIPTION     = stringutil::splitToLines( pdata_r->description );
00179       _attr_SIZE            = FSize(pdata_r->sizeInstalled);
00180 
00181       _attr_VENDOR          = Vendor(pdata_r->vendor);
00182       _attr_LICENSE         = pdata_r->license;
00183       _attr_GROUP           = Y2PM::packageManager().addRpmGroup( pdata_r->group );
00184       _attr_ARCHIVESIZE     = FSize(pdata_r->sizePackage);
00185     }
00186 
00187   };
00188 
00190 } // namespace YUM
00192 
00193 #endif // YUMPackageDataProvider_h

Generated on Mon Sep 12 21:52:13 2005 for yast2-packagemanager by  doxygen 1.4.4