]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/configuration/sgconfig/parser_tariffs.h
Added parser factories.
[stg.git] / projects / stargazer / plugins / configuration / sgconfig / parser_tariffs.h
1 /*
2  *    This program is free software; you can redistribute it and/or modify
3  *    it under the terms of the GNU General Public License as published by
4  *    the Free Software Foundation; either version 2 of the License, or
5  *    (at your option) any later version.
6  *
7  *    This program is distributed in the hope that it will be useful,
8  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
9  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  *    GNU General Public License for more details.
11  *
12  *    You should have received a copy of the GNU General Public License
13  *    along with this program; if not, write to the Free Software
14  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15  */
16
17 /*
18  *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
19  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
20  */
21
22 #ifndef __STG_SGCONFIG_PARSER_TARIFFS_H__
23 #define __STG_SGCONFIG_PARSER_TARIFFS_H__
24
25 #include "parser.h"
26
27 #include "stg/tariff_conf.h"
28
29 #include <string>
30
31 class TARIFFS;
32 class USERS;
33 class ADMIN;
34
35 namespace STG
36 {
37 namespace PARSER
38 {
39
40 class GET_TARIFFS: public BASE_PARSER
41 {
42     public:
43         class FACTORY : public BASE_PARSER::FACTORY
44         {
45             public:
46                 FACTORY(const ADMIN & admin, const TARIFFS & tariffs)
47                     : m_admin(admin), m_tariffs(tariffs)
48                 {}
49                 virtual BASE_PARSER * create() { return new GET_TARIFFS(m_admin, m_tariffs); }
50             private:
51                 const ADMIN & m_admin;
52                 const TARIFFS & m_tariffs;
53         };
54
55         GET_TARIFFS(const ADMIN & admin, const TARIFFS & tariffs)
56             : BASE_PARSER(admin, "GetTariffs"), m_tariffs(tariffs) {}
57
58     private:
59         const TARIFFS & m_tariffs;
60
61         void CreateAnswer();
62 };
63
64 class ADD_TARIFF: public BASE_PARSER
65 {
66     public:
67         class FACTORY : public BASE_PARSER::FACTORY
68         {
69             public:
70                 FACTORY(const ADMIN & admin, TARIFFS & tariffs)
71                     : m_admin(admin), m_tariffs(tariffs)
72                 {}
73                 virtual BASE_PARSER * create() { return new ADD_TARIFF(m_admin, m_tariffs); }
74             private:
75                 const ADMIN & m_admin;
76                 TARIFFS & m_tariffs;
77         };
78
79         ADD_TARIFF(const ADMIN & admin, TARIFFS & tariffs)
80             : BASE_PARSER(admin, "AddTariff"), m_tariffs(tariffs) {}
81         int Start(void * data, const char * el, const char ** attr);
82
83     private:
84         std::string tariff;
85         TARIFFS & m_tariffs;
86
87         void CreateAnswer();
88 };
89
90 class DEL_TARIFF: public BASE_PARSER
91 {
92     public:
93         class FACTORY : public BASE_PARSER::FACTORY
94         {
95             public:
96                 FACTORY(const ADMIN & admin, TARIFFS & tariffs, const USERS & users)
97                     : m_admin(admin), m_tariffs(tariffs), m_users(users)
98                 {}
99                 virtual BASE_PARSER * create() { return new DEL_TARIFF(m_admin, m_users, m_tariffs); }
100             private:
101                 const ADMIN & m_admin;
102                 TARIFFS & m_tariffs;
103                 const USERS & m_users;
104         };
105
106         DEL_TARIFF(const ADMIN & admin, const USERS & users, TARIFFS & tariffs)
107             : BASE_PARSER(admin, "DelTariff"), m_users(users), m_tariffs(tariffs) {}
108         int Start(void * data, const char * el, const char ** attr);
109
110     private:
111         std::string tariff;
112         const USERS & m_users;
113         TARIFFS & m_tariffs;
114
115         void CreateAnswer();
116 };
117
118 class CHG_TARIFF: public BASE_PARSER
119 {
120     public:
121         class FACTORY : public BASE_PARSER::FACTORY
122         {
123             public:
124                 FACTORY(const ADMIN & admin, TARIFFS & tariffs)
125                     : m_admin(admin), m_tariffs(tariffs)
126                 {}
127                 virtual BASE_PARSER * create() { return new CHG_TARIFF(m_admin, m_tariffs); }
128             private:
129                 const ADMIN & m_admin;
130                 TARIFFS & m_tariffs;
131         };
132
133         CHG_TARIFF(const ADMIN & admin, TARIFFS & tariffs)
134             : BASE_PARSER(admin, "SetTariff"), m_tariffs(tariffs) {}
135         int Start(void * data, const char * el, const char ** attr);
136
137     private:
138         TARIFF_DATA_RES td;
139         TARIFFS & m_tariffs;
140
141         int CheckTariffData();
142         void CreateAnswer();
143 };
144
145 } // namespace PARSER
146 } // namespace STG
147
148 #endif