PackageImpl.cc

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00013 #include "zypp/TranslatedText.h"
00014 #include "zypp/base/String.h"
00015 #include "zypp/base/Logger.h"
00016 #include "zypp/repo/RepositoryImpl.h"
00017 #include "PackageImpl.h"
00018 #include "zypp/cache/CacheAttributes.h"
00019 
00020 using namespace std;
00021 using namespace zypp::detail;
00022 using namespace::zypp::repo;
00023 
00025 namespace zypp { namespace repo { namespace cached {
00026 
00028 //
00029 //        CLASS NAME : PackageImpl
00030 //
00032 
00035 PackageImpl::PackageImpl (const data::RecordId &id, cached::RepoImpl::Ptr repository_r)
00036     : _repository (repository_r),
00037       _id(id)
00038 {}
00039 
00040 Repository
00041 PackageImpl::repository() const
00042 {
00043   return _repository->selfRepository();
00044 }
00045 
00047 // ResObject Attributes
00049 
00050 TranslatedText PackageImpl::summary() const
00051 {
00052   return _repository->resolvableQuery().queryTranslatedStringAttribute( _id, cache::attrResObjectSummary() );
00053 }
00054 
00055 TranslatedText PackageImpl::description() const
00056 {
00057   return _repository->resolvableQuery().queryTranslatedStringAttribute( _id, cache::attrResObjectDescription() );
00058 }
00059 
00060 TranslatedText PackageImpl::insnotify() const
00061 {
00062   return _repository->resolvableQuery().queryTranslatedStringAttribute( _id, cache::attrResObjectInsnotify() );
00063 }
00064 
00065 TranslatedText PackageImpl::delnotify() const
00066 {
00067   return _repository->resolvableQuery().queryTranslatedStringAttribute( _id, cache::attrResObjectDelnotify() );
00068 }
00069 
00070 TranslatedText PackageImpl::licenseToConfirm() const
00071 {
00072   return _repository->resolvableQuery().queryTranslatedStringAttribute( _id, cache::attrResObjectLicenseToConfirm() );
00073 }
00074 
00075 Vendor PackageImpl::vendor() const
00076 {
00077   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrResObjectVendor() );
00078 }
00079 
00080 ByteCount PackageImpl::size() const
00081 {
00082   return _repository->resolvableQuery().queryNumericAttribute( _id, cache::attrResObjectInstalledSize() );
00083 }
00084 
00085 bool PackageImpl::installOnly() const
00086 {
00087   return _repository->resolvableQuery().queryBooleanAttribute( _id, cache::attrResObjectInstallOnly() );
00088 }
00089 
00090 Date PackageImpl::buildtime() const
00091 {
00092   return _repository->resolvableQuery().queryNumericAttribute( _id, cache::attrResObjectBuildTime() );
00093 }
00094 
00095 Date PackageImpl::installtime() const
00096 {
00097   return Date();
00098 }
00099 
00100 std::string PackageImpl::buildhost() const
00101 {
00102   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackageBuildhost() );
00103 }
00104 
00105 std::string PackageImpl::distribution() const
00106 {
00107   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackageDistribution() );
00108 }
00109 
00110 Label PackageImpl::license() const
00111 {
00112   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackageLicense() );
00113 }
00114 
00115 std::string PackageImpl::packager() const
00116 {
00117   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackagePackager() );
00118 }
00119 
00120 PackageGroup PackageImpl::group() const
00121 {
00122   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackageGroup() );
00123 }
00124 
00125 PackageImpl::Keywords PackageImpl::keywords() const
00126 {
00127   PackageImpl::Keywords keywords;
00128   _repository->resolvableQuery().queryStringContainerAttribute( _id, cache::attrPackageKeywords(), std::inserter(keywords, keywords.begin()) );
00129   return keywords;
00130 }
00131 
00132 Changelog PackageImpl::changelog() const
00133 {
00134   return Changelog();
00135 }
00136 
00137 unsigned PackageImpl::mediaNr() const
00138 {
00139   if ( _mnr == (unsigned)-1 )
00140   {
00141     _mnr = _repository->resolvableQuery().queryNumericAttribute( _id, cache::attrPackageLocationMediaNr() );
00142   }
00143   return _mnr;
00144 }
00145 
00146 ByteCount PackageImpl::downloadSize() const
00147 {
00148   return _repository->resolvableQuery().queryNumericAttribute( _id, cache::attrPackageLocationDownloadSize() );
00149 }
00150 
00151 OnMediaLocation PackageImpl::location() const
00152 {
00153   OnMediaLocation loc;
00154   queryOnMediaLocation( _repository->resolvableQuery(), _id, cache::attrPackageLocation, loc );
00155   return loc;
00156 }
00157 
00158 std::string PackageImpl::url() const
00159 {
00160   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackageUrl() );
00161 }
00162 
00163 std::string PackageImpl::os() const
00164 {
00165   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackageOperatingSystem() );
00166 }
00167 
00168 Text PackageImpl::prein() const
00169 {
00170   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackagePrein() );
00171 }
00172 
00173 Text PackageImpl::postin() const
00174 {
00175   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackagePostin() );
00176 }
00177 
00178 Text PackageImpl::preun() const
00179 {
00180   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackagePreun() );
00181 }
00182 
00183 Text PackageImpl::postun() const
00184 {
00185   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackagePostun() );
00186 }
00187 
00188 ByteCount PackageImpl::sourcesize() const
00189 {
00190   return ByteCount();
00191 }
00192 
00193 const DiskUsage & PackageImpl::diskusage() const
00194 {
00195   if ( ! _diskusage )
00196   {
00197     // lazy init
00198     _diskusage.reset( new DiskUsage );
00199     _repository->resolvableQuery().queryDiskUsage( _id, *_diskusage );
00200     if ( _diskusage->empty() )
00201     {
00202       // No info: Creating a faked entry distributing the
00203       // total package size in assumed 200 files to "/ZYPP_NO_DU_INFO"
00204       // The reported size are 1K blocks.
00205       //
00206       // Note: Less likely that some system has a mountpoint named
00207       // ZYPP_NO_DU_INFO, so the size will be accounted to '/'.
00208       // but adding a faked mountpoint entry an application is able
00209       // to spot and handle these faked data in a different manner.
00210       unsigned dusize = size().blocks( ByteCount::K );
00211       _diskusage->add( "/",                 dusize, 200 );
00212       _diskusage->add( "/ZYPP_NO_DU_INFO/", dusize, 200 );
00213     }
00214   }
00215   return *_diskusage;
00216 }
00217 
00218 list<string> PackageImpl::authors() const
00219 {
00220   list<string> authors;
00221   _repository->resolvableQuery().queryStringContainerAttribute( _id, cache::attrPackageAuthors(), back_inserter(authors) );
00222   return authors;
00223 }
00224 
00225 std::list<std::string> PackageImpl::filenames() const
00226 {
00227   return std::list<std::string>();
00228 }
00229 
00230 std::string PackageImpl::sourcePkgName() const
00231 {
00232   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackageSourcePkgName() );
00233 }
00234 
00235 Edition PackageImpl::sourcePkgEdition() const
00236 {
00237   return _repository->resolvableQuery().queryStringAttribute( _id, cache::attrPackageSourcePkgEdition() );
00238 }
00239 
00241 } } } // namespace zypp::repo::cached
00243 

Generated on Tue Sep 25 19:23:00 2007 for libzypp by  doxygen 1.5.3