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

simulacion
Last change on this file since e98f4d1 was 5a9b82a, checked in by Alejandro <amujica@…>, 10 years ago

Recuperacion de las imagenes de flechas, cambio de titulo de la aplicacion a letras mayusculas, cambio de los nombres en tipo de estudio a efectuar

  • Property mode set to 100755
File size: 7.9 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
33const std::string Configuration::APPLICATION_PATH = "";
34
35const std::string Configuration::APPLICATION_NAME = "ecosim";
36
37const std::string Configuration::DIR_NAME =
38        "." + Configuration::APPLICATION_NAME;
39
40const std::string Configuration::XML_DIR_NAME =
41        Configuration::DIR_NAME + "/xml";
42
43const std::string Configuration::DOT_DIR_NAME =
44        Configuration::DIR_NAME + "/dot";
45
46const std::string Configuration::SVG_DIR_NAME =
47        Configuration::DIR_NAME + "/svg";
48
49const std::string Configuration::CONFIGURATION_FILE_NAME = "conf";
50
51const std::string Configuration::ROOTS_FILE_NAME = "roots";
52
53const std::string Configuration::GRAPH_FILE_NAME = "graph";
54
55const std::string Configuration::SIMULATION_FILE_NAME = "simulation";
56
57const std::string Configuration::ALTER_GRAPH_FILE_NAME = "alter";
58
59const std::string Configuration::GRAPH_BUILDER_COMMAND =
60        APPLICATION_PATH + APPLICATION_NAME + "_graph_builder";
61
62const std::string Configuration::SIMULATION_COMMAND =
63        APPLICATION_PATH + APPLICATION_NAME + "_simulator";
64
65const std::string Configuration::DB_FILE_NAME = "dbserver";
66
67const std::string Configuration::DFT_HOST = "localhost";
68
69const std::string Configuration::DFT_PORT = "5432";
70
71const std::string Configuration::DFT_DATA_BASE = "ecosim_datos_prueba";
72
73const std::string Configuration::DFT_USER = "ecosim";
74
75const std::string Configuration::DFT_PASSWORD = "ecosim";
76
77
78std::unique_ptr <Configuration> Configuration::instance;
79
80Configuration::Configuration() {
81
82    QDir dir(QDir::home());
83
84    if (not dir.exists(DIR_NAME.c_str())) {
85
86        dir.mkdir(DIR_NAME.c_str());
87        dir.mkdir(XML_DIR_NAME.c_str());
88        dir.mkdir(DOT_DIR_NAME.c_str());
89        dir.mkdir(SVG_DIR_NAME.c_str());
90    }
91
92    configurationFileName = QDir::homePath().toStdString() + "/" + DIR_NAME +
93            "/" + CONFIGURATION_FILE_NAME;
94
95    readFile();
96}
97
98void Configuration::readFile() {
99
100    std::ifstream file;
101
102    file.open(configurationFileName.c_str(), std::ios::binary);
103
104    if (not file)  {
105        restoreDefaultValues();
106        return;
107    }
108
109    size_t size;
110
111    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
112    char host[size];
113    file.read(host, size);
114    this->host = host;
115
116    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
117    char port[size];
118    file.read(port, size);
119    this->port = port;
120
121    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
122    char dataBase[size];
123    file.read(dataBase, size);
124    this->dataBase = dataBase;
125
126    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
127    char user[size];
128    file.read(user, size);
129    this->user = user;
130
131    file.read(reinterpret_cast <char *>(&size), sizeof(size_t));
132    char password[size];
133    file.read(password, size);
134    this->password = password;
135
136    file.close();
137}
138
139void Configuration::writeFile() {
140
141    std::ofstream file;
142
143    file.open(configurationFileName.c_str(), std::ios::binary);
144
145    size_t size;
146
147    size = host.size() + 1;
148    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
149    file.write(host.c_str(), size);
150
151    size = port.size() + 1;
152    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
153    file.write(port.c_str(), size);
154
155    size = dataBase.size() + 1;
156    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
157    file.write(dataBase.c_str(), size);
158
159    size = user.size() + 1;
160    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
161    file.write(user.c_str(), size);
162
163    size = password.size() + 1;
164    file.write(reinterpret_cast <char *>(&size), sizeof(size_t));
165    file.write(password.c_str(), size);
166
167    file.close();
168}
169
170Configuration & Configuration::getInstance() {
171
172    if (instance.get() == NULL)
173        instance = std::unique_ptr <Configuration> (new Configuration);
174
175    return *instance;
176}
177
178void Configuration::setValuesDefault() {
179    writeFile();
180}
181
182const std::string & Configuration::getHost() const {
183    return host;
184}
185
186void Configuration::setHost(const std::string & host) {
187    this->host = host;
188}
189
190void Configuration::setHost(std::string && host) {
191    this->host = std::move(host);
192}
193
194const std::string &Configuration::getPort() const {
195    return port;
196}
197
198void Configuration::setPort(const std::string & port) {
199    this->port = port;
200}
201
202void Configuration::setPort(std::string && port) {
203    this->port = std::move(port);
204}
205
206const std::string & Configuration::getDataBase() const {
207    return dataBase;
208}
209
210void Configuration::setDataBase(std::string && dataBase) {
211    this->dataBase = std::move(dataBase);
212}
213
214void Configuration::setDataBase(const std::string & dataBase) {
215    this->dataBase = dataBase;
216}
217
218const std::string & Configuration::getUser() const {
219    return user;
220}
221
222void Configuration::setUser(const std::string & user) {
223    this->user = user;
224}
225
226void Configuration::setUser(std::string && user) {
227    this->user = std::move(user);
228}
229
230const std::string & Configuration::getPassword() const {
231    return password;
232}
233
234void Configuration::setPassword(const std::string & password) {
235    this->password = password;
236}
237
238void Configuration::setPassword(std::string && password) {
239    this->password = std::move(password);
240}
241
242const std::string & Configuration::getApplicationName() const {
243    return APPLICATION_NAME;
244}
245
246const std::string & Configuration::getConfigurationFileName() const {
247    return configurationFileName;
248}
249
250const std::string & Configuration::getRootsFileName() const {
251    return ROOTS_FILE_NAME;
252}
253
254const std::string & Configuration::getGraphFileName() const {
255    return GRAPH_FILE_NAME;
256}
257
258const std::string & Configuration::getSimulationFileName() const {
259    return SIMULATION_FILE_NAME;
260}
261
262const std::string & Configuration::getAlterFileName() const {
263    return ALTER_GRAPH_FILE_NAME;
264}
265
266const std::string &Configuration::getGraphBuilderCommand() const {
267    return GRAPH_BUILDER_COMMAND;
268}
269
270const std::string & Configuration::getSimulationCommand() const {
271    return SIMULATION_COMMAND;
272}
273
274const std::string & Configuration::getDirName() const {
275    return DIR_NAME;
276}
277
278const std::string & Configuration::getXmlDirName() const {
279    return XML_DIR_NAME;
280}
281
282const std::string & Configuration::getDotDirName() const {
283    return DOT_DIR_NAME;
284}
285
286const std::string & Configuration::getSvgDirName() const {
287    return SVG_DIR_NAME;
288}
289
290const std::string Configuration::getDbFileName() const {
291    return QDir::homePath().toStdString()  + "/"
292            + DIR_NAME + "/" + DB_FILE_NAME;
293}
294
295void Configuration::createDbFile() {
296
297    std::string fileName = getDbFileName();
298
299    std::ofstream file(fileName.c_str());
300
301    file << host << std::endl;
302    file << port << std::endl;
303    file << dataBase << std::endl;
304    file << user << std::endl;
305    file << password;
306
307    file.close();
308}
309
310void Configuration::removeDbFile() {
311    QDir().remove(getDbFileName().c_str());
312}
313
314void Configuration::restoreDefaultValues() {
315
316    host = DFT_HOST;
317    port = DFT_PORT;
318    dataBase = DFT_DATA_BASE;
319    user = DFT_USER;
320    password = DFT_PASSWORD;
321
322    writeFile();
323}
Note: See TracBrowser for help on using the repository browser.