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.medias.eccad.presentation.traducteur.TraducteurCarte; |
---|
21 | import org.springframework.beans.factory.xml.XmlBeanFactory; |
---|
22 | |
---|
23 | public class ServiceRaster implements IntServiceRaster { |
---|
24 | private XmlBeanFactory xmlbean; |
---|
25 | |
---|
26 | //private GenerateurMapRaster gen_carte = null; |
---|
27 | private GenerateurLegendRaster gen_legend = null; |
---|
28 | private GenerateurWorldFile gen_worldfile = null; |
---|
29 | private ColorMapping colormap = null; |
---|
30 | |
---|
31 | /** |
---|
32 | * Constructeur par défaut |
---|
33 | * |
---|
34 | */ |
---|
35 | public ServiceRaster() { |
---|
36 | LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG, "création du service"); |
---|
37 | xmlbean = SpringBeanFactory.getXmlFactory(); |
---|
38 | gen_worldfile = (GenerateurWorldFile) xmlbean.getBean("worldfile"); |
---|
39 | colormap = (ColorMapping) xmlbean.getBean("colormap"); |
---|
40 | |
---|
41 | //gen_carte = new GenerateurRasterImg(); |
---|
42 | gen_legend = new GenerateurLegendeImg(); |
---|
43 | } |
---|
44 | |
---|
45 | /** |
---|
46 | * Permet la création de l'image représentant la légende |
---|
47 | */ |
---|
48 | public String genereLegend(long id_grille, long id_colormap, String fichier) { |
---|
49 | colormap = getColorMap(id_colormap); |
---|
50 | InformationLegend info_legend = new InformationLegend(); |
---|
51 | |
---|
52 | gen_legend.genereLegendVertical(colormap, info_legend.getLegendText(id_grille, colormap.getColorTable()), info_legend.getInfoSup(id_grille)); |
---|
53 | gen_legend.enregistreLegend(fichier+".legend.png"); |
---|
54 | return fichier+".legend.png"; |
---|
55 | } |
---|
56 | |
---|
57 | |
---|
58 | /** |
---|
59 | * Demande au CGI eccad de générer un raster pour la grille passée en paramêtre. |
---|
60 | */ |
---|
61 | public StatReponse genereRaster(long id_grille, long id_colormap, Zone zone) { |
---|
62 | LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG,"------------------------- **********************************++++++++++++++++++++++ "); |
---|
63 | float centerValue = 0, centerLat = 0, centerLon = 0; |
---|
64 | String requete = ""; |
---|
65 | GrilleDAO grilleDAO = (GrilleDAO) xmlbean.getBean("grilleDAO"); |
---|
66 | Grille grille = null; |
---|
67 | |
---|
68 | try {grille = grilleDAO.getGrille(id_grille);}catch (PersistanceException e) {LoggerPerso.log(ServiceRaster.class, LoggerPerso.ERROR, "ERROR generateRaster " + e.getM_message(), e);} |
---|
69 | |
---|
70 | GrapheCGI rasterdao = new GrapheCGI(); |
---|
71 | Map<String, String> critere = new HashMap<String, String>(); |
---|
72 | if (zone != null) |
---|
73 | { |
---|
74 | //*************************// |
---|
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 | |
---|
81 | LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG,"------------------------- "+ northbcN); |
---|
82 | |
---|
83 | critere.put("lat-max", northbcN); |
---|
84 | critere.put("lat-min", southbcN); |
---|
85 | critere.put("lon-max", eastbcN); |
---|
86 | critere.put("lon-min", westbcN); |
---|
87 | |
---|
88 | critere.put("beg-date", grille.getDate().toString()); |
---|
89 | critere.put("end-date", grille.getDate().toString()); |
---|
90 | TraducteurStat traducteur = new TraducteurStat(); |
---|
91 | requete = traducteur.encodeCritere(critere, grille.getId_param(), grille.getId_produit(), id_colormap, "getGridRaster", id_grille); |
---|
92 | StatReponse reponse = traducteur.getReponse(rasterdao.getStatistique(requete)); |
---|
93 | centerValue = reponse.getCenter(); |
---|
94 | centerLat = reponse.getCenterLat(); |
---|
95 | centerLon = reponse.getCenterLon(); |
---|
96 | } |
---|
97 | |
---|
98 | LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG,"------------------------- **********************************++++++++++++++++++++++ "); |
---|
99 | |
---|
100 | critere.put("lat-max", "90"); |
---|
101 | critere.put("lat-min", "-90"); |
---|
102 | critere.put("lon-max", "180"); |
---|
103 | critere.put("lon-min", "-180"); |
---|
104 | |
---|
105 | critere.put("beg-date", grille.getDate().toString()); |
---|
106 | critere.put("end-date", grille.getDate().toString()); |
---|
107 | TraducteurStat traducteur = new TraducteurStat(); |
---|
108 | requete = traducteur.encodeCritere(critere, grille.getId_param(), grille.getId_produit(), id_colormap, "getGridRaster", id_grille); |
---|
109 | StatReponse reponse = traducteur.getReponse(rasterdao.getStatistique(requete)); |
---|
110 | if (zone != null) |
---|
111 | { |
---|
112 | reponse.setCenter(centerValue); |
---|
113 | reponse.setCenterLat(centerLat); |
---|
114 | reponse.setCenterLon(centerLon); |
---|
115 | } |
---|
116 | |
---|
117 | //String result = rasterdao.getRaster(infoconnect.getDb_url().trim(), infoconnect.getDb_name().trim(), infoconnect.getDb_login().trim(), (int)id_grille, (int)id_colormap); |
---|
118 | return reponse; |
---|
119 | } |
---|
120 | |
---|
121 | /** |
---|
122 | * Interroge la base de données pour obtenir la table de couleur de la grille |
---|
123 | * |
---|
124 | * @param colormapid l'identifiant de la colormap |
---|
125 | * @return la table de couleur par défaut |
---|
126 | */ |
---|
127 | private ColorMapping getColorMap(long colormapid) { |
---|
128 | ColorTabDAO colorDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO"); |
---|
129 | |
---|
130 | ColorTab colortab = null; |
---|
131 | |
---|
132 | try { |
---|
133 | colortab = colorDAO.getColorMapByID(colormapid); |
---|
134 | } catch (PersistanceException e) { |
---|
135 | e.printStackTrace(); |
---|
136 | } |
---|
137 | |
---|
138 | colormap.setColorTable(colortab); |
---|
139 | return colormap; |
---|
140 | } |
---|
141 | |
---|
142 | /* |
---|
143 | * Getter and Setter |
---|
144 | */ |
---|
145 | |
---|
146 | public GenerateurLegendRaster getGen_legend() { |
---|
147 | return gen_legend; |
---|
148 | } |
---|
149 | |
---|
150 | public void setGen_legend(GenerateurLegendRaster gen_legend) { |
---|
151 | this.gen_legend = gen_legend; |
---|
152 | } |
---|
153 | |
---|
154 | public GenerateurWorldFile getGen_worldfile() { |
---|
155 | return gen_worldfile; |
---|
156 | } |
---|
157 | |
---|
158 | public void setGen_worldfile(GenerateurWorldFile gen_worldfile) { |
---|
159 | this.gen_worldfile = gen_worldfile; |
---|
160 | } |
---|
161 | |
---|
162 | |
---|
163 | } |
---|