HSAdmin Backend Domains, E-Mail, Datenbanken
Purodha
2013-02-20 4a7e12928010374d76e677c8ec3ea4f5e63e9487
commit | author | age
c64ab5 1 /***************************************************************************
CD 2  *   Copyright (C) 2005 by Christof Donat   *
3  *   cdonat@gmx.de   *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; either version 2 of the License, or     *
8  *   (at your option) any later version.                                   *
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU General Public License     *
16  *   along with this program; if not, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19  ***************************************************************************/
20
21 #include "cmdlineparser.h"
22 #include "xmlparser.h"
23
24 #include <boost/shared_ptr.hpp>
25 #include <stack>
26 #include <map>
27 #include <vector>
28 #include <string>
29
30 #ifndef HSADMIN_TRANSACTION
31 #define HSADMIN_TRANSACTION
32
33 using boost::shared_ptr;
34 using std::stack;
35 using std::map;
36 using std::vector;
37 using std::string;
38
39 //! encapsulates a transaction.
40 class Transaction:
41         public abstractcommandlineparser::CmdLineParser<commandline::Parameters,commandline::parsedParameters>, 
42         public xmlParser::responseParserHook {
43     public:
44     //! parses all the commandline-Parameters
45     Transaction(vector<string> options);
46
47     string& getUser() { return m_parsed->m_user; };    
48     //! actually execute the transaction - just needs the config and does everything else for you
49     void operator()(shared_ptr<ConfigFileParser> cfgfile);
50
51     //! callback for XML-Parser
52     virtual bool operator()(int type, string content);
53
54     //! returns the parsed parameters
55     shared_ptr<commandline::parsedParameters> getParsed() { return m_parsed; };
56
57     private:
58     bool m_globalFault;
59     int m_currentCall;
60     stack<xmlParser::Element> m_tagstack;
61     string m_nextAttributeValue;
62     map<string,string> m_nextAttributeList;
63
64     void handleElem(xmlParser::Element * elem);
65     void handleGlobalFaultElem(xmlParser::Element * elem);
66
67     string replaceEntities(const string &input);
68     string getContent(xmlParser::Element* value);
69     xmlParser::Element* stepin(int count,xmlParser::Element* value);
70
71     public:
72     xmlParser::Element *m_docelem;
73 };
74
75 #else
76 class Transaction;
77 #endif /* HSADMIN_TRANSACTION */