-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtransform-data.C
More file actions
180 lines (145 loc) · 5.8 KB
/
transform-data.C
File metadata and controls
180 lines (145 loc) · 5.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# include <tclap/CmdLine.h>
# include <grafo.H>
bool verbose = true;
size_t verbose_cycles;
using namespace TCLAP;
void process_comand_line(int argc, char *argv[])
{
CmdLine cmd("transform-data", ' ', "0.0");
SwitchArg verbose("v", "verbose", "verbose mode", true);
cmd.add(verbose);
/***************** Archivos de salida ****************/
ValueArg<string> gname("g", "archivo-grafo", "nombre archivo del grafo",
false, "grafo.txt",
"nombre de archivo donde se escribirá el grafo");
cmd.add(gname);
ValueArg<string>
Pname("P", "archivo-productores", "nombre archivo productores", false,
"productores.txt",
"nombre de archivo dónde se escribirán los productores");
cmd.add(Pname);
ValueArg<string>
pname("p", "archivo-productos", "nombre archivo productos", false,
"productos.txt", "nombre dónde se escribirán los productos");
cmd.add(pname);
ValueArg<string>
sname("A", "archivo-socios", "nombre archivo accionistas", false,
"socios.txt", "nombre de archivo donde se escirben los socios");
cmd.add(sname);
ValueArg<string>
iname("i", "archivo-input", "nombre archivo insumos", false,
"insumos.txt", "nombre de archivo de insumos");
cmd.add(iname);
ValueArg<string>
fname("F", "archivo-plantas", "nombre archivo plantas", false,
"plantas.txt", "nombre de archivo de plantas");
cmd.add(fname);
/****************** Archivos de entrada ****************/
ValueArg<string> // nom_unidades
unidad_economica("u", "unidad-economica", "nombre archivo unidad economica",
false, "unidad_economica.csv",
"nombre archivo unidad economica");
cmd.add(unidad_economica);
ValueArg<string> // nombre archivo socios
socios("S", "socios", "nombre archivo socios", false,
"unidadecon_socio.csv", "nombre archivo de socios");
cmd.add(socios);
ValueArg<string> // nom_plantas
subunidad_economica("s", "subunidad-economica",
"nombre archivo subunidad economica (plantas)",
false,
"unidadecon_subunidad_economica.csv",
"nombre archivo subunidad economica (plantas)");
cmd.add(subunidad_economica);
ValueArg<string> // nom_proveedores
proveedor("V", "archivo-proveedores", "nombre archivo proveedores", false,
"cmproveedores_proveedor.csv", "nombre archivo proveedores");
cmd.add(proveedor);
ValueArg<string> // nom_insumos
insumo("d", "archivo-insumos", "nombre archivo insumos",
false, "produccion_insumo.csv", "nombre archivo proveedores insumo");
cmd.add(insumo);
ValueArg<string> // nom_productos
produccion("r", "archivo-produccion", "nombre archivo producción", false,
"produccion_producto.csv",
"nombre archivo producción de productos");
cmd.add(produccion);
ValueArg<string> // nom_prov_ins
proveedor_insumo("I", "archivo-proveedor-insumo",
"nombre archivo proveedor insumo", false,
"cmproveedores_proveedorinsumo.csv",
"nombre archivo proveedor insumo");
cmd.add(proveedor_insumo);
ValueArg<string> // nom_arcos
arcos("a", "archivo-arcos", "nombre archivo arcos", false,
"produccion_producto_t_insumo.csv",
"nombre archivo de arcos (relación insumo/producto");
cmd.add(arcos);
ValueArg<long> anho("y", "anho", "año de estudio", false, 2012,
"Año para el cual se desea transformar la data");
cmd.add(anho);
ValueArg<size_t> feedback("f", "feedback", "Num de iteraciones en verbose",
false, 10000,
"Número de lecturas de arcos para imprimir avance");
cmd.add(feedback);
cmd.parse(argc, argv);
::verbose = verbose.getValue();
verbose_cycles = feedback.getValue();
Mapa mapa(anho.getValue(), unidad_economica.getValue().c_str(),
socios.getValue().c_str(), subunidad_economica.getValue().c_str(),
produccion.getValue().c_str(), insumo.getValue().c_str(),
proveedor_insumo.getValue().c_str(), proveedor.getValue().c_str(),
arcos.getValue().c_str());
{
ofstream gout(gname.getValue());
if (gout.fail())
throw domain_error((char*)fmt("No puedo crear %s",
gname.getValue().c_str()));
mapa.save(gout);
ofstream log("log.txt");
mapa.log.for_each([&log] (auto s) { log << s << endl; } );
}
ofstream productores_out(Pname.getValue());
if (productores_out.fail())
throw domain_error((char*)fmt("No puedo crear %s",
Pname.getValue().c_str()));
TablaProductores tabla_productores(mapa.tabla_unidades,
mapa.tabla_socios,
mapa.tabla_proveedores,
mapa.tabla_productos,
mapa.tabla_plantas);
tabla_productores.save(productores_out);
ofstream productos_out(pname.getValue());
if (productos_out.fail())
throw domain_error((char*)fmt("No puedo crear %s",
pname.getValue().c_str()));
TablaMetaProductos tabla_productos(mapa.tabla_productos, tabla_productores);
tabla_productos.save(productos_out);
ofstream socios_out(sname.getValue());
if (socios_out.fail())
throw domain_error((char*)fmt("No puedo crear %s",
sname.getValue().c_str()));
mapa.tabla_socios.save(socios_out);
ofstream insumos_out(iname.getValue());
if (insumos_out.fail())
throw domain_error((char*)fmt("No puedo crear %s",
iname.getValue().c_str()));
TablaMetaInsumos tabla_insumos(mapa.tabla_insumos);
tabla_insumos.save(insumos_out);
ofstream plantas_out(fname.getValue());
if (plantas_out.fail())
throw domain_error((char*)fmt("No puedo crear %s",
fname.getValue().c_str()));
mapa.tabla_plantas.save(plantas_out);
}
int main(int argc, char *argv[])
{
process_comand_line(argc, argv);
// Mapa mapa(2012, "unidad_economica.csv",
// "unidadecon_subunidad_economica.csv",
// "produccion_producto.csv", "produccion_insumo.csv",
// "cmproveedores_proveedorinsumo.csv", "cmproveedores_proveedor.csv",
// "produccion_producto_t_insumo.csv");
// mapa.save(cout);
return 0;
}