5b9880c1d5c4c67baf575750bb9bca63e736d003
[platform/upstream/libzypp.git] / zypp / solver / detail / ProblemSolutionCombi.cc
1
2 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
3 /* ProblemSolution.cc
4  *
5  * Easy-to use interface to the ZYPP dependency resolver
6  *
7  * Copyright (C) 2000-2002 Ximian, Inc.
8  * Copyright (C) 2005 SUSE Linux Products GmbH
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License,
12  * version 2, as published by the Free Software Foundation.
13  *
14  * This program is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
22  * 02111-1307, USA.
23  */
24
25 #include <sstream>
26
27 #include "zypp/base/String.h"
28 #include "zypp/base/Gettext.h"
29
30 #include "zypp/solver/detail/ProblemSolutionCombi.h"
31
32 using namespace std;
33
34 /////////////////////////////////////////////////////////////////////////
35 namespace zypp
36 { ///////////////////////////////////////////////////////////////////////
37   ///////////////////////////////////////////////////////////////////////
38   namespace solver
39   { /////////////////////////////////////////////////////////////////////
40     /////////////////////////////////////////////////////////////////////
41     namespace detail
42     { ///////////////////////////////////////////////////////////////////
43
44 IMPL_PTR_TYPE(ProblemSolutionCombi);
45
46 //---------------------------------------------------------------------------
47
48 ProblemSolutionCombi::ProblemSolutionCombi( ResolverProblem_Ptr parent)
49     : ProblemSolution (parent, "", "")
50       , actNumber(0)
51 {
52     _description = "";
53     _details = "";
54 }
55
56 void ProblemSolutionCombi::addSingleAction( Capability capability, const TransactionKind action)
57 {
58     addAction (new TransactionSolutionAction(capability, action));
59     actNumber++;
60 }
61
62 void ProblemSolutionCombi::addSingleAction( PoolItem item, const TransactionKind action)
63 {
64     addAction (new TransactionSolutionAction(item, action));
65     actNumber++;
66 }
67
68 void ProblemSolutionCombi::addSingleAction( SolverQueueItem_Ptr item, const TransactionKind action)
69 {
70     addAction (new TransactionSolutionAction(item, action));
71     actNumber++;
72 }
73
74 void ProblemSolutionCombi::addDescription( const std::string description)
75 {
76     if ( _description.size() == 0
77          && _details.size() == 0) {
78          // first entry
79         _description = description;
80     } else {
81         if ( _description.size() > 0
82              && _details.size() == 0) {
83             // second entry
84             _details = _description;
85             _description = _("Following actions will be done:");
86         }
87         // all other
88         _details += "\n";
89         _details += description;
90     }
91 }
92
93 void ProblemSolutionCombi::addFrontDescription( const std::string & description )
94 {
95     if ( _description.size() == 0
96          && _details.size() == 0) {
97          // first entry
98         _description = description;
99     } else {
100         if ( _description.size() > 0
101              && _details.size() == 0) {
102             // second entry
103             _details = _description;
104             _description = _("Following actions will be done:");
105         }
106         // all other
107         std::string tmp( _details );
108         _details = description;
109         _details += "\n";
110         _details += tmp;
111     }
112 }
113
114       ///////////////////////////////////////////////////////////////////
115     };// namespace detail
116     /////////////////////////////////////////////////////////////////////
117     /////////////////////////////////////////////////////////////////////
118   };// namespace solver
119   ///////////////////////////////////////////////////////////////////////
120   ///////////////////////////////////////////////////////////////////////
121 };// namespace zypp
122 /////////////////////////////////////////////////////////////////////////