source: ether_eccad/trunk/ECCAD_INSERT/src/Grille.cpp @ 68

Last change on this file since 68 was 68, checked in by cbipsl, 14 years ago

commit v1 eccad

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 6.1 KB
Line 
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
19Grille::Grille()
20{
21        height = 360;
22        width = 720;
23}
24
25Grille::Grille(int h, int w)
26{
27        height = h;
28        width = w;
29}
30
31Grille::~Grille()
32{
33}
34
35void 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
98void 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
143void 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
154void 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
164void 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
177void 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
190void 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
205string 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
213float 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
227float 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
Note: See TracBrowser for help on using the repository browser.