Imported Upstream version 15.18.0
[platform/upstream/libzypp.git] / zypp / ZYppCommitResult.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/ZYppCommitResult.cc
10  *
11 */
12
13 #include <iostream>
14 #include "zypp/base/LogTools.h"
15
16 #include "zypp/ZYppCommitResult.h"
17
18 ///////////////////////////////////////////////////////////////////
19 namespace zypp
20 { /////////////////////////////////////////////////////////////////
21
22   ///////////////////////////////////////////////////////////////////
23   //
24   //    CLASS NAME : ZYppCommitResult::Impl
25   //
26   ///////////////////////////////////////////////////////////////////
27
28   class ZYppCommitResult::Impl
29   {
30     public:
31       Impl()
32       {}
33
34     public:
35       Pathname                  _root;
36       FalseBool                 _attemptToModify;
37       sat::Transaction          _transaction;
38       TransactionStepList       _transactionStepList;
39       UpdateNotifications       _updateMessages;
40
41     private:
42       friend Impl * rwcowClone<Impl>( const Impl * rhs );
43       /** clone for RWCOW_pointer */
44       Impl * clone() const { return new Impl( *this ); }
45   };
46
47   ///////////////////////////////////////////////////////////////////
48   //
49   //    CLASS NAME : ZYppCommitResult
50   //
51   ///////////////////////////////////////////////////////////////////
52
53   ZYppCommitResult::ZYppCommitResult()
54   : _pimpl( new Impl )
55   {}
56
57   ZYppCommitResult::ZYppCommitResult( const ZYppCommitResult & lhs_r )
58   : _pimpl( lhs_r._pimpl )
59   {}
60
61   ZYppCommitResult::ZYppCommitResult( const Pathname & root_r )
62   : _pimpl( new Impl )
63   { _pimpl->_root = root_r; }
64
65   ZYppCommitResult::~ZYppCommitResult()
66   {}
67
68   const Pathname & ZYppCommitResult::root() const
69   { return _pimpl->_root; }
70
71   bool ZYppCommitResult::attemptToModify() const
72   { return _pimpl->_attemptToModify; }
73
74   void ZYppCommitResult::attemptToModify( bool yesno_r )
75   { _pimpl->_attemptToModify = yesno_r; }
76
77   const sat::Transaction & ZYppCommitResult::transaction() const
78   { return _pimpl->_transaction; }
79
80   sat::Transaction & ZYppCommitResult::rTransaction()
81   { return _pimpl->_transaction; }
82
83   const ZYppCommitResult::TransactionStepList & ZYppCommitResult::transactionStepList() const
84   { return _pimpl->_transactionStepList; }
85
86   ZYppCommitResult::TransactionStepList & ZYppCommitResult::rTransactionStepList()
87   { return _pimpl->_transactionStepList; }
88
89   const UpdateNotifications & ZYppCommitResult::updateMessages() const
90   { return _pimpl->_updateMessages; }
91
92   UpdateNotifications & ZYppCommitResult::rUpdateMessages()
93   { return _pimpl->_updateMessages; }
94
95   ///////////////////////////////////////////////////////////////////
96
97   std::ostream & operator<<( std::ostream & str, const ZYppCommitResult & obj )
98   {
99     DefaultIntegral<unsigned,0> result[4];
100     for_( it, obj.transaction().actionBegin(), obj.transaction().actionEnd() )
101     {
102       ++result[0];
103       switch ( it->stepStage() )
104       {
105         case sat::Transaction::STEP_DONE :      ++result[1]; break;
106         case sat::Transaction::STEP_ERROR :     ++result[2]; break;
107         case sat::Transaction::STEP_TODO :      ++result[3]; break;
108       }
109     }
110     str << "CommitResult "
111         << " (total " << result[0]
112         << ", done " << result[1]
113         << ", error " << result[2]
114         << ", skipped " << result[3]
115         << ", updateMessages " << obj.updateMessages().size()
116         << ")";
117     return str;
118   }
119
120   /////////////////////////////////////////////////////////////////
121 } // namespace zypp
122 ///////////////////////////////////////////////////////////////////