00001 /*---------------------------------------------------------------------\ 00002 | | 00003 | __ __ ____ _____ ____ | 00004 | \ \ / /_ _/ ___|_ _|___ \ | 00005 | \ V / _` \___ \ | | __) | | 00006 | | | (_| |___) || | / __/ | 00007 | |_|\__,_|____/ |_| |_____| | 00008 | | 00009 | core system | 00010 | (C) SuSE GmbH | 00011 \----------------------------------------------------------------------/ 00012 00013 File: PMULPackageDataProvider.h 00014 00015 Author: Michael Andres <ma@suse.de> 00016 Maintainer: Klaus Kaempf <kkaempf@suse.de> 00017 00018 Purpose: Realized PackageDataProvider for UnitedLinux packages format 00019 00020 /-*/ 00021 #ifndef PMULPackageDataProvider_h 00022 #define PMULPackageDataProvider_h 00023 00024 #include <iosfwd> 00025 #include <string> 00026 #include <fstream> 00027 00028 #include <y2util/TagCacheRetrieval.h> 00029 00030 #include <y2pm/ULParsePackagesLang.h> 00031 #include <y2pm/PMULPackageDataProviderPtr.h> 00032 #include <y2pm/PMPackageDataProvider.h> 00033 00034 #include <y2pm/PMPackage.h> 00035 00037 // 00038 // CLASS NAME : PMULPackageDataProvider 00048 class PMULPackageDataProvider : public PMPackageDataProvider { 00049 REP_BODY(PMULPackageDataProvider); 00050 00051 friend class ULPackagesParser; 00052 friend class InstSrcDataUL; 00053 00054 protected: 00055 00056 // PMObject 00057 TagRetrievalPos _attr_SUMMARY; 00058 TagRetrievalPos _attr_DESCRIPTION; 00059 TagRetrievalPos _attr_INSNOTIFY; 00060 TagRetrievalPos _attr_DELNOTIFY; 00061 FSize _attr_SIZE; 00062 00063 // PMPackage 00064 PkgSplitSet _attr_SPLITPROVIDES; 00065 Date _attr_BUILDTIME; 00066 // BUILDHOST 00067 // INSTALLTIME 00068 // DISTRIBUTION 00069 // VENDOR 00070 TagRetrievalPos _attr_LICENSE; 00071 TagRetrievalPos _attr_LICENSETOCONFIRM; 00072 // PACKAGER 00073 YStringTreeItem * _attr_GROUP; 00074 // CHANGELOG 00075 // URL 00076 // OS 00077 // PREIN 00078 // POSTIN 00079 // PREUN 00080 // POSTUN 00081 TagRetrievalPos _attr_SOURCELOC; 00082 FSize _attr_SOURCESIZE; // if > 0, has source 00083 FSize _attr_ARCHIVESIZE; 00084 TagRetrievalPos _attr_AUTHORS; 00085 // FILENAMES 00086 TagRetrievalPos _attr_RECOMMENDS; 00087 TagRetrievalPos _attr_SUGGESTS; 00088 TagRetrievalPos _attr_LOCATION; 00089 unsigned int _attr_MEDIANR; 00090 TagRetrievalPos _attr_KEYWORDS; 00091 TagRetrievalPos _attr_DU; 00092 00093 // the source 00094 const constInstSrcPtr _source; 00095 00096 // retrieval pointer for packages data 00097 const TagCacheRetrievalPtr _package_retrieval; 00098 00099 // retrieval pointer for packages.<locale> data 00100 TagCacheRetrievalPtr _locale_retrieval; 00101 00102 // retrieval pointer for packages.DU data 00103 const TagCacheRetrievalPtr _du_retrieval; 00104 00105 // fallback provider (Share entry in packages) 00106 PMULPackageDataProviderPtr _fallback_provider; 00107 00108 protected: 00109 00110 void assignLocaleData( const ULParsePackagesLang::Entry & entry_r ); 00111 00112 public: 00113 00114 PMULPackageDataProvider (constInstSrcPtr source, 00115 TagCacheRetrievalPtr package_retrieval, 00116 TagCacheRetrievalPtr locale_retrieval, 00117 TagCacheRetrievalPtr du_retrieval); 00118 virtual ~PMULPackageDataProvider(); 00119 00120 public: 00121 00122 void setShared ( PMULPackageDataProviderPtr provider ) { _fallback_provider = provider; } 00123 00124 public: 00125 00131 // PMObject attributes 00132 virtual std::string summary ( const PMPackage & pkg_r ) const; 00133 virtual std::list<std::string> description ( const PMPackage & pkg_r ) const; 00134 virtual std::list<std::string> insnotify ( const PMPackage & pkg_r ) const; 00135 virtual std::list<std::string> delnotify ( const PMPackage & pkg_r ) const; 00136 virtual FSize size ( const PMPackage & pkg_r ) const; 00137 virtual bool providesSources( const PMPackage & pkg_r ) const; 00138 virtual std::string instSrcLabel ( const PMPackage & pkg_r ) const; 00139 virtual Vendor instSrcVendor ( const PMPackage & pkg_r ) const; 00140 virtual unsigned instSrcRank ( const PMPackage & pkg_r ) const; 00141 00142 // PMPackage attributes 00143 virtual PkgSplitSet splitprovides ( const PMPackage & pkg_r ) const; 00144 virtual Date buildtime ( const PMPackage & pkg_r ) const; 00145 //virtual std::string buildhost ( const PMPackage & pkg_r ) const; 00146 //virtual Date installtime ( const PMPackage & pkg_r ) const; 00147 //virtual std::string distribution( const PMPackage & pkg_r ) const; 00148 virtual Vendor vendor ( const PMPackage & pkg_r ) const; 00149 virtual std::string license ( const PMPackage & pkg_r ) const; 00150 virtual std::list<std::string> licenseToConfirm( const PMPackage & pkg_r ) const; 00151 //virtual std::string packager ( const PMPackage & pkg_r ) const; 00152 virtual std::string group ( const PMPackage & pkg_r ) const; 00153 virtual YStringTreeItem * group_ptr ( const PMPackage & pkg_r ) const; 00154 //virtual std::list<std::string> changelog ( const PMPackage & pkg_r ) const; 00155 //virtual std::string url ( const PMPackage & pkg_r ) const; 00156 //virtual std::string os ( const PMPackage & pkg_r ) const; 00157 //virtual std::list<std::string> prein ( const PMPackage & pkg_r ) const; 00158 //virtual std::list<std::string> postin ( const PMPackage & pkg_r ) const; 00159 //virtual std::list<std::string> preun ( const PMPackage & pkg_r ) const; 00160 //virtual std::list<std::string> postun ( const PMPackage & pkg_r ) const; 00161 virtual std::string sourceloc ( const PMPackage & pkg_r ) const; 00162 virtual FSize sourcesize ( const PMPackage & pkg_r ) const; 00163 virtual FSize archivesize ( const PMPackage & pkg_r ) const; 00164 virtual std::list<std::string> authors ( const PMPackage & pkg_r ) const; 00165 //virtual std::list<std::string> filenames ( const PMPackage & pkg_r ) const; 00166 // suse packages values 00167 virtual std::list<std::string> recommends ( const PMPackage & pkg_r ) const; 00168 virtual std::list<std::string> suggests ( const PMPackage & pkg_r ) const; 00169 virtual std::string location ( const PMPackage & pkg_r ) const; 00170 virtual unsigned int medianr ( const PMPackage & pkg_r ) const; 00171 virtual std::list<std::string> keywords ( const PMPackage & pkg_r ) const; 00172 00173 virtual bool isRemote ( const PMPackage & pkg_r ) const; 00174 // physical access to the rpm file. 00175 virtual PMError providePkgToInstall( const PMPackage & pkg_r, Pathname& path_r ) const; 00176 virtual PMError provideSrcPkgToInstall( const PMPackage & pkg_r, Pathname& path_r ) const; 00177 // source pointer 00178 virtual constInstSrcPtr source ( const PMPackage & pkg_r ) const { return _source; } 00179 00180 // Internally used by PMSelectable. 00181 virtual bool prefererCandidate( const PMPackage & pkg_r ) const; 00182 00183 // dudata is special 00184 virtual void du( const PMPackage & pkg_r, PkgDu & dudata_r ) const; 00185 }; 00186 00188 00189 #endif // PMULPackageDataProvider_h