Imported Upstream version 15.0.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       sat::Transaction          _transaction;
37       TransactionStepList       _transactionStepList;
38       UpdateNotifications       _updateMessages;
39
40     private:
41       friend Impl * rwcowClone<Impl>( const Impl * rhs );
42       /** clone for RWCOW_pointer */
43       Impl * clone() const { return new Impl( *this ); }
44   };
45
46   ///////////////////////////////////////////////////////////////////
47   //
48   //    CLASS NAME : ZYppCommitResult
49   //
50   ///////////////////////////////////////////////////////////////////
51
52   ZYppCommitResult::ZYppCommitResult()
53   : _pimpl( new Impl )
54   {}
55
56   ZYppCommitResult::ZYppCommitResult( const ZYppCommitResult & lhs_r )
57   : _pimpl( lhs_r._pimpl )
58   {}
59
60   ZYppCommitResult::ZYppCommitResult( const Pathname & root_r )
61   : _pimpl( new Impl )
62   { _pimpl->_root = root_r; }
63
64   ZYppCommitResult::~ZYppCommitResult()
65   {}
66
67   const Pathname & ZYppCommitResult::root() const
68   { return _pimpl->_root; }
69
70   const sat::Transaction & ZYppCommitResult::transaction() const
71   { return _pimpl->_transaction; }
72
73   sat::Transaction & ZYppCommitResult::rTransaction()
74   { return _pimpl->_transaction; }
75
76   const ZYppCommitResult::TransactionStepList & ZYppCommitResult::transactionStepList() const
77   { return _pimpl->_transactionStepList; }
78
79   ZYppCommitResult::TransactionStepList & ZYppCommitResult::rTransactionStepList()
80   { return _pimpl->_transactionStepList; }
81
82   const UpdateNotifications & ZYppCommitResult::updateMessages() const
83   { return _pimpl->_updateMessages; }
84
85   UpdateNotifications & ZYppCommitResult::rUpdateMessages()
86   { return _pimpl->_updateMessages; }
87
88   ///////////////////////////////////////////////////////////////////
89
90   std::ostream & operator<<( std::ostream & str, const ZYppCommitResult & obj )
91   {
92     DefaultIntegral<unsigned,0> result[4];
93     for_( it, obj.transaction().actionBegin(), obj.transaction().actionEnd() )
94     {
95       ++result[0];
96       switch ( it->stepStage() )
97       {
98         case sat::Transaction::STEP_DONE :      ++result[1]; break;
99         case sat::Transaction::STEP_ERROR :     ++result[2]; break;
100         case sat::Transaction::STEP_TODO :      ++result[3]; break;
101       }
102     }
103     str << "CommitResult "
104         << " (total " << result[0]
105         << ", done " << result[1]
106         << ", error " << result[2]
107         << ", skipped " << result[3]
108         << ", updateMessages " << obj.updateMessages().size()
109         << ")";
110     return str;
111   }
112
113   /////////////////////////////////////////////////////////////////
114 } // namespace zypp
115 ///////////////////////////////////////////////////////////////////