source: observatorio/simulacion/SimEscenariosEconomicos/queries.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: 13.4 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: 01/08/2013
26  Este archivo contiene la definición de un conjunto de consultas a base de
27  datos utilizadas a lo largo del proyecto.
28*/
29
30# ifndef QUERIES_H
31# define QUERIES_H
32
33# include <common.H>
34# include <autoConnection.H>
35
36/** Encierra una cadena entre comillas simples.
37 *
38 * Utilizada para los campos de tipo cadena que se almacenan en base de datos.
39 *
40 * @param str cadena que se va a encerrar entre comillas simples.
41 * @return cadena encerrada entre comillas simples.
42 */
43std::string singleQuote(const std::string & str);
44
45/** Encierra una cadena entre comillas dobles.
46 *
47 * @param str cadena que se va a encerrar entre comillas simples.
48 * @return cadena encerrada entre comillas simples.
49 */
50std::string doubleQuote(const std::string & str);
51
52/** Concatena dos cadenas mediante un conector.
53 *
54 * Últil para concatenar nombres de tablas con nombres de campos.
55 * Ej: estudiante.id.
56 * 
57 * @param table nombre de la tabla.
58 * @param field nombre del campo.
59 * @param connector caracter que conectará a las dos cadenas.
60 * @return cadena concatenada.
61 */
62std::string concat(const std::string & table, const std::string & field,
63                   const char & connector = '.');
64
65/** Concatena "campo AS alias"
66 *
67 * @param field nombre del campo de la tabla.
68 * @param alias alias que se le asignará al campo.
69 * @return cadena concatenada.
70 */
71std::string as(const std::string & field, const std::string & alias);
72
73/** Concatena "tabla.campo AS alias"
74 *
75 * @param table nombre de la tabla.
76 * @param field nombre del campo de la tabla.
77 * @param alias alias que se le asignará al campo.
78 * @return cadena concatenada.
79 */
80std::string concatas(const std::string & table, const std::string & field,
81                     const std::string & alias);
82
83/** Concatena tabla y campo de la forma tabla.campo AS tabla_campo
84 *
85 * @param table nombre de la tabla.
86 * @param field nombre del campo de la tabla.
87 * @return cadena concatenada.
88 */
89std::string concatas(const std::string &, const std::string &);
90
91/** Concatena una operación de comparación para base de datos.
92 *
93 * @param field nombre del campo.
94 * @param value valor con el cual se va a comparar el campo.
95 * @param oper operador de comparación (=, <, <=, >, >= <>)
96 */
97std::string op(const std::string & field, const std::string & value,
98               const std::string & oper = "=");
99
100/** Convierte un campo id (de tipo long) en cadena.
101 *
102 * @param id valor numérico del id.
103 * @return valor del id convertido en cadena.
104 */
105std::string idToStr(const size_t & id);
106
107
108/** Concatena la operación field BETWEEN beg AND end (para fechas).
109 *
110 * @param field nombre del campo a evaluar.
111 * @param beg valor mínimo de comparación.
112 * @param end valor máximo de comparación.
113 * @return cadena concatenada.
114 */
115std::string between(const std::string & field, const std::string & beg,
116                    const std::string & end);
117
118/** Dados un campo y un año (en cadena), efectúa la operación between entre
119 *  el primer y el último día del año.
120 *
121 * @param field nombre del campo que se va a comparar.
122 * @param year valor del año.
123 * @return cadena concatenada.
124 */
125std::string inYear(const std::string & field, const std::string & year);
126
127/** Extrae de la base de datos toda la información de un producto con id dado.
128 *
129 * @param conn Conexión a la base de datos.
130 * @param id id del producto que se quiere consultar.
131 * @return Objeto ProductInfo con toda la información del producto consultado.
132 */
133ProductInfo loadInfoByProductId(AutoConnection & conn, const size_t & id);
134
135/** Carga la lista de id de los insumos para un producto dado.
136 *
137 * @param conn Conexión a la base de datos.
138 * @param[in] productId id del producto.
139 * @param[in] year año de declaración de la matriz.
140 * @param[out] inputIds Lista de enteros en la cual se van a escribir los ids
141 *             de los insumos.
142 */
143void listInputIds(AutoConnection & conn, const size_t & productId,
144                  const std::string & year, List <size_t> & inputIds);
145
146/** Carga a todos los proveedores de un insumo dado.
147 *
148 * @param conn Conexión a la base de datos.
149 * @param[in] inputId id del insumo.
150 * @param[in] year año de la venta del insumo.
151 * @param[out] Lista de proveedores del insumo.
152 */
153void listInputs(AutoConnection & conn, const size_t & inputId,
154                const std::string & year, List <InputInfo> & inputs);
155
156
157/** Dado un proveedor, obtiene todos los posibles productos asociados a ese
158 *  proveedor que coincidan con el mismo código arancelario.
159 *
160 * @param conn Conexión a la base de datos.
161 * @param[in] inputInfo información del insumo.
162 * @param[out] Lista de productos asociados al insumo.
163 */
164void productInfoFromInput(AutoConnection & conn, const InputInfo & inputInfo,
165                          List <ProductInfo> & list);
166
167/** Carga la lista de todos los productos que utilizan como insumo un producto
168 *  dado.
169 *
170 * @param conn Conexión a la base de datos.
171 * @param[in] good bien del cual se requieren los que lo usan.
172 * @param[in] Año de declaración de la relación.
173 * @param[out] list Lista sobre la cual se escribirán los productos que lo usan
174 *              junto al id que se le asocia como insumo a good por cada uno.
175 */
176void listRequesters(AutoConnection & conn, Good * good,
177                    const std::string & year,
178                    List <Aleph::pair<ProductInfo, long>> & list);
179
180/** Consulta la candidad de insumo requerida para producir una unidad de
181 *  producto.
182 *
183 * @param conn Conexión a la base de datos.
184 * @param inputId id del insumo.
185 * @param productId id del producto.
186 * @return cantidad de insumo para producir una unidad de producto.
187 */
188real getUnitarianRequest(AutoConnection & conn, const size_t & inputId,
189                         const size_t & productId);
190
191/** Carga la cantidad producida y el precio de un producto en un año dado.
192 *
193 * @param conn Conexión a la base de datos.
194 * @param[in-out] good bien al cual se le efectúa la consulta y se le asignan
195 *                 los valores.
196 * @param year año de la producción.
197 */
198void getProducedQuantityAndPrice(AutoConnection & conn, Good * good,
199                                 const std::string & year);
200
201
202/** Carga la cantidad producida y el precio de un producto en un año dado.
203 *
204 * @param conn Conexión a la base de datos.
205 * @param[in-out] info producto al cual se le efectúa la consulta y se le
206 *                 asignan los valores.
207 * @param year año de la producción.
208 */
209void getProducedQuantityAndPrice(AutoConnection & conn, ProductInfo & info,
210                                 const std::string & year);
211
212/** Calcula la cantidad que se le debe asignar a un arco que va hacia aguas
213 *  arriba.
214 *
215 * @param[in] conn Conexión a la base de datos.
216 * @param[in] src bien en el nodo fuente.
217 * @param[in] tgt bien en el nodo destino.
218 * @param[in] year año de la relación.
219 * @param[out] info Referencia a la información del arco
220 */
221void computeArcQuantityUpstream(AutoConnection & conn, Good * src, Good * tgt,
222                                const std::string & year, ArcInfo & info);
223
224/** Consulta la cantidad que un comprador declara que obtiene de un proveedor.
225 *
226 * @param conn Conexión a la base de datos.
227 * @param rif R.I.F. del proveedor.
228 * @param inputId id del insumo.
229 * @param year año de la compra.
230 * @return cantidad de insumo declarado.
231 */
232real getDeclaredBoughtQuantity(AutoConnection & conn, const std::string & rif,
233                               const long & inputId, const std::string & year);
234
235/** Calcula la cantidad que se le debe asignar a un arco que va hacia aguas
236 *  abajo.
237 *
238 * @param conn Conexión a la base de datos.
239 * @param[in] src bien en el nodo fuente.
240 * @param[in] tgt bien en el nodo destino.
241 * @param[in-out] arcInfo información del arco sobre la cual se van a escribir
242                  los resultados.
243 * @param[in] year año de la relación.
244 */
245void computeArcQuantityDownstream(AutoConnection & conn, Good * src, Good * tgt,
246                                  const std::string & year, ArcInfo & arcInfo);
247
248/** Consulta el precio declarado de compra para un insumo el cual no está
249 *  registrado en el sigesic como un producto.
250 *
251 * @param conn Conexión a la base de datos.
252 * @param good Bien proveído.
253 * @param id id del insumo.
254 * @param year año de la compra.
255 * @return precio de compra del insumo.
256 */
257real getAcquisitionPrice(AutoConnection & conn, Good * good, const long & id,
258                         const std::string & year);
259
260/** Consulta el país de origen de una empresa.
261 *
262 * @param conn Conexión a la base de datos.
263 * @param rif R.I.F. de la empresa.
264 * @return nombre del país de origen.
265 */
266std::string getOrigCountry(AutoConnection & conn, const long & supplierId);
267
268/** Consulta el país de procedencia de una empresa.
269 *
270 * @param conn Conexión a la base de datos.
271 * @param rif R.I.F. de la empresa.
272 * @return nombre del país de procedencia.
273 */
274std::string getProcCountry(AutoConnection & conn, const long & supplierId);
275
276/** Carga una lista de posibles proveedores para un insumo.
277 *
278 * @param conn Conexión a la base de datos.
279 * @param[in] tariffCode código arancelario del insumo.
280 * @param[in] year año de la venta.
281 * @param[out] list Lista de posibles proveedores.
282 */
283void listSuggestedSuppliers(AutoConnection & conn,
284                            const std::string & tariffCode,
285                            const std::string & year,
286                            List<ProductInfo> & list);
287
288/** Carga la lista de id de productos de un insumo dado.
289 *
290 * @param conn Conexión a la base de datos.
291 * @param[in] id id del insumo.
292 * @param[in] año de la de las ventas.
293 * @param[out] ids lista de id de los productos.
294 */
295void listRealProductId(AutoConnection & conn, const long & id,
296                       const std::string & year, List<long> & ids);
297
298/** Consulta el nombre de un insumo.
299 *
300 * @param conn Conexión a la base de datos.
301 * @param id id del insumo.
302 * @return nombre del insumo.
303 */
304std::string getInputName(AutoConnection & conn, const long & id);
305
306/** Consulta la ubicación de una planta.
307 *
308 * @param conn Conexión a la base de datos.
309 * @param id id de la planta.
310 * @return ubicación de la planta.
311 */
312PlantLocation getPlantLocation(AutoConnection & conn, const long & id);
313
314/** Consulta el CIIU de una unidad económica.
315 *
316 * @param conn Conexión a la base de datos.
317 * @param rif R.I.F. de la empresa.
318 * @return valor del CIIU de la actividad económica.
319 */
320std::string getCiiu(AutoConnection & conn, const std::string & rif);
321
322/** Consulta la cantidad de emplados operativos de una unidad económica.
323 *
324 * @param conn Conexión a la base de datos.
325 * @param rif R.I.F. de la empresa.
326 * @param year Año máximo de la declaración.
327 * @return cantidad de empleados en la unidad económica.
328 */
329real getOperatingStaffNumber(AutoConnection & conn, const std::string & rif,
330                             const std::string & year);
331
332/** Consulta el monto total producido por una empresa en un año dado.
333 *
334 * @param conn Conexión a la base de datos.
335 * @param rif R.I.F. de la empresa.
336 * @param year Año de la producción.
337 * @return monto total producido por la empresa.
338 */
339real getTotalAmount(AutoConnection & conn, const std::string & rif,
340                    const std::string & year);
341
342/** Extrae los años para los cuales existe una producción.
343 *
344 * @param conn Conexión a la base de datos.
345 * @param[in]  productId Id del producto del cual se quiere consultar.
346 * @param[out] years Lista de años para los cuales hay producción declarada.
347 */
348void getProductionYears(AutoConnection & conn, const long productId,
349                        List<std::string> & years);
350
351struct CompanyRifName {
352    std::string rif;
353
354    std::string name;
355};
356
357/** Lista las empresas que tengan nombre parecido al dado.
358 *
359 * @param conn Conexión a la base de datos.
360 * @param[in] company Nombre de la empresa.
361 * @param[out] list Lista de pares (rif, nombre) de cada empresa coincidente.
362 */
363void listCompaniesLike(AutoConnection & conn, const std::string & company,
364                       List <CompanyRifName> & list);
365
366struct ProductIdName {
367    long id;
368
369    std::string name;
370
371    std::string technicalSpecifications;
372};
373
374/** Lista todos los productos producidos por una empresa.
375 *
376 * @param conn Conexión a la base de datos.
377 * @param[in] rif R.I.F. de la empresa.
378 * @param[out] list Lista de pares (id, nombre) de cada cada producto.
379 */
380void listProductsByCompany(AutoConnection & conn, const std::string & rif,
381                           List <ProductIdName> & list);
382
383void setArcMeasurementUnit(AutoConnection & conn, ArcInfo & info);
384
385# endif // QUERIES_H
386
Note: See TracBrowser for help on using the repository browser.