1 | #include "Grille.h" |
---|
2 | |
---|
3 | #include <stdio.h> |
---|
4 | #include <string> |
---|
5 | #include <dirent.h> |
---|
6 | #include <sys/types.h> |
---|
7 | #include <sys/stat.h> |
---|
8 | #include <iterator> |
---|
9 | #include <time.h> |
---|
10 | #include <iostream> |
---|
11 | #include <sstream> |
---|
12 | #include <cstring> |
---|
13 | #include <stdlib.h> |
---|
14 | #include "libpq/libpq-fs.h" |
---|
15 | #include <math.h> |
---|
16 | #include <sys/times.h> |
---|
17 | //#include <eccad/eccad.h> |
---|
18 | |
---|
19 | Grille::Grille() |
---|
20 | { |
---|
21 | height = 360; |
---|
22 | width = 720; |
---|
23 | } |
---|
24 | |
---|
25 | Grille::Grille(int h, int w) |
---|
26 | { |
---|
27 | height = h; |
---|
28 | width = w; |
---|
29 | } |
---|
30 | |
---|
31 | Grille::~Grille() |
---|
32 | { |
---|
33 | } |
---|
34 | |
---|
35 | void Grille::writeDb(Logger* alogger, PGconn* conn) |
---|
36 | { |
---|
37 | logger = alogger; |
---|
38 | |
---|
39 | float minParam, maxParam; |
---|
40 | |
---|
41 | //recupération des min max parametre |
---|
42 | |
---|
43 | |
---|
44 | string sqlParam = "select min_param, max_param from parametre where id_param = "+idParam+";"; |
---|
45 | //cout<<sqlParam<<endl; |
---|
46 | |
---|
47 | PGresult* res = PQexec(conn, sqlParam.c_str()); |
---|
48 | minParam = atof(PQgetvalue(res, 0, 0)); |
---|
49 | maxParam = atof(PQgetvalue(res, 0, 1)); |
---|
50 | ////cout<<"height "<<height<<" width "<<width<< " minParam "<<minParam<<" maxParam "<< maxParam<<endl; |
---|
51 | for (int i=0; i<height; i++) |
---|
52 | { |
---|
53 | for (int j=0; j<width; j++) |
---|
54 | { |
---|
55 | this->valGriShort[i][j] = v2int(this->valGri[i][j], minParam, maxParam); |
---|
56 | } |
---|
57 | } |
---|
58 | |
---|
59 | //cout<<"ok"<<endl; |
---|
60 | |
---|
61 | PQexec(conn,("BEGIN")); |
---|
62 | |
---|
63 | Oid objId = lo_creat(conn,INV_READ | INV_WRITE); |
---|
64 | |
---|
65 | int objIdWrite = lo_open(conn, (int)objId, INV_WRITE); |
---|
66 | |
---|
67 | lo_write(conn, objIdWrite , (char*)valGriShort, height*width*sizeof(unsigned int)); |
---|
68 | lo_close(conn, objIdWrite); |
---|
69 | |
---|
70 | PQexec(conn,("END")); |
---|
71 | |
---|
72 | ////cout<< objId <<endl; |
---|
73 | stringstream sql; |
---|
74 | sql << "INSERT INTO grille ( id_produit, id_codification, id_param, valeurs_grille, date_grille, deltadate_grille, ncol_grille, nlign_grille, level_grille) VALUES("; |
---|
75 | sql << idProduit; |
---|
76 | sql << ","; |
---|
77 | sql << idCodif; |
---|
78 | sql << ","; |
---|
79 | sql << idParam; |
---|
80 | sql << ","; |
---|
81 | sql << objId; |
---|
82 | sql << ",'"; |
---|
83 | sql << dateGrille; |
---|
84 | sql << "','"; |
---|
85 | sql << deltaDateGrille; |
---|
86 | sql <<"',"<<width<<","<<height<<",1);"; |
---|
87 | ////cout << sql.str()<< endl; |
---|
88 | |
---|
89 | res = PQexec(conn, sql.str().c_str()); |
---|
90 | if ( PQresultStatus(res) != PGRES_COMMAND_OK) logger->traitementBaseMessages(" INSERT GRILLE N° : "+getId(conn)+ "+1", res); |
---|
91 | char *rep = PQcmdTuples(res); |
---|
92 | |
---|
93 | //printf("............ %s grille insérée pour la date %s \n", rep, dateGrille.c_str()); |
---|
94 | } |
---|
95 | |
---|
96 | |
---|
97 | |
---|
98 | void Grille::updateGrille(Logger* alogger, string idGrille, PGconn* conn) |
---|
99 | { |
---|
100 | logger = alogger; |
---|
101 | |
---|
102 | stringstream sql; |
---|
103 | PGresult* res; |
---|
104 | char* rep; |
---|
105 | sql << "select valeurs_grille from grille where id_grille = "; |
---|
106 | sql << idGrille; |
---|
107 | sql << ";"; |
---|
108 | ////cout << sql.str()<< endl; |
---|
109 | res = PQexec(conn, sql.str().c_str()); |
---|
110 | if ( PQresultStatus(res) != PGRES_TUPLES_OK) logger->traitementBaseMessages(" SELECT OID N° : "+idGrille, res); |
---|
111 | rep = PQcmdTuples(res); |
---|
112 | char* id = PQgetvalue(res, 0, 0); |
---|
113 | |
---|
114 | int i = lo_unlink(conn, atoi(id)); |
---|
115 | ////cout <<"id object : "<< i<<endl; |
---|
116 | |
---|
117 | |
---|
118 | logger = alogger; |
---|
119 | PQexec(conn,("BEGIN")); |
---|
120 | |
---|
121 | Oid objId = lo_creat(conn,INV_READ | INV_WRITE); |
---|
122 | |
---|
123 | int objIdWrite = lo_open(conn, (int)objId, INV_WRITE); |
---|
124 | |
---|
125 | lo_write(conn, objIdWrite , (char*)valGri, height*width*sizeof(float)); |
---|
126 | lo_close(conn, objIdWrite); |
---|
127 | |
---|
128 | PQexec(conn,("END")); |
---|
129 | |
---|
130 | sql <<"UPDATE grille SET valeurs_grille = "; |
---|
131 | sql << objId; |
---|
132 | sql<< ";"; |
---|
133 | |
---|
134 | res = PQexec(conn, sql.str().c_str()); |
---|
135 | if ( PQresultStatus(res) != PGRES_COMMAND_OK) logger->traitementBaseMessages(" INSERT GRILLE N° : "+getId(conn)+ "+1", res); |
---|
136 | rep = PQcmdTuples(res); |
---|
137 | |
---|
138 | //printf("............ %s update grille pour la date \n", rep); |
---|
139 | |
---|
140 | } |
---|
141 | |
---|
142 | |
---|
143 | void Grille::initialiseValGri(float val) |
---|
144 | { |
---|
145 | for (int i=0; i<height; i++) |
---|
146 | { |
---|
147 | for (int j=0; j<width; j++) |
---|
148 | { |
---|
149 | valGri[i][j] = val; |
---|
150 | } |
---|
151 | } |
---|
152 | } |
---|
153 | |
---|
154 | void Grille::initialiseInfosGri(string date, string deltaDate, string idPr, string idCod, string idPar) |
---|
155 | { |
---|
156 | dateGrille = date; |
---|
157 | deltaDateGrille = deltaDate; |
---|
158 | idProduit = idPr; |
---|
159 | idCodif = idCod; |
---|
160 | idParam = idPar; |
---|
161 | |
---|
162 | } |
---|
163 | |
---|
164 | void Grille::insertCode(string idCod, string legende, Logger* alogger, PGconn* conn) |
---|
165 | { |
---|
166 | logger = alogger; |
---|
167 | string sql = "insert into code (id_codification, num_code, legend_code) values ("+idCod+","+getId(conn)+",'"+legende+"');"; |
---|
168 | ////cout<< sql <<"*****************"<< endl; |
---|
169 | PGresult* res = PQexec(conn, sql.c_str()); |
---|
170 | if ( PQresultStatus(res) != PGRES_COMMAND_OK) logger->traitementBaseMessages(" INSERT CODE -- GRILLE N° : "+getId(conn), res); |
---|
171 | |
---|
172 | char *rep = PQcmdTuples(res); |
---|
173 | //printf("............ %s code inséré pour la date %s --- legende : %s \n", rep, dateGrille.c_str(), legende.c_str()); |
---|
174 | } |
---|
175 | |
---|
176 | |
---|
177 | void Grille::insertCodeClasse(string idCod, string legende,int numClasse, Logger* alogger, PGconn* conn) |
---|
178 | { |
---|
179 | logger = alogger; |
---|
180 | string sql = "insert into code (id_codification, num_code, legend_code, number_code) values ("+idCod+","+getId(conn)+",'"+legende+"',"+itoa(numClasse)+");"; |
---|
181 | //cout<< sql <<"*****************"<< endl; |
---|
182 | PGresult* res = PQexec(conn, sql.c_str()); |
---|
183 | if ( PQresultStatus(res) != PGRES_COMMAND_OK) logger->traitementBaseMessages(" INSERT CODE -- GRILLE N° : "+getId(conn), res); |
---|
184 | |
---|
185 | char *rep = PQcmdTuples(res); |
---|
186 | printf("............ %s code inséré pour la date %s --- legende : %s \n", rep, dateGrille.c_str(), legende.c_str()); |
---|
187 | } |
---|
188 | |
---|
189 | |
---|
190 | void Grille::insertCoded(string idCod, string legende, string code, Logger* alogger, PGconn* conn) |
---|
191 | { |
---|
192 | logger = alogger; |
---|
193 | string sql = "insert into code (id_codification, num_code, legend_code) values ("+idCod+","+code+",'"+legende+"');"; |
---|
194 | ////cout<< sql <<"*****************"<< endl; |
---|
195 | PGresult* res = PQexec(conn, sql.c_str()); |
---|
196 | if ( PQresultStatus(res) != PGRES_COMMAND_OK) logger->traitementBaseMessages(" INSERT CODE -- GRILLE N° : "+getId(conn), res); |
---|
197 | |
---|
198 | char *rep = PQcmdTuples(res); |
---|
199 | //printf("............ %s code inséré pour la date %s --- legende : %s \n", rep, dateGrille.c_str(), legende.c_str()); |
---|
200 | } |
---|
201 | |
---|
202 | |
---|
203 | |
---|
204 | |
---|
205 | string Grille::getId(PGconn* conn) |
---|
206 | { |
---|
207 | string sql ="select currval('grille_id_grille_seq');"; |
---|
208 | PGresult* res = PQexec(conn, sql.c_str()); |
---|
209 | |
---|
210 | return PQgetvalue(res, 0, 0); |
---|
211 | } |
---|
212 | |
---|
213 | float Grille::calculeMin() |
---|
214 | { |
---|
215 | |
---|
216 | float min = valGri[0][0]; |
---|
217 | for (int i=0; i<height; i++) |
---|
218 | { |
---|
219 | for (int j=0; j<width; j++) |
---|
220 | { |
---|
221 | if ( valGri[i][j] < min ) min = valGri[i][j]; |
---|
222 | } |
---|
223 | } |
---|
224 | return min; |
---|
225 | } |
---|
226 | |
---|
227 | float Grille::calculeMax() |
---|
228 | { |
---|
229 | float max = valGri[0][0]; |
---|
230 | |
---|
231 | for (int i=0; i<height; i++) |
---|
232 | { |
---|
233 | for (int j=0; j<width; j++) |
---|
234 | { |
---|
235 | if ( valGri[i][j] > max ) max = valGri[i][j]; |
---|
236 | } |
---|
237 | } |
---|
238 | return max; |
---|
239 | } |
---|
240 | |
---|