source: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/ServiceRaster.java @ 70

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

maj eccad V3.2

  • Property svn:executable set to *
File size: 5.7 KB
RevLine 
[68]1package org.medias.eccad.metier.generationRaster;
2
3
4import java.util.HashMap;
5import java.util.Map;
6
7
8import org.medias.eccad.helpers.LoggerPerso;
9import org.medias.eccad.helpers.SpringBeanFactory;
10import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping;
11import org.medias.eccad.metier.statistique.GrapheCGI;
12import org.medias.eccad.metier.traducteur.TraducteurStat;
13import org.medias.eccad.modele.ColorTab;
14import org.medias.eccad.modele.Grille;
15import org.medias.eccad.modele.StatReponse;
16import org.medias.eccad.modele.Zone;
17import org.medias.eccad.persistance.dao.ColorTabDAO;
18import org.medias.eccad.persistance.dao.GrilleDAO;
19import org.medias.eccad.persistance.exception.PersistanceException;
20import org.springframework.beans.factory.xml.XmlBeanFactory;
21
22public class ServiceRaster implements IntServiceRaster {
23        private XmlBeanFactory xmlbean;
24       
25        //private GenerateurMapRaster    gen_carte     = null;
26        private GenerateurLegendRaster gen_legend    = null;
27        private GenerateurWorldFile    gen_worldfile = null;
28        private ColorMapping           colormap      = null;
29       
30        /**
31         * Constructeur par défaut
32         *
33         */
34        public ServiceRaster() {
[70]35//              LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG, "création du service");
[68]36                xmlbean = SpringBeanFactory.getXmlFactory();
37                gen_worldfile = (GenerateurWorldFile) xmlbean.getBean("worldfile");
38                colormap = (ColorMapping) xmlbean.getBean("colormap");
39               
40                //gen_carte = new GenerateurRasterImg();
41                gen_legend = new GenerateurLegendeImg();
42        }
43
44        /**
45         * Permet la création de l'image représentant la légende
46         */
[70]47        public String genereLegend(long id_grille, long id_colormap, long id_classdis, String fichier) {
48                colormap = getColorMap(id_colormap,id_classdis);
[68]49                InformationLegend info_legend = new InformationLegend();
[70]50                String infoSup = info_legend.getInfoSup(id_grille,null);
51                gen_legend.genereLegendVertical(colormap, info_legend.getLegendText(id_grille, colormap.getColorTable(), infoSup), infoSup);
[68]52                gen_legend.enregistreLegend(fichier+".legend.png");
53                return fichier+".legend.png";
54        }
55
56       
57        /**
[70]58         * Demande au CGI eccad de générer un raster pour la grille passée en paramÚtre.
[68]59         */
[70]60        public StatReponse genereRaster(long id_grille, long id_colormap, long id_classdis, Zone zone, String nomProd, long id_sector, long id_mask) {
[68]61                float centerValue = 0, centerLat = 0, centerLon = 0;
62                String requete = "";
63                GrilleDAO grilleDAO = (GrilleDAO) xmlbean.getBean("grilleDAO");
64                Grille grille = null;
65               
[70]66                try {
67                        grille = grilleDAO.getGrille(id_grille);
68                }catch (PersistanceException e) {
69                        LoggerPerso.log(ServiceRaster.class, LoggerPerso.ERROR, "ERROR generateRaster " + e.getM_message(), e);
70                }
[68]71               
72                GrapheCGI rasterdao = new GrapheCGI();
73                Map<String, String> critere = new HashMap<String, String>();
[70]74                if (zone != null) {
[68]75                        //*************************//
76                        String northbcN =  zone.getNorthbcN().replace(",",".");
77                        String southbcN = zone.getSouthbcN().replace(",",".");
78                        String eastbcN = zone.getEastbcN().replace(",",".");
79                        String westbcN = zone.getWestbcN().replace(",",".");
80                        critere.put("lat-max", northbcN);
81                        critere.put("lat-min", southbcN);
82                        critere.put("lon-max", eastbcN);
83                        critere.put("lon-min", westbcN);
84                }
[70]85                else {
86                        critere.put("lat-max", "90");
87                        critere.put("lat-min", "-90");
88                        critere.put("lon-max", "180");
89                        critere.put("lon-min", "-180");
90                }
[68]91                critere.put("beg-date", grille.getDate().toString());
92                critere.put("end-date", grille.getDate().toString());
93                TraducteurStat traducteur = new TraducteurStat();
[70]94                // Pour le produit IPCC, si le secteur est 0, cela signifie qu'on souhaite afficher la carte résultante de la somme des grilles associés à tous les secteurs
95                // Sinon, on affiche une seule grille sur la carte
96                if (nomProd.equals("IPCC") && id_sector==0) {
97                        requete = traducteur.encodeCritere(critere, grille.getId_param(), grille.getId_produit(), id_colormap, id_classdis, 0, grille.getId_rcp(), "0", "getGridsRaster", id_grille, id_mask);
98                } else {
99                        requete = traducteur.encodeCritere(critere, grille.getId_param(), grille.getId_produit(), id_colormap, id_classdis, grille.getId_secteur(), grille.getId_rcp(), grille.getLegend(), "getGridRaster", id_grille, id_mask);
100                }
[68]101                StatReponse reponse = traducteur.getReponse(rasterdao.getStatistique(requete));
[70]102                if (zone != null) {
103                        centerValue = (reponse.getCenter()==null?0:reponse.getCenter().floatValue());
104                        centerLat   = (reponse.getCenterLat()==null?0:reponse.getCenterLat().floatValue());
105                        centerLon   = (reponse.getCenterLon()==null?0:reponse.getCenterLon().floatValue());
[68]106                        reponse.setCenter(centerValue);
107                        reponse.setCenterLat(centerLat);
108                        reponse.setCenterLon(centerLon);
109                }
110               
111                //String result = rasterdao.getRaster(infoconnect.getDb_url().trim(), infoconnect.getDb_name().trim(), infoconnect.getDb_login().trim(), (int)id_grille, (int)id_colormap);
112                return reponse;
113        }
114       
115        /**
116         * Interroge la base de données pour obtenir la table de couleur de la grille
117         *
118         * @param colormapid l'identifiant de la colormap
119         * @return la table de couleur par défaut
120         */
[70]121        private ColorMapping getColorMap(long colormapid, long classdisid) {
[68]122                ColorTabDAO colorDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO");
123               
124                ColorTab colortab = null;
125               
126                try {
[70]127                        colortab = colorDAO.getColorMapByID(colormapid,classdisid);
[68]128                } catch (PersistanceException e) {
129                        e.printStackTrace();
130                }
131               
132                colormap.setColorTable(colortab);
133                return colormap;
134        }
135       
136        /*
137         * Getter and Setter
138         */
139
140        public GenerateurLegendRaster getGen_legend() {
141                return gen_legend;
142        }
143
144        public void setGen_legend(GenerateurLegendRaster gen_legend) {
145                this.gen_legend = gen_legend;
146        }
147
148        public GenerateurWorldFile getGen_worldfile() {
149                return gen_worldfile;
150        }
151
152        public void setGen_worldfile(GenerateurWorldFile gen_worldfile) {
153                this.gen_worldfile = gen_worldfile;
154        }
155
156}
Note: See TracBrowser for help on using the repository browser.