source: observatorio/simulacion/SimEscenariosEconomicos/indicatorGenerator.H

simulacion
Last change on this file was ac8ea81, checked in by Alejandro <amujica@…>, 9 years ago

Agregado el paramatro de conexion a la base de datos a la documentacion

  • Property mode set to 100644
File size: 4.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  Autor:             Alejandro J. Mujica
25  Fecha de creación: 25/11/2013
26  Este archivo contiene las definiciones de las clases para la generación de
27  indicadores.
28*/
29
30# ifndef INDICATOR_GENERATOR_H
31# define INDICATOR_GENERATOR_H
32
33# include <productionNetwork.H>
34
35# include <ioManager.H>
36
37class IndicatorGenerator {
38
39public:
40    virtual std::string generate(Graph & g, const std::string & path,
41                                 const std::string & year) = 0;
42
43};
44
45class ProductionIndicatorGenerator : public IndicatorGenerator {
46
47    static const std::string PRODUCT_INPUT_FILE_NAME;
48
49    static const std::string PRODUCT_FILE_NAME;
50
51    struct WriteLevels {
52
53        std::string & levels;
54
55        WriteLevels(std::string & _levels) : levels(_levels) {
56            // Empty
57        }
58
59        void operator () (const long & level) {
60
61            std::stringstream str;
62
63            str << level << ", ";
64
65            levels.append(str.str());
66        }
67    };
68
69    /** Escribe una línea de información de un producto en un archivo.
70     *
71     * @param conn Conexión a la base de datos.
72     * @param node nodo que contiene la informac1ión del producto.
73     * @param file flujo de salida para el archivo.
74     * @param mapPlantLocation buffer con ubicaciones de plantas.
75     * @param mapPlantLocation buffer con ciiu de las empresas.
76     */
77     void writeProductLine(AutoConnection & conn,
78                           Graph::Node * node, std::ofstream & file,
79                           Map <long, PlantLocation> & mapPlantLocation,
80                           Map <std::string, std::string> &
81                           mapCompanyCiiu);
82
83    /** Escribe una línea de información de un insumo en un archivo.
84     *
85     * @param conn Conexión a la base de datos.
86     * @param arc arco del insumo.
87     * @param file flujo de salida para el archivo.
88     * @param mapPlantLocation buffer con ubicaciones de plantas.
89     * @param mapPlantLocation buffer con ciiu de las empresas.
90     */
91    void writeInputLine(AutoConnection & conn, Graph & graph,
92                        Graph::Arc * arc, std::ofstream & file,
93                        Map <long, PlantLocation> & mapPlantLocation,
94                        Map <std::string, std::string> &
95                        mapCompanyCiiu, const std::string & year);
96
97    /** Escribe un insumo vacío para productos que no tengan insumos.
98     *
99     * @param file flujo de salida para el archivo.
100     */
101    void writeEmptyInput(std::ofstream & file);
102
103
104    /** Genera un archivo .csv con los indicadores de un grafo.
105     *
106     * @param conn Conexión a la base de datos.
107     * @param graph grafo al que se le van a extraer los indicadores.
108     * @param path ruta en la cual se va a almacenar el archivo.
109     * @param fileName nombre del archivo sobre el cual se va a escribir.
110     */
111    bool writeProductInputsIndicators(AutoConnection & conn, Graph & graph,
112                                      const std::string & path,
113                                      const std::string & year);
114
115    void writeProductionInfo(AutoConnection & conn, Graph & graph,
116                             Graph::Node * node, const std::string & year,
117                             std::ofstream & file);
118
119    bool writeProductIndicators(AutoConnection & conn, Graph & graph,
120                                const std::string & path,
121                                const std::string & year);
122
123public:
124    std::string generate(Graph & g, const std::string & path,
125                         const std::string & year);
126
127};
128
129class CostIndicatorGenerator : public IndicatorGenerator {
130
131public:
132    std::string generate(Graph & g, const std::string & path,
133                         const std::string & year);
134
135};
136
137class IndicatorGeneratorFactory {
138
139    static std::unique_ptr <IndicatorGeneratorFactory> instance;
140
141    IndicatorGeneratorFactory();
142
143public:
144    static IndicatorGeneratorFactory & getInstance();
145
146    std::unique_ptr <IndicatorGenerator>
147    getIndicatorGenerator(const StudyType & type);
148};
149
150# endif // INDICATOR_GENERATOR_H
151
Note: See TracBrowser for help on using the repository browser.