00001
00002
00003
00004
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
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
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
00198 _diskusage.reset( new DiskUsage );
00199 _repository->resolvableQuery().queryDiskUsage( _id, *_diskusage );
00200 if ( _diskusage->empty() )
00201 {
00202
00203
00204
00205
00206
00207
00208
00209
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 } } }
00243