1 | package org.medias.eccad.metier.generationRaster; |
---|
2 | |
---|
3 | |
---|
4 | import java.util.HashMap; |
---|
5 | import java.util.Map; |
---|
6 | |
---|
7 | |
---|
8 | import org.medias.eccad.helpers.LoggerPerso; |
---|
9 | import org.medias.eccad.helpers.SpringBeanFactory; |
---|
10 | import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping; |
---|
11 | import org.medias.eccad.metier.statistique.GrapheCGI; |
---|
12 | import org.medias.eccad.metier.traducteur.TraducteurStat; |
---|
13 | import org.medias.eccad.modele.ColorTab; |
---|
14 | import org.medias.eccad.modele.Grille; |
---|
15 | import org.medias.eccad.modele.StatReponse; |
---|
16 | import org.medias.eccad.modele.Zone; |
---|
17 | import org.medias.eccad.persistance.dao.ColorTabDAO; |
---|
18 | import org.medias.eccad.persistance.dao.GrilleDAO; |
---|
19 | import org.medias.eccad.persistance.exception.PersistanceException; |
---|
20 | import org.springframework.beans.factory.xml.XmlBeanFactory; |
---|
21 | |
---|
22 | public 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() { |
---|
35 | // LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG, "création du service"); |
---|
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 | */ |
---|
47 | public String genereLegend(long id_grille, long id_colormap, long id_classdis, String fichier) { |
---|
48 | colormap = getColorMap(id_colormap,id_classdis); |
---|
49 | InformationLegend info_legend = new InformationLegend(); |
---|
50 | String infoSup = info_legend.getInfoSup(id_grille,null); |
---|
51 | gen_legend.genereLegendVertical(colormap, info_legend.getLegendText(id_grille, colormap.getColorTable(), infoSup), infoSup); |
---|
52 | gen_legend.enregistreLegend(fichier+".legend.png"); |
---|
53 | return fichier+".legend.png"; |
---|
54 | } |
---|
55 | |
---|
56 | |
---|
57 | /** |
---|
58 | * Demande au CGI eccad de générer un raster pour la grille passée en paramÚtre. |
---|
59 | */ |
---|
60 | public StatReponse genereRaster(long id_grille, long id_colormap, long id_classdis, Zone zone, String nomProd, long id_sector, long id_mask) { |
---|
61 | float centerValue = 0, centerLat = 0, centerLon = 0; |
---|
62 | String requete = ""; |
---|
63 | GrilleDAO grilleDAO = (GrilleDAO) xmlbean.getBean("grilleDAO"); |
---|
64 | Grille grille = null; |
---|
65 | |
---|
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 | } |
---|
71 | |
---|
72 | GrapheCGI rasterdao = new GrapheCGI(); |
---|
73 | Map<String, String> critere = new HashMap<String, String>(); |
---|
74 | if (zone != null) { |
---|
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 | } |
---|
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 | } |
---|
91 | critere.put("beg-date", grille.getDate().toString()); |
---|
92 | critere.put("end-date", grille.getDate().toString()); |
---|
93 | TraducteurStat traducteur = new TraducteurStat(); |
---|
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 | } |
---|
101 | StatReponse reponse = traducteur.getReponse(rasterdao.getStatistique(requete)); |
---|
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()); |
---|
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 | */ |
---|
121 | private ColorMapping getColorMap(long colormapid, long classdisid) { |
---|
122 | ColorTabDAO colorDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO"); |
---|
123 | |
---|
124 | ColorTab colortab = null; |
---|
125 | |
---|
126 | try { |
---|
127 | colortab = colorDAO.getColorMapByID(colormapid,classdisid); |
---|
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 | } |
---|