source: observatorio/simulacion/SimEscenariosEconomicos-Qtgui/configuration.C

simulacion
Last change on this file was 6c79fb4, checked in by Alejandro <amujica@…>, 10 years ago

Muestra el indice de dependencia de productos importados en el modulo de precios

  • Property mode set to 100644
File size: 8.3 KB
Line 
1/*
2  Copyright (C) 2012
3  Alejandro Mujica (amujica@cenditel.gob.ve)
4  Erwin Paredes (eparedes@cenditel.gob.ve)
5  José Ruiz (jruiz@cenditel.gob.ve)
6  Rodolfo Rangel (rrangel@cenditel.gob.ve)
7  Julie Vera (jvera@cenditel.gob.ve)
8
9  CENDITEL Fundación Centro Nacional de Desarrollo e Investigación en
10  Tecnologías Libres
11
12  Este programa es software libre; Usted puede usarlo bajo los términos de la
13  licencia de software GPL versión 2.0 de la Free Software Foundation.
14
15  Este programa se distribuye con la esperanza de que sea útil, pero SIN
16  NINGUNA GARANTÍA; tampoco las implícitas garantías de MERCANTILIDAD o
17  ADECUACIÓN A UN PROPÓSITO PARTICULAR.
18  Consulte la licencia GPL para más detalles. Usted debe recibir una copia
19  de la GPL junto con este programa; si no, escriba a la Free Software
20  Foundation Inc. 51 Franklin Street,5 Piso, Boston, MA 02110-1301, USA.
21*/
22
23/*
24  Este archivo contiene la implementación de la clase Configuration.
25
26  Autor: Alejandro J. Mujica
27  Fecha:
28*/
29
30# include <configuration.H>
31# include <fstream>
32
33# ifdef QT_DEBUG
34
35const std::string Configuration::APPLICATION_PATH =
36    "../SimEscenariosEconomicos/";
37
38const std::string Configuration::HELP =
39    "Manual-Usuario/Introduccion.html";
40
41# else
42
43const std::string Configuration::APPLICATION_PATH = "/usr/bin/";
44
45const std::string Configuration::HELP =
46    "/usr/share/doc/ecosim/manual/Introduccion.html";
47
48#endif
49
50
51const std::string Configuration::APPLICATION_NAME = "ecosim";
52
53const std::string Configuration::DIR_NAME =
54        "." + Configuration::APPLICATION_NAME;
55
56const std::string Configuration::XML_DIR_NAME =
57        Configuration::DIR_NAME + "/xml";
58
59const std::string Configuration::DOT_DIR_NAME =
60        Configuration::DIR_NAME + "/dot";
61
62const std::string Configuration::SVG_DIR_NAME =
63        Configuration::DIR_NAME + "/svg";
64
65const std::string Configuration::CONFIGURATION_FILE_NAME = "conf";
66
67const std::string Configuration::ROOTS_FILE_NAME = "roots";
68
69const std::string Configuration::GRAPH_FILE_NAME = "graph";
70
71const std::string Configuration::SIMULATION_FILE_NAME = "simulation";
72
73const std::string Configuration::ALTER_GRAPH_FILE_NAME = "alter";
74
75const std::string Configuration::GRAPH_BUILDER_COMMAND =
76        APPLICATION_PATH + APPLICATION_NAME + "_graph_builder";
77
78const std::string Configuration::SIMULATION_COMMAND =
79        APPLICATION_PATH + APPLICATION_NAME + "_simulator";
80
81const std::string Configuration::DB_FILE_NAME = "dbserver";
82
83const std::string Configuration::DFT_HOST = "localhost";
84
85const std::string Configuration::DFT_PORT = "5432";
86
87const std::string Configuration::DFT_DATA_BASE = "ecosim_datos_prueba";
88
89const std::string Configuration::DFT_USER = "ecosim";
90
91const std::string Configuration::DFT_PASSWORD = "ecosim";
92
93
94std::unique_ptr <Configuration> Configuration::instance;
95
96Configuration::Configuration() {
97
98    QDir dir(QDir::home());
99
100    if (not dir.exists(DIR_NAME.c_str())) {
101
102        dir.mkdir(DIR_NAME.c_str());
103        dir.mkdir(XML_DIR_NAME.c_str());
104        dir.mkdir(DOT_DIR_NAME.c_str());
105        dir.mkdir(SVG_DIR_NAME.c_str());
106    }
107
108    configurationFileName = QDir::homePath().toStdString() + "/" + DIR_NAME +
109            "/" + CONFIGURATION_FILE_NAME;
110
111    readFile();
112}
113
114void Configuration::readFile() {
115
116    std::ifstream file;
117
118    file.open(configurationFileName.c_str(), std::ios::binary);
119
120    if (not file)  {
121        restoreDefaultValues();
122        return;
123    }
124
125    size_t size;
126
127    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
128    char host[size];
129    file.read(host, size);
130    this->host = host;
131
132    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
133    char port[size];
134    file.read(port, size);
135    this->port = port;
136
137    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
138    char dataBase[size];
139    file.read(dataBase, size);
140    this->dataBase = dataBase;
141
142    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
143    char user[size];
144    file.read(user, size);
145    this->user = user;
146
147    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
148    char password[size];
149    file.read(password, size);
150    this->password = password;
151
152    file.close();
153}
154
155void Configuration::writeFile() {
156
157    std::ofstream file;
158
159    file.open(configurationFileName.c_str(), std::ios::binary);
160
161    size_t size;
162
163    size = host.size() + 1;
164    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
165    file.write(host.c_str(), size);
166
167    size = port.size() + 1;
168    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
169    file.write(port.c_str(), size);
170
171    size = dataBase.size() + 1;
172    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
173    file.write(dataBase.c_str(), size);
174
175    size = user.size() + 1;
176    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
177    file.write(user.c_str(), size);
178
179    size = password.size() + 1;
180    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
181    file.write(password.c_str(), size);
182
183    file.close();
184}
185
186Configuration & Configuration::getInstance() {
187
188    if (instance.get() == NULL)
189        instance = std::unique_ptr <Configuration> (new Configuration);
190
191    return *instance;
192}
193
194void Configuration::setValuesDefault() {
195    writeFile();
196}
197
198const std::string & Configuration::getHost() const {
199    return host;
200}
201
202void Configuration::setHost(const std::string & host) {
203    this->host = host;
204}
205
206void Configuration::setHost(std::string && host) {
207    this->host = std::move(host);
208}
209
210const std::string &Configuration::getPort() const {
211    return port;
212}
213
214void Configuration::setPort(const std::string & port) {
215    this->port = port;
216}
217
218void Configuration::setPort(std::string && port) {
219    this->port = std::move(port);
220}
221
222const std::string & Configuration::getDataBase() const {
223    return dataBase;
224}
225
226void Configuration::setDataBase(std::string && dataBase) {
227    this->dataBase = std::move(dataBase);
228}
229
230void Configuration::setDataBase(const std::string & dataBase) {
231    this->dataBase = dataBase;
232}
233
234const std::string & Configuration::getUser() const {
235    return user;
236}
237
238void Configuration::setUser(const std::string & user) {
239    this->user = user;
240}
241
242void Configuration::setUser(std::string && user) {
243    this->user = std::move(user);
244}
245
246const std::string & Configuration::getPassword() const {
247    return password;
248}
249
250void Configuration::setPassword(const std::string & password) {
251    this->password = password;
252}
253
254void Configuration::setPassword(std::string && password) {
255    this->password = std::move(password);
256}
257
258const std::string & Configuration::getHelpName() const {
259    return HELP;
260}
261
262const std::string & Configuration::getApplicationName() const {
263    return APPLICATION_NAME;
264}
265
266const std::string & Configuration::getConfigurationFileName() const {
267    return configurationFileName;
268}
269
270const std::string & Configuration::getRootsFileName() const {
271    return ROOTS_FILE_NAME;
272}
273
274const std::string & Configuration::getGraphFileName() const {
275    return GRAPH_FILE_NAME;
276}
277
278const std::string & Configuration::getSimulationFileName() const {
279    return SIMULATION_FILE_NAME;
280}
281
282const std::string & Configuration::getAlterFileName() const {
283    return ALTER_GRAPH_FILE_NAME;
284}
285
286const std::string &Configuration::getGraphBuilderCommand() const {
287    return GRAPH_BUILDER_COMMAND;
288}
289
290const std::string & Configuration::getSimulationCommand() const {
291    return SIMULATION_COMMAND;
292}
293
294const std::string & Configuration::getDirName() const {
295    return DIR_NAME;
296}
297
298const std::string & Configuration::getXmlDirName() const {
299    return XML_DIR_NAME;
300}
301
302const std::string & Configuration::getDotDirName() const {
303    return DOT_DIR_NAME;
304}
305
306const std::string & Configuration::getSvgDirName() const {
307    return SVG_DIR_NAME;
308}
309
310const std::string Configuration::getDbFileName() const {
311    return QDir::homePath().toStdString()  + "/"
312            + DIR_NAME + "/" + DB_FILE_NAME;
313}
314
315void Configuration::createDbFile() {
316
317    std::string fileName = getDbFileName();
318
319    std::ofstream file(fileName.c_str());
320
321    file << host << std::endl;
322    file << port << std::endl;
323    file << dataBase << std::endl;
324    file << user << std::endl;
325    file << password;
326
327    file.close();
328}
329
330void Configuration::removeDbFile() {
331    QDir().remove(getDbFileName().c_str());
332}
333
334void Configuration::restoreDefaultValues() {
335
336    host = DFT_HOST;
337    port = DFT_PORT;
338    dataBase = DFT_DATA_BASE;
339    user = DFT_USER;
340    password = DFT_PASSWORD;
341
342    writeFile();
343}
Note: See TracBrowser for help on using the repository browser.