00001 /*---------------------------------------------------------------------\ 00002 | | 00003 | __ __ ____ _____ ____ | 00004 | \ \ / /_ _/ ___|_ _|___ \ | 00005 | \ V / _` \___ \ | | __) | | 00006 | | | (_| |___) || | / __/ | 00007 | |_|\__,_|____/ |_| |_____| | 00008 | | 00009 | core system | 00010 | (C) SuSE GmbH | 00011 \----------------------------------------------------------------------/ 00012 00013 File: PMPackageDataProvider.h 00014 00015 Author: Michael Andres <ma@suse.de> 00016 Maintainer: Michael Andres <ma@suse.de> 00017 00018 Purpose: Common interface to be realized by all PackageDataProvider. 00019 00020 /-*/ 00021 #ifndef PMPackageDataProvider_h 00022 #define PMPackageDataProvider_h 00023 00024 #include <iosfwd> 00025 #include <string> 00026 00027 #include <y2util/Date.h> 00028 #include <y2util/FSize.h> 00029 #include <y2util/Vendor.h> 00030 #include <y2util/Pathname.h> 00031 #include <y2util/YRpmGroupsTree.h> 00032 00033 #include <y2pm/PkgSplit.h> 00034 00035 #include <y2pm/PMError.h> 00036 #include <y2pm/PMPackageDataProviderPtr.h> 00037 #include <y2pm/PMPackagePtr.h> 00038 #include <y2pm/InstSrcPtr.h> 00039 00040 class PkgDu; 00041 00043 // 00044 // CLASS NAME : PMPackageDataProvider 00055 class PMPackageDataProvider : public CountedRep { 00056 REP_BODY(PMPackageDataProvider); 00057 00058 public: 00059 00061 // default for unprovided values 00063 00064 // PMObject attributes 00065 static std::string summary() { return std::string(); } 00066 static std::list<std::string> description() { return std::list<std::string>(); } 00067 static std::list<std::string> insnotify() { return std::list<std::string>(); } 00068 static std::list<std::string> delnotify() { return std::list<std::string>(); } 00069 static FSize size() { return FSize(0); } 00070 static bool providesSources() { return false; } 00071 static std::string instSrcLabel() { return std::string(); } 00072 static Vendor instSrcVendor() { return Vendor(); } 00073 static unsigned instSrcRank() { return unsigned(-1); } 00074 00075 // PMPackage attributes 00076 static PkgSplitSet splitprovides() { return PkgSplitSet(); } 00077 static Date buildtime() { return Date(0); } 00078 static std::string buildhost() { return std::string(); } 00079 static Date installtime() { return Date(0); } 00080 static std::string distribution(){ return std::string(); } 00081 static Vendor vendor() { return Vendor(); } 00082 static std::string license() { return std::string(); } 00083 static std::list<std::string> licenseToConfirm() { return std::list<std::string>(); } 00084 static std::string packager() { return std::string(); } 00085 static std::string group() { return std::string(); } 00086 static YStringTreeItem * group_ptr() { return 0; } 00087 static std::list<std::string> changelog() { return std::list<std::string>(); } 00088 static std::string url() { return std::string(); } 00089 static std::string os() { return std::string(); } 00090 static std::list<std::string> prein() { return std::list<std::string>(); } 00091 static std::list<std::string> postin() { return std::list<std::string>(); } 00092 static std::list<std::string> preun() { return std::list<std::string>(); } 00093 static std::list<std::string> postun() { return std::list<std::string>(); } 00094 static std::string sourceloc() { return std::string(); } 00095 static FSize sourcesize() { return FSize(0); } 00096 static FSize archivesize() { return FSize(0); } 00097 static std::list<std::string> authors() { return std::list<std::string>(); } 00098 static std::list<std::string> filenames() { return std::list<std::string>(); } 00099 // suse packages values 00100 static std::list<std::string> recommends() { return std::list<std::string>(); } 00101 static std::list<std::string> suggests() { return std::list<std::string>(); } 00102 static std::string location() { return std::string(); } 00103 static unsigned int medianr() { return 0; } 00104 static std::list<std::string> keywords() { return std::list<std::string>(); } 00105 static std::string externalUrl() { return std::string(); } 00106 static std::list<PkgEdition> patchRpmBaseVersions() { return std::list<PkgEdition>(); } 00107 static FSize patchRpmSize() { return FSize( 0 ); } 00108 static bool forceInstall() { return false; } 00109 00110 static bool isRemote() { return false; } 00111 // physical access to the rpm file. 00112 static PMError providePkgToInstall(Pathname& path_r) { path_r = Pathname(); return PMError::E_error; } 00113 // physical access to the src.rpm file. 00114 static PMError provideSrcPkgToInstall(Pathname& path_r) { path_r = Pathname(); return PMError::E_error; } 00115 // source for this package, needed for callbacks 00116 static constInstSrcPtr source() { return constInstSrcPtr(0); } 00117 00118 // Internally used by PMSelectable. 00119 static bool prefererCandidate() { return false; } 00120 00121 // dudata is special 00122 static void du( PkgDu & dudata_r ); 00123 00124 protected: 00125 00126 PMPackageDataProvider(); 00127 00128 virtual ~PMPackageDataProvider(); 00129 00133 PMPackagePtr mkPtr( const PMPackage & pkg_r ) const { return const_cast<PMPackage*>(&pkg_r); } 00134 00135 public: 00136 00138 // Overload values you can provide 00140 00141 // PMObject attributes 00142 virtual std::string summary ( const PMPackage & pkg_r ) const { return summary(); } 00143 virtual std::list<std::string> description ( const PMPackage & pkg_r ) const { return description(); } 00144 virtual std::list<std::string> insnotify ( const PMPackage & pkg_r ) const { return insnotify(); } 00145 virtual std::list<std::string> delnotify ( const PMPackage & pkg_r ) const { return delnotify(); } 00146 virtual FSize size ( const PMPackage & pkg_r ) const { return size(); } 00147 virtual bool providesSources( const PMPackage & pkg_r ) const { return providesSources(); } 00148 virtual std::string instSrcLabel ( const PMPackage & pkg_r ) const { return instSrcLabel(); } 00149 virtual Vendor instSrcVendor ( const PMPackage & pkg_r ) const { return instSrcVendor(); } 00150 virtual unsigned instSrcRank ( const PMPackage & pkg_r ) const { return instSrcRank(); } 00151 00152 // PMPackage attributes 00153 virtual PkgSplitSet splitprovides( const PMPackage & pkg_r ) const { return splitprovides(); } 00154 virtual Date buildtime ( const PMPackage & pkg_r ) const { return buildtime(); } 00155 virtual std::string buildhost ( const PMPackage & pkg_r ) const { return buildhost(); } 00156 virtual Date installtime ( const PMPackage & pkg_r ) const { return installtime(); } 00157 virtual std::string distribution( const PMPackage & pkg_r ) const { return distribution(); } 00158 virtual Vendor vendor ( const PMPackage & pkg_r ) const { return vendor(); } 00159 virtual std::string license ( const PMPackage & pkg_r ) const { return license(); } 00160 virtual std::list<std::string> licenseToConfirm( const PMPackage & pkg_r ) const { return licenseToConfirm(); } 00161 virtual std::string packager ( const PMPackage & pkg_r ) const { return packager(); } 00162 virtual std::string group ( const PMPackage & pkg_r ) const { return group(); } 00163 virtual YStringTreeItem * group_ptr ( const PMPackage & pkg_r ) const { return group_ptr(); } 00164 virtual std::list<std::string> changelog ( const PMPackage & pkg_r ) const { return changelog(); } 00165 virtual std::string url ( const PMPackage & pkg_r ) const { return url(); } 00166 virtual std::string os ( const PMPackage & pkg_r ) const { return os(); } 00167 virtual std::list<std::string> prein ( const PMPackage & pkg_r ) const { return prein(); } 00168 virtual std::list<std::string> postin ( const PMPackage & pkg_r ) const { return postin(); } 00169 virtual std::list<std::string> preun ( const PMPackage & pkg_r ) const { return preun(); } 00170 virtual std::list<std::string> postun ( const PMPackage & pkg_r ) const { return postun(); } 00171 virtual std::string sourceloc ( const PMPackage & pkg_r ) const { return sourceloc(); } 00172 virtual FSize sourcesize ( const PMPackage & pkg_r ) const { return sourcesize(); } 00173 virtual FSize archivesize ( const PMPackage & pkg_r ) const { return archivesize(); } 00174 virtual std::list<std::string> authors ( const PMPackage & pkg_r ) const { return authors(); } 00175 virtual std::list<std::string> filenames ( const PMPackage & pkg_r ) const { return filenames(); } 00176 // suse packages values 00177 virtual std::list<std::string> recommends ( const PMPackage & pkg_r ) const { return recommends(); } 00178 virtual std::list<std::string> suggests ( const PMPackage & pkg_r ) const { return suggests(); } 00179 virtual std::string location ( const PMPackage & pkg_r ) const { return location(); } 00180 virtual unsigned int medianr ( const PMPackage & pkg_r ) const { return medianr(); } 00181 virtual std::list<std::string> keywords ( const PMPackage & pkg_r ) const { return keywords(); } 00182 virtual std::string externalUrl ( const PMPackage & pkg_r ) const { return externalUrl(); } 00183 virtual std::list<PkgEdition> patchRpmBaseVersions( const PMPackage & pkg_r ) const { return patchRpmBaseVersions(); } 00184 virtual FSize patchRpmSize( const PMPackage & pkg_r ) const { return patchRpmSize(); } 00185 virtual bool forceInstall( const PMPackage & pkg_r ) const { return forceInstall(); } 00186 00187 virtual bool isRemote ( const PMPackage & pkg_r ) const { return isRemote(); } 00188 // physical access to the rpm file. 00189 virtual PMError providePkgToInstall( const PMPackage & pkg_r, Pathname& path_r ) const { return providePkgToInstall(path_r); } 00190 // physical access to the src.rpm file. 00191 virtual PMError provideSrcPkgToInstall( const PMPackage & pkg_r, Pathname& path_r ) const { return provideSrcPkgToInstall(path_r); } 00192 // source for this package, needed for callbacks 00193 virtual constInstSrcPtr source( const PMPackage & pkg_r ) const { return source(); } 00194 00195 // Internally used by PMSelectable. 00196 virtual bool prefererCandidate( const PMPackage & pkg_r ) const { return prefererCandidate(); } 00197 00198 // dudata is special 00199 virtual void du( const PMPackage & pkg_r, PkgDu & dudata_r ) const { return du( dudata_r ); } 00200 }; 00201 00203 00204 #endif // PMPackageDataProvider_h