00001 /*---------------------------------------------------------------------\ 00002 | | 00003 | __ __ ____ _____ ____ | 00004 | \ \ / /_ _/ ___|_ _|___ \ | 00005 | \ V / _` \___ \ | | __) | | 00006 | | | (_| |___) || | / __/ | 00007 | |_|\__,_|____/ |_| |_____| | 00008 | | 00009 | core system | 00010 | (C) SuSE GmbH | 00011 \----------------------------------------------------------------------/ 00012 00013 File: PMPackageManager.h 00014 00015 Author: Michael Andres <ma@suse.de> 00016 Maintainer: Michael Andres <ma@suse.de> 00017 00018 /-*/ 00019 #ifndef PMPackageManager_h 00020 #define PMPackageManager_h 00021 00022 #include <iosfwd> 00023 #include <list> 00024 00025 #include <y2util/YRpmGroupsTree.h> 00026 00027 #include <y2pm/PMError.h> 00028 #include <y2pm/PMManager.h> 00029 #include <y2pm/PMPackage.h> 00030 #include <y2pm/PMPackageManager_update.h> 00031 #include <y2pm/PkgDu.h> 00032 00034 // 00035 // CLASS NAME : PMPackageManager 00039 class PMPackageManager : public PMManager { 00040 00041 friend std::ostream & operator<<( std::ostream & str, const PMPackageManager & obj ); 00042 00043 PMPackageManager & operator=( const PMPackageManager & ); 00044 PMPackageManager ( const PMPackageManager & ); 00045 00046 private: 00047 00048 friend class Y2PM; 00049 PMPackageManager(); 00050 virtual ~PMPackageManager(); 00051 00052 private: 00053 00058 virtual PMObjectPtr assertObjectType( const PMObjectPtr & object_r ) const; 00059 00063 virtual void prePSI(); 00067 virtual void postPSI(); 00068 00069 private: 00070 00074 PMManager::PMSelectableVec _update_items; 00075 00076 private: 00077 00078 YRpmGroupsTree * _rpmGroupsTree; 00079 00080 public: 00081 00087 void getPackagesToInsDel( std::list<PMPackagePtr> & dellist_r, 00088 std::list<PMPackagePtr> & instlist_r, 00089 std::list<PMPackagePtr> & srclist_r ); 00090 00098 void doUpdate( PMUpdateStats & opt_stats_r ); 00099 00103 unsigned updateSize() const { return _update_items.size(); } 00104 00108 bool updateEmpty() const { return _update_items.empty(); } 00109 00113 PMSelectableVec::const_iterator updateBegin() const { return _update_items.begin(); } 00114 00118 PMSelectableVec::const_iterator updateEnd() const { return _update_items.end(); } 00119 00120 00124 YRpmGroupsTree * rpmGroupsTree() const { return _rpmGroupsTree; } 00125 00132 YStringTreeItem * addRpmGroup( const std::string & rpmGroup ) 00133 { return _rpmGroupsTree->addRpmGroup( rpmGroup ); } 00134 00138 std::string rpmGroup( const YStringTreeItem * node ) 00139 { return _rpmGroupsTree->rpmGroup( node ); } 00140 00144 std::string translatedRpmGroup( const YStringTreeItem * node ) 00145 { return _rpmGroupsTree->translatedRpmGroup( node ); } 00146 00147 00149 // Disk usage calcualtion 00151 private: 00152 00153 PkgDuMaster _du_master; 00154 00155 public: 00156 00157 typedef PkgDuMaster::MountPoint MountPoint; 00158 00162 void setMountPoints( const std::set<MountPoint> & mountpoints_r ) { 00163 _du_master.setMountPoints( mountpoints_r ); 00164 } 00165 00176 const PkgDuMaster & getDu(); 00177 00187 const PkgDuMaster & updateDu(); 00188 00189 00193 PkgDuMaster & countDuInstalled( PkgDuMaster & dudata ) const; 00194 00198 PkgDuMaster & countDuCandidates( PkgDuMaster & dudata ) const; 00199 00203 PkgDuMaster & countDuSelected( PkgDuMaster & dudata ) const; 00204 00205 }; 00206 00208 00209 #endif // PMPackageManager_h