source: observatorio/simulacion/SimEscenariosEconomicos/queries.H @ eac25c3

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

eliminacion de un filtro redundante

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