[68] | 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() { |
---|
[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 | } |
---|