Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/build.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/build.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/build.xml	(revision 70)
@@ -1,7 +1,8 @@
-<project name="Eccad" default="war" basedir=".">
+<project name="Eccad" default="deploy" basedir=".">
 
 	<property file="${basedir}/build.properties" />
-	<property name="build" value="../build" />
+	<property name="build" value="../classes" />
 	<property name="lib" value="../lib" />
+	<property name="dist" value="../../.." />
 	<property name="src" value="." />
 	<path id="libPath">
@@ -17,13 +18,20 @@
 	</path>
 
+	<!-- DÃ©ploiement de l'archive -->
+	<target name="deploy" depends="war">
+		<!--<delete dir="${tomcat}/webapps/${app.name}"/>-->
+		<!--<unjar src="${dist}/${app.name}.war" dest="${tomcat}/webapps/${app.name}"/>-->
+        <copy todir="${tomcat}/webapps" includeEmptyDirs="no">
+            <fileset file="${dist}/${app.name}.war"/>
+        </copy>
+	</target>
+
 	<target name="war" depends="compile">
-		<war destfile="../../../${app.name}.war" webxml="../web.xml">
+		<war destfile="${dist}/${app.name}.war" webxml="../web.xml">
 			<zipfileset dir="../../" includes="**/*" prefix="" excludes=".tomcatplugin .classpath .project"/>
-			<lib dir="${lib}">
-				<exclude name="servlet-api.jar" />
-				<exclude name="gnujaxp.jar" />
+			<!--lib dir="${lib}">
 				<exclude name="xercesImpl.jar" />
 			</lib>
-			<classes dir="${build}" />
+			<classes dir="${build}" /-->
 		</war>
 	</target>
@@ -38,5 +46,4 @@
 			<classpath refid="libPath" />
 		</javac>
-
 	</target>
 </project>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/eccad_spring.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/eccad_spring.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/eccad_spring.xml	(revision 70)
@@ -7,11 +7,11 @@
 
 <beans>
-     
-   <bean id="urlbean" class="org.medias.eccad.presentation.bean.URLBeanValue">
-   		<property name="url_home"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1218</value></property> <!-- l'url home d'eccad -->
-   		<property name="url_products"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1228</value></property>
-   		<property name="url_tools"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1235</value></property>
-   		<property name="url_manual"><value>http://ether.ipsl.jussieu.fr/etherTypo/fileadmin/files/ECCAD/doc/Eccad_users_manual.pdf</value></property>
-   </bean>
+
+	<bean id="urlbean" class="org.medias.eccad.presentation.bean.URLBeanValue">
+		<property name="url_home"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1218</value></property>
+		<property name="url_products"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1228</value></property>
+		<property name="url_tools"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1226</value></property>
+		<property name="url_manual"><value>http://ether.ipsl.jussieu.fr/etherTypo/fileadmin/files/ECCAD/doc/Eccad_users_manual.pdf</value></property>
+	</bean>
    
    <!-- Information extracteur -->
@@ -24,9 +24,9 @@
    <!-- Information Connexion jdbc -->
    <bean id="infoConnect" class="org.medias.eccad.persistance.InfoConnectBean">
-   		<property name="db_url"><value> eccad.ipsl.jussieu.fr </value></property>
-   		<property name="db_name"><value> ECCAD3FINAL </value></property>
+   		<property name="db_url"><value>eccad.ipsl.jussieu.fr</value></property>
+   		<property name="db_name"><value>ECCAD3FINAL</value></property>
 		<property name="db_port"><value>5432</value></property>
-		<property name="db_login"><value>eccad </value></property>
-		<property name="db_passwd"><value>  </value></property>
+		<property name="db_login"><value>eccad</value></property>
+		<property name="db_passwd"><value></value></property>
    </bean>
    
@@ -44,5 +44,5 @@
 		<property name="sgbd"><ref local="sgbd"/></property>
 	</bean>
-	
+
 	<bean id="catParametreDAO" class="org.medias.eccad.persistance.jdbc.CatParametreDAOjdbc">
 		<property name="sgbd"><ref local="sgbd"/></property>
@@ -50,4 +50,12 @@
 	
 	<bean id="parametreDAO" class="org.medias.eccad.persistance.jdbc.ParametreDAOjdbc">
+		<property name="sgbd"><ref local="sgbd"/></property>
+	</bean>
+
+	<bean id="secteurDAO" class="org.medias.eccad.persistance.jdbc.SecteurDAOjdbc">
+		<property name="sgbd"><ref local="sgbd"/></property>
+	</bean>
+
+	<bean id="rcpDAO" class="org.medias.eccad.persistance.jdbc.RcpDAOjdbc">
 		<property name="sgbd"><ref local="sgbd"/></property>
 	</bean>
@@ -71,26 +79,29 @@
 	</bean>
 	
+	<bean id="classDistributionTabDAO" class="org.medias.eccad.persistance.jdbc.ClassDistributionTabDAOjdbc">
+		<property name="sgbd"><ref local="sgbd"/></property>
+	</bean>
+
 	<bean id="xmlDAO" class="org.medias.eccad.persistance.hibernate.XmlDAOhibernate">
 	</bean>
 
 	<!-- fin info jdbc -->
-	
+
 	<!-- Generation des rasters -->
-   <bean id="worldfile" class="org.medias.eccad.metier.generationRaster.GenerateurWorldFile" singleton="false">
-   		<property name="pixelX"><value>-180</value></property>
- 	   	<property name="pixelY"><value>90</value></property>
-   </bean>
-   <bean id="colormap" class="org.medias.eccad.metier.generationRaster.colorMap.ColorMappingIntervalle" singleton="false">
-   </bean>
-   <!-- fin generation des rasters -->
+	<bean id="worldfile" class="org.medias.eccad.metier.generationRaster.GenerateurWorldFile">
+		<property name="pixelX"><value>-180</value></property>
+		<property name="pixelY"><value>90</value></property>
+	</bean>
+	<bean id="colormap" class="org.medias.eccad.metier.generationRaster.colorMap.ColorMappingIntervalle" singleton="false">
+	</bean>
+	<!-- fin generation des rasters -->
    
    <!-- Gestion des visualisation et des traducteurs associés -->
    <bean id="traducteur_temporel" class="org.medias.eccad.metier.traducteur.TraducteurVisuTemporel"/>
    <bean id="traducteur_multiplan" class="org.medias.eccad.metier.traducteur.TraducteurVisuMultiplan"/>
-   <bean id="traducteur_facteur" class="org.medias.eccad.metier.traducteur.TraducteurVisuTemporel"/>
-   
+
    <bean id="monoplan" class="org.medias.eccad.modele.Visualisation">
 	   	<property name="page_jsp"><value>./visualisation/classe.jsp</value></property>
-   		<property name="traducteur"><value>traducteur_temporel</value></property>
+   		<property name="traducteur"><value>traducteur_multiplan</value></property>
    </bean>
    
@@ -104,11 +115,6 @@
    		<property name="traducteur"><value>traducteur_temporel</value></property>
   </bean>
-  
-  <bean id="facteur" class="org.medias.eccad.modele.Visualisation">
-   		<property name="page_jsp"><value>./visualisation/temporel.jsp</value></property>
-   		<property name="traducteur"><value>traducteur_facteur</value></property>
-  </bean>
-  
+
    <!-- Fin de la gestion des visualisations -->
-   
+
 </beans>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/eccad_spring_test.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/eccad_spring_test.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/eccad_spring_test.xml	(revision 70)
@@ -68,4 +68,8 @@
 	</bean>
 	
+	<bean id="classDistributionTabDAO" class="org.medias.eccad.persistance.jdbc.ClassDistributionTabDAOjdbc">
+		<property name="sgbd"><ref local="sgbd"/></property>
+	</bean>
+	
 	<bean id="xmlDAO" class="org.medias.eccad.persistance.hibernate.XmlDAOhibernate">
 	</bean>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/hibernate.cfg.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/hibernate.cfg.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/hibernate.cfg.xml	(revision 70)
@@ -8,5 +8,5 @@
         <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
 <!--    <property name="hibernate.connection.password">www001</property> -->
-        <property name="hibernate.connection.url"> jdbc:postgresql://eccad.ipsl.jussieu.fr:5432/ECCAD3FINAL</property>
+        <property name="hibernate.connection.url">jdbc:postgresql://eccad.ipsl.jussieu.fr:5432/ECCAD3FINAL</property>
         <property name="hibernate.connection.username">eccad</property>
         <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
@@ -21,32 +21,29 @@
         
         
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fichier.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ColorIndex.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Lienorganisme.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Categorieparametre.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Code.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Produit.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Codification.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Color.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Unite.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ColorIndex.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Colormap.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Concerne.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Contact.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Domaine.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Contact.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fichier.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fournit.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Grille.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Lienpersonne.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ParamColor.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Parametre.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Personne.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Produit.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/References.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Requete.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Typecodification.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Colormap.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Categorieparametre.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ParamColor.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Personne.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/References.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Grille.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Concerne.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Sequence.hbm.xml" />
-<!-- >        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Ceoslevel.hbm.xml" />-->
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fournit.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Lienpersonne.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Typeproduit.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Parametre.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Unite.hbm.xml" />
     </session-factory>
 </hibernate-configuration>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml	(revision 70)
@@ -24,10 +24,4 @@
             <one-to-many class="org.medias.eccad.persistance.hibernate.domaine.Produit" />
         </set>
-        <set name="lienorganismes" inverse="true">
-            <key>
-                <column name="id_metadata" not-null="true" />
-            </key>
-            <one-to-many class="org.medias.eccad.persistance.hibernate.domaine.Lienorganisme" />
-        </set>
         <set name="lienpersonnes" inverse="true">
             <key>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml	(revision 70)
@@ -42,10 +42,4 @@
             <one-to-many class="org.medias.eccad.persistance.hibernate.domaine.Fournit" />
         </set>
-        <set name="lienorganismes" inverse="true">
-            <key>
-                <column name="id_organisme" not-null="true" />
-            </key>
-            <one-to-many class="org.medias.eccad.persistance.hibernate.domaine.Lienorganisme" />
-        </set>
     </class>
 </hibernate-mapping>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/classes/org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml	(revision 70)
@@ -15,18 +15,15 @@
             <column name="title_produitorig" length="128" unique="true" />
         </property>
-        <property name="orgProduitorig" type="string">
-            <column name="org_produitorig" length="128" />
-        </property>
-        <property name="dateProduitorig" type="date">
-            <column name="date_produitorig" length="4" />
+        <property name="dateProduitorig" type="string">
+            <column name="date_produitorig" length="128" />
         </property>
         <property name="editionProduitorig" type="string">
             <column name="edition_produitorig" length="128" />
         </property>
-        <property name="begintimeProduitorig" type="date">
-            <column name="begintime_produitorig" length="4" />
+        <property name="begintimeProduitorig" type="string">
+            <column name="begintime_produitorig" length="128" />
         </property>
-        <property name="endtimeProduitorig" type="date">
-            <column name="endtime_produitorig" length="4" />
+        <property name="endtimeProduitorig" type="string">
+            <column name="endtime_produitorig" length="128" />
         </property>
         <property name="earthellipsProduitorig" type="string">
@@ -38,7 +35,4 @@
         <property name="spatialresProduitorig" type="string">
             <column name="spatialres_produitorig" length="128" />
-        </property>
-        <property name="projectionProduitorig" type="string">
-            <column name="projection_produitorig" length="128" />
         </property>
         <property name="methodProduitorig" type="string">
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/javaface-config.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/javaface-config.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/javaface-config.xml	(revision 70)
@@ -56,4 +56,10 @@
 
 <managed-bean>
+	<managed-bean-name>grapheBean</managed-bean-name>
+	<managed-bean-class>org.medias.eccad.presentation.bean.GrapheBean</managed-bean-class>
+	<managed-bean-scope>request</managed-bean-scope>
+</managed-bean>
+
+<managed-bean>
 	<managed-bean-name>emissionBean</managed-bean-name>
 	<managed-bean-class>org.medias.eccad.presentation.bean.emission.EmissionBean</managed-bean-class>
@@ -101,4 +107,8 @@
 	</navigation-case>
 	<navigation-case>
+		<from-outcome>page_extract_before</from-outcome>
+		<to-view-id>/JSF/page_extract_before.jsp</to-view-id>
+	</navigation-case>
+	<navigation-case>
 		<from-outcome>page_extract_emission</from-outcome>
 		<to-view-id>/JSF/page_extract_emission.jsp</to-view-id>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/build.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/build.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/build.xml	(revision 70)
@@ -1,7 +1,8 @@
-<project name="Eccad" default="war" basedir=".">
+<project name="Eccad" default="deploy" basedir=".">
 
 	<property file="${basedir}/build.properties" />
-	<property name="build" value="../build" />
+	<property name="build" value="../classes" />
 	<property name="lib" value="../lib" />
+	<property name="dist" value="../../.." />
 	<property name="src" value="." />
 	<path id="libPath">
@@ -17,13 +18,20 @@
 	</path>
 
+	<!-- DÃ©ploiement de l'archive -->
+	<target name="deploy" depends="war">
+		<!--<delete dir="${tomcat}/webapps/${app.name}"/>-->
+		<!--<unjar src="${dist}/${app.name}.war" dest="${tomcat}/webapps/${app.name}"/>-->
+        <copy todir="${tomcat}/webapps" includeEmptyDirs="no">
+            <fileset file="${dist}/${app.name}.war"/>
+        </copy>
+	</target>
+
 	<target name="war" depends="compile">
-		<war destfile="../../../${app.name}.war" webxml="../web.xml">
+		<war destfile="${dist}/${app.name}.war" webxml="../web.xml">
 			<zipfileset dir="../../" includes="**/*" prefix="" excludes=".tomcatplugin .classpath .project"/>
-			<lib dir="${lib}">
-				<exclude name="servlet-api.jar" />
-				<exclude name="gnujaxp.jar" />
+			<!--lib dir="${lib}">
 				<exclude name="xercesImpl.jar" />
 			</lib>
-			<classes dir="${build}" />
+			<classes dir="${build}" /-->
 		</war>
 	</target>
@@ -38,5 +46,4 @@
 			<classpath refid="libPath" />
 		</javac>
-
 	</target>
 </project>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring.xml	(revision 70)
@@ -7,11 +7,11 @@
 
 <beans>
-     
-   <bean id="urlbean" class="org.medias.eccad.presentation.bean.URLBeanValue">
-   		<property name="url_home"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1218</value></property> <!-- l'url home d'eccad -->
-   		<property name="url_products"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1228</value></property>
-   		<property name="url_tools"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1235</value></property>
-   		<property name="url_manual"><value>http://ether.ipsl.jussieu.fr/etherTypo/fileadmin/files/ECCAD/doc/Eccad_users_manual.pdf</value></property>
-   </bean>
+
+	<bean id="urlbean" class="org.medias.eccad.presentation.bean.URLBeanValue">
+		<property name="url_home"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1218</value></property>
+		<property name="url_products"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1228</value></property>
+		<property name="url_tools"><value>http://ether.ipsl.jussieu.fr/etherTypo/?id=1226</value></property>
+		<property name="url_manual"><value>http://ether.ipsl.jussieu.fr/etherTypo/fileadmin/files/ECCAD/doc/Eccad_users_manual.pdf</value></property>
+	</bean>
    
    <!-- Information extracteur -->
@@ -24,9 +24,9 @@
    <!-- Information Connexion jdbc -->
    <bean id="infoConnect" class="org.medias.eccad.persistance.InfoConnectBean">
-   		<property name="db_url"><value> eccad.ipsl.jussieu.fr </value></property>
-   		<property name="db_name"><value> ECCAD3FINAL </value></property>
+   		<property name="db_url"><value>eccad.ipsl.jussieu.fr</value></property>
+   		<property name="db_name"><value>ECCAD3FINAL</value></property>
 		<property name="db_port"><value>5432</value></property>
-		<property name="db_login"><value>eccad </value></property>
-		<property name="db_passwd"><value>  </value></property>
+		<property name="db_login"><value>eccad</value></property>
+		<property name="db_passwd"><value></value></property>
    </bean>
    
@@ -44,5 +44,5 @@
 		<property name="sgbd"><ref local="sgbd"/></property>
 	</bean>
-	
+
 	<bean id="catParametreDAO" class="org.medias.eccad.persistance.jdbc.CatParametreDAOjdbc">
 		<property name="sgbd"><ref local="sgbd"/></property>
@@ -50,4 +50,12 @@
 	
 	<bean id="parametreDAO" class="org.medias.eccad.persistance.jdbc.ParametreDAOjdbc">
+		<property name="sgbd"><ref local="sgbd"/></property>
+	</bean>
+
+	<bean id="secteurDAO" class="org.medias.eccad.persistance.jdbc.SecteurDAOjdbc">
+		<property name="sgbd"><ref local="sgbd"/></property>
+	</bean>
+
+	<bean id="rcpDAO" class="org.medias.eccad.persistance.jdbc.RcpDAOjdbc">
 		<property name="sgbd"><ref local="sgbd"/></property>
 	</bean>
@@ -71,26 +79,29 @@
 	</bean>
 	
+	<bean id="classDistributionTabDAO" class="org.medias.eccad.persistance.jdbc.ClassDistributionTabDAOjdbc">
+		<property name="sgbd"><ref local="sgbd"/></property>
+	</bean>
+
 	<bean id="xmlDAO" class="org.medias.eccad.persistance.hibernate.XmlDAOhibernate">
 	</bean>
 
 	<!-- fin info jdbc -->
-	
+
 	<!-- Generation des rasters -->
-   <bean id="worldfile" class="org.medias.eccad.metier.generationRaster.GenerateurWorldFile" singleton="false">
-   		<property name="pixelX"><value>-180</value></property>
- 	   	<property name="pixelY"><value>90</value></property>
-   </bean>
-   <bean id="colormap" class="org.medias.eccad.metier.generationRaster.colorMap.ColorMappingIntervalle" singleton="false">
-   </bean>
-   <!-- fin generation des rasters -->
+	<bean id="worldfile" class="org.medias.eccad.metier.generationRaster.GenerateurWorldFile">
+		<property name="pixelX"><value>-180</value></property>
+		<property name="pixelY"><value>90</value></property>
+	</bean>
+	<bean id="colormap" class="org.medias.eccad.metier.generationRaster.colorMap.ColorMappingIntervalle" singleton="false">
+	</bean>
+	<!-- fin generation des rasters -->
    
    <!-- Gestion des visualisation et des traducteurs associés -->
    <bean id="traducteur_temporel" class="org.medias.eccad.metier.traducteur.TraducteurVisuTemporel"/>
    <bean id="traducteur_multiplan" class="org.medias.eccad.metier.traducteur.TraducteurVisuMultiplan"/>
-   <bean id="traducteur_facteur" class="org.medias.eccad.metier.traducteur.TraducteurVisuTemporel"/>
-   
+
    <bean id="monoplan" class="org.medias.eccad.modele.Visualisation">
 	   	<property name="page_jsp"><value>./visualisation/classe.jsp</value></property>
-   		<property name="traducteur"><value>traducteur_temporel</value></property>
+   		<property name="traducteur"><value>traducteur_multiplan</value></property>
    </bean>
    
@@ -104,11 +115,6 @@
    		<property name="traducteur"><value>traducteur_temporel</value></property>
   </bean>
-  
-  <bean id="facteur" class="org.medias.eccad.modele.Visualisation">
-   		<property name="page_jsp"><value>./visualisation/temporel.jsp</value></property>
-   		<property name="traducteur"><value>traducteur_facteur</value></property>
-  </bean>
-  
+
    <!-- Fin de la gestion des visualisations -->
-   
+
 </beans>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring.xml.template
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring.xml.template	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring.xml.template	(revision 70)
@@ -26,5 +26,5 @@
    <!-- fin generation des rasters -->
    
-   <!-- Gestion des visualisation et des traducteurs associés -->
+   <!-- Gestion des visualisation et des traducteurs associï¿œs -->
    <bean id="traducteur_temporel" class="org.medias.eccad.metier.traducteur.TraducteurVisuTemporel"/>
    <bean id="traducteur_multiplan" class="org.medias.eccad.metier.traducteur.TraducteurVisuMultiplan"/>
@@ -39,10 +39,10 @@
    		<property name="traducteur"><value>traducteur_multiplan</value></property>
   </bean>
-  
+
    <bean id="temporal" class="org.medias.eccad.modele.Visualisation">
    		<property name="page_jsp"><value>./visualisation/temporel.jsp</value></property>
    		<property name="traducteur"><value>traducteur_temporel</value></property>
   </bean>
-  
+
    <!-- Fin de la gestion des visualisations -->
    
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring_test.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring_test.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/eccad_spring_test.xml	(revision 70)
@@ -68,4 +68,8 @@
 	</bean>
 	
+	<bean id="classDistributionTabDAO" class="org.medias.eccad.persistance.jdbc.ClassDistributionTabDAOjdbc">
+		<property name="sgbd"><ref local="sgbd"/></property>
+	</bean>
+	
 	<bean id="xmlDAO" class="org.medias.eccad.persistance.hibernate.XmlDAOhibernate">
 	</bean>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/hibernate.cfg.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/hibernate.cfg.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/hibernate.cfg.xml	(revision 70)
@@ -8,5 +8,5 @@
         <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
 <!--    <property name="hibernate.connection.password">www001</property> -->
-        <property name="hibernate.connection.url"> jdbc:postgresql://eccad.ipsl.jussieu.fr:5432/ECCAD3FINAL</property>
+        <property name="hibernate.connection.url">jdbc:postgresql://eccad.ipsl.jussieu.fr:5432/ECCAD3FINAL</property>
         <property name="hibernate.connection.username">eccad</property>
         <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
@@ -21,32 +21,29 @@
         
         
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fichier.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ColorIndex.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Lienorganisme.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Categorieparametre.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Code.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Produit.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Codification.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Color.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Unite.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ColorIndex.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Colormap.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Concerne.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Contact.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Domaine.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Contact.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fichier.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fournit.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Grille.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Lienpersonne.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ParamColor.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Parametre.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Personne.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Produit.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/References.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Requete.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Typecodification.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Colormap.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Categorieparametre.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ParamColor.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Personne.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/References.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Grille.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Concerne.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Sequence.hbm.xml" />
-<!-- >        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Ceoslevel.hbm.xml" />-->
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fournit.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Lienpersonne.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Typeproduit.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Parametre.hbm.xml" />
+        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Unite.hbm.xml" />
     </session-factory>
 </hibernate-configuration>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/hibernate.cfg.xml.template
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/hibernate.cfg.xml.template	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/hibernate.cfg.xml.template	(revision 70)
@@ -23,5 +23,4 @@
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fichier.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/ColorIndex.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Lienorganisme.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Code.hbm.xml" />
@@ -43,6 +42,4 @@
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Grille.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Concerne.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Sequence.hbm.xml" />
-        <mapping resource="org/medias/eccad/persistance/hibernate/domaine/CeosLoggerPerso.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Fournit.hbm.xml" />
         <mapping resource="org/medias/eccad/persistance/hibernate/domaine/Lienpersonne.hbm.xml" />
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/CharactereHelper.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/CharactereHelper.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/CharactereHelper.java	(revision 70)
@@ -10,5 +10,5 @@
 		try {
 			 temp = valeur.getBytes(format);
-		} catch (UnsupportedEncodingException e) {	}
+		} catch (UnsupportedEncodingException e) {e.printStackTrace();	}
 		
 		if (temp != null)
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/InfoConfigVisu.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/InfoConfigVisu.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/InfoConfigVisu.java	(revision 70)
@@ -5,5 +5,4 @@
 
 import org.medias.eccad.Lanceur;
-import org.medias.eccad.persistance.PropertiesDatabase;
 
 public class InfoConfigVisu {
@@ -17,13 +16,13 @@
 
 	private static void init() {
-		LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement fichier de properties");
+//		LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement fichier de properties");
 		String fichierProp = Lanceur.class.getResource("").getPath() + "/../../../../../propriete/serveur.properties";
 		fichierProp.replaceAll("%20", " ");
 		Properties prop = new Properties();
 		try {
-			LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement de : " + fichierProp);
+//			LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement de : " + fichierProp);
 			prop.load(new FileInputStream(fichierProp));
 		} catch (Exception e) {
-			LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.ERROR, "impossible de charger le fichier de properties valeur par dÃ©faut mise en place", e);
+			LoggerPerso.log(InfoConfigVisu.class, LoggerPerso.ERROR, "impossible de charger le fichier de properties valeur par dÃ©faut mise en place", e);
 			prop = null;
 		}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/LoggerPerso.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/LoggerPerso.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/LoggerPerso.java	(revision 70)
@@ -12,10 +12,10 @@
 	public static int INFO = 3;
 	
-	public static void log(Class appelant, int level, Object message) {
+	public static void log(Class<?> appelant, int level, Object message) {
 		log = Logger.getLogger(appelant);
 		log.log(getPriority(level), message);
 	}
 	
-	public static void log(Class appelant, int level, Object message, Exception e) {
+	public static void log(Class<?> appelant, int level, Object message, Exception e) {
 		log = Logger.getLogger(appelant);
 		log.log(getPriority(level), message, e);
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/XmlHelper.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/XmlHelper.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/helpers/XmlHelper.java	(revision 70)
@@ -63,5 +63,5 @@
 	}
 	
-	public static String listToString(String nom, Set liste) {
+	public static String listToString(String nom, Set<?> liste) {
 		String retour = new String();
 		
@@ -87,5 +87,5 @@
 	 * @return
 	 */
-	public static String listToString(String nom, Set liste, int index) {
+	public static String listToString(String nom, Set<?> liste, int index) {
 		String retour = new String();
 		
@@ -93,5 +93,5 @@
 			return "";
 		
-		Iterator<Object> ite = liste.iterator();
+		Iterator<?> ite = liste.iterator();
 		retour += ite.next().toString();
 		
@@ -101,5 +101,6 @@
 	
 public static Document getXMLtoDocument(InputStream is_xml, String identifiant) {
-		
+
+//	LoggerPerso.log(XmlHelper.class, LoggerPerso.WARN, "LECTURE XML");
 		Document dom = null;
 		InputSource is = null;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/ServiceMetadata.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/ServiceMetadata.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/ServiceMetadata.java	(revision 70)
@@ -1,5 +1,4 @@
 package org.medias.eccad.metier;
 
-import org.medias.eccad.helpers.CharactereHelper;
 import org.medias.eccad.helpers.SpringBeanFactory;
 import org.medias.eccad.persistance.dao.XmlDAO;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/ServiceMetier.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/ServiceMetier.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/ServiceMetier.java	(revision 70)
@@ -7,5 +7,4 @@
 
 import javax.faces.model.SelectItem;
-
 
 import org.medias.eccad.helpers.LoggerPerso;
@@ -15,4 +14,5 @@
 import org.medias.eccad.persistance.ServicePersistance;
 import org.medias.eccad.persistance.dao.ColorTabDAO;
+import org.medias.eccad.persistance.dao.ClassDistributionTabDAO;
 import org.medias.eccad.persistance.dao.GrilleDAO;
 import org.medias.eccad.persistance.exception.PersistanceException;
@@ -49,16 +49,13 @@
 	
 	public List<SelectItem> getListCatParametre() {
-		// TODO : ici mettre un traducteur plutot ^^LoggerPerso.log(ServiceMetier.class, LoggerPerso.DEBUG, "youhou!!");
+		// TODO : ici mettre un traducteur plutot
 		List<SelectItem> liste_catParam = new ArrayList<SelectItem>();
-		LoggerPerso.log(ServiceMetier.class, LoggerPerso.DEBUG, "youhou!!");
 		List<CatParametre> tempo = spm.getListcatParametre();
 		if (tempo == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de Catparametre vide");
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de Catparametre vide");
 			return new ArrayList<SelectItem>();
 		}
 		
 		for (CatParametre catParametreDAO : tempo) {
-			
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.DEBUG, "youhou!!");
 			liste_catParam.add(new SelectItem(new Long(catParametreDAO.getIdentifiant()), catParametreDAO.getNom()));
 		}
@@ -72,5 +69,5 @@
 		List<Parametre> tempo = spm.getListParametre();
 		if (tempo == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de parametre vide");
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de parametre vide");
 			return new ArrayList<SelectItem>();
 		}
@@ -81,4 +78,20 @@
 		
 		return liste_param;
+	}
+	
+	public List<SelectItem> getListSecteur() {
+		// 
+		List<SelectItem> liste_secteur = new ArrayList<SelectItem>();
+		List<Secteur> tempo = spm.getListSecteur();
+		if (tempo == null) {
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de secteurs vide");
+			return new ArrayList<SelectItem>();
+		}
+		
+		for (Secteur secteurDAO : tempo) {
+			liste_secteur.add(new SelectItem(new Long(secteurDAO.getIdentifiant()), secteurDAO.getNom()));
+		}
+		
+		return liste_secteur;
 	}
 	
@@ -88,15 +101,57 @@
 		List<Parametre> tempo = spm.getListParamByCatParam(catParam);
 		if (tempo == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de parametre vide");
-			return new ArrayList<SelectItem>();
-		}
-		
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de parametre vide");
+			return new ArrayList<SelectItem>();
+		}
+		String nomParam;
 		for (Parametre parametreDAO : tempo) {
 
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.DEBUG, "----------------------->id nom"+parametreDAO.getIdentifiant()+" "+ parametreDAO.getNom());
-			liste_param.add(new SelectItem(new Long(parametreDAO.getIdentifiant()), parametreDAO.getNom()));
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.DEBUG, "----------------------->id nom"+parametreDAO.getIdentifiant()+" "+ parametreDAO.getNom());
+
+			// On enlÃšve du nom du paramÃštre le nom de la catÃ©gorie
+			nomParam = parametreDAO.getNom();
+			if (nomParam.startsWith("biomassBurning_") || nomParam.startsWith("anthro_")
+					|| nomParam.startsWith("biogenic_") || nomParam.startsWith("oceanic_")) {
+				nomParam = nomParam.substring(nomParam.indexOf("_")+1);
+			}
+			liste_param.add(new SelectItem(new Long(parametreDAO.getIdentifiant()), nomParam));
 		}
 		
 		return liste_param;
+	}
+	
+	public List<SelectItem> getListSectorByParam(int param, int prod, int rcp) {
+		// 
+		List<SelectItem> liste_secteur = new ArrayList<SelectItem>();
+		List<Secteur> tempo = spm.getListSectorByParam(param,prod,rcp);
+
+		if (tempo == null) {
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de secteurs vide");
+			return new ArrayList<SelectItem>();
+		}
+		
+		for (Secteur secteurDAO : tempo) {
+
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.DEBUG, "----------------------->id nom"+secteurDAO.getIdentifiant()+" "+ secteurDAO.getNom());
+			liste_secteur.add(new SelectItem(new Long(secteurDAO.getIdentifiant()), secteurDAO.getNom()));
+			
+		}
+		
+		return liste_secteur;
+	}
+
+	public List<SelectItem> getListRcpByParam(int param, int prod, int sector) {
+		List<SelectItem> liste_rcp = new ArrayList<SelectItem>();
+		List<Rcp> tempo = spm.getListRcpByParam(param,prod,sector);
+
+		if (tempo == null) {
+			return new ArrayList<SelectItem>();
+		}
+		
+		for (Rcp rcpDAO : tempo) {
+			liste_rcp.add(new SelectItem(new Long(rcpDAO.getIdentifiant()), rcpDAO.getNom()));
+		}
+		
+		return liste_rcp;
 	}
 	
@@ -105,5 +160,5 @@
 		List<Produit> tempo = spm.getListProductByParam(id_param);
 		if (tempo == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de produit vide");
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de produit vide");
 			return new ArrayList<SelectItem>();
 		}
@@ -123,20 +178,18 @@
 	 * @return une liste d'item de sÃ©lection de type oid - legende de la grille
 	 */
-	public List<SelectItem> getListGrille(long id_produit,long id_parametre, String date_debut, String date_fin) {
-		Produit produit = spm.getProduitByID(id_produit);
-		List<Grille> liste_grille = spm.getListGrille(id_produit, id_parametre, date_debut, date_fin);
+	public List<SelectItem> getListGrille(long id_produit,long id_parametre, long id_secteur, long id_rcp, String date_debut, String date_fin, String deltaDate, Produit produit, String legend) {
+		List<Grille> liste_grille = spm.getListGrille(id_produit, id_parametre, id_secteur, id_rcp, date_debut, date_fin, produit.getNom(), legend, produit.getType());
 		Visualisation visu = spm.getVisuByProduit(produit.getType());
-		
 		TraducteurVisu traducteur = (TraducteurVisu) xmlbean.getBean(visu.getTraducteur());
 		
 		if (liste_grille == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de produit vide");
-			return new ArrayList<SelectItem>();
-		}
-		
-		return traducteur.getListGrille(liste_grille);
-	}
-	
-	public List<SelectItem> getListGrille(long id_produit, String date_debut, String date_fin) {
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de produit vide");
+			return new ArrayList<SelectItem>();
+		}
+		
+		return traducteur.getListGrille(liste_grille,deltaDate,produit.getNom());
+	}
+	
+	public List<SelectItem> getListGrille(long id_produit, String date_debut, String date_fin, String deltaDate) {
 		Produit produit = spm.getProduitByID(id_produit);
 		List<Grille> liste_grille = spm.getListGrille(id_produit, date_debut, date_fin);
@@ -146,16 +199,35 @@
 		
 		if (liste_grille == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de produit vide");
-			return new ArrayList<SelectItem>();
-		}
-		
-		return traducteur.getListGrille(liste_grille);
-	}
-
-	public List<SelectItem> getListMappingColor(long oid) {
+			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de grille vide");
+			return new ArrayList<SelectItem>();
+		}
+		
+		return traducteur.getListGrille(liste_grille,deltaDate, produit.getNom());
+	}
+
+	/**
+	 * Renvoie la liste d'altitudes associÃ©es Ã  la date fournie en paramÃštre
+	 */
+	public List<SelectItem> getListAlt(long id_secteur, String date_debut) {
+		List<String> liste_alt = spm.getListAlt(id_secteur, date_debut);
+		List<SelectItem> liste_altitem = new ArrayList<SelectItem>();
+		if (liste_alt != null) {
+			String nomAlt;
+			for (int num = 0; num < liste_alt.size(); num++) {
+				nomAlt = liste_alt.get(num);
+				if (nomAlt.equals("Sum"))
+					liste_altitem.add(new SelectItem(nomAlt, nomAlt));
+				else
+					liste_altitem.add(new SelectItem(nomAlt, nomAlt+" km"));
+			}
+		}
+		return liste_altitem;
+	}
+	
+	public List<SelectItem> getListMappingColor() {
 		ColorTabDAO colortabDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO");
 		List<ColorMap> liste_color = null;
 		try {
-			 liste_color = colortabDAO.getListColorTabByGrille(oid);
+			 liste_color = colortabDAO.getListColorTabByGrille();
 		}
 		catch (PersistanceException e) {
@@ -165,5 +237,5 @@
 		
 		if (liste_color == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "pas de colormap pour la grille :/");
+			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de colormap vide");
 			return new ArrayList<SelectItem>();
 		}
@@ -177,5 +249,73 @@
 	}
 	
-	public List<SelectItem> getListColorDynamique() {
+	public List<SelectItem> getListClassDistribution(long param_id) {
+		ClassDistributionTabDAO classDistributionTabDAO = (ClassDistributionTabDAO) xmlbean.getBean("classDistributionTabDAO");
+		List<ClassDistribution> liste_distrib = null;
+		try {
+			liste_distrib = classDistributionTabDAO.getListClassMap(param_id);
+		}
+		catch (PersistanceException e) {
+			e.printStackTrace();
+			liste_distrib = null;
+		}
+		
+		if (liste_distrib == null) {
+			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de class level vide");
+			return new ArrayList<SelectItem>();
+		}
+		
+		List<SelectItem> liste_select = new LinkedList<SelectItem>();
+		for (ClassDistribution classdistrib : liste_distrib) {
+			liste_select.add(new SelectItem(new Long(classdistrib.getIdentifiant()), classdistrib.getNom()));
+//			long tt=new Long(classdistrib.getIdentifiant());
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "ADD LISTE DISTRIB = "+tt);
+		}
+		
+		return liste_select;
+	}
+	
+	/**
+	 * Renvoie la liste des rÃ©gions
+	 */
+	public List<SelectItem> getListRegion() {
+		List<Grille> liste_reg = spm.getListMasques("region_codif");
+		List<SelectItem> liste_regitem = new ArrayList<SelectItem>();
+		if (liste_reg != null) {
+			String nomReg;
+			long idGrille;
+			for (int num = 0; num < liste_reg.size(); num++) {
+				nomReg = liste_reg.get(num).getLegend();
+				idGrille = liste_reg.get(num).getId_grille();
+				if (nomReg.equals("Water"))
+					liste_regitem.add(new SelectItem(idGrille, "All regions"));
+				else
+					liste_regitem.add(new SelectItem(idGrille, nomReg));
+			}
+		}
+		return liste_regitem;
+	}
+
+	/**
+	 * Renvoie la liste des pays
+	 */
+	public List<SelectItem> getListCountry() {
+		List<Grille> liste_co = spm.getListMasques("GPW3country_codif");
+		List<SelectItem> liste_coitem = new ArrayList<SelectItem>();
+		if (liste_co != null) {
+			String nomCo;
+			long idGrille;
+			for (int num = 0; num < liste_co.size(); num++) {
+				nomCo = liste_co.get(num).getLegend();
+				idGrille = liste_co.get(num).getId_grille();
+				if (nomCo.equals("Water"))
+					liste_coitem.add(new SelectItem(idGrille, "All countries"));
+				else
+					liste_coitem.add(new SelectItem(idGrille, nomCo));
+			}
+		}
+		return liste_coitem;
+	}
+	
+/*	public List<SelectItem> getListColorDynamique() {
 		ColorTabDAO colortabDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO");
 		List<ColorMap> liste_color = null;
@@ -189,5 +329,5 @@
 		
 		if (liste_color == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "pas de colormap pour la grille :/");
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "pas de colormap pour la grille :/");
 			return new ArrayList<SelectItem>();
 		}
@@ -199,10 +339,10 @@
 	
 		return liste_select;
-	}
-	
-	public List<SelectItem> getListColorDynamique(boolean lineaire) {
-		if (!lineaire)
+	}*/
+	
+/*	public List<SelectItem> getListColorDynamique(boolean lineaire) {
+		if (!lineaire) {
 			return getListColorDynamique();
-		
+		}
 		ColorTabDAO colortabDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO");
 		List<ColorMap> liste_color = null;
@@ -216,5 +356,5 @@
 		
 		if (liste_color == null) {
-			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "pas de colormap pour la grille :/");
+//			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "pas de colormap pour la grille :/");
 			return new ArrayList<SelectItem>();
 		}
@@ -222,13 +362,48 @@
 		List<SelectItem> liste_select = new LinkedList<SelectItem>();
 		for (ColorMap colormap : liste_color) {
-			if (colormap.getNom().equalsIgnoreCase("logarithm"))
+//			if (colormap.getNom().equalsIgnoreCase("logarithm"))
 				liste_select.add(new SelectItem(new Long(colormap.getIdentifiant()), colormap.getNom()));
 		}
 	
 		return liste_select;
-	}
-	
-	/**
-	 * 
+	}*/
+	
+	public List<SelectItem> getListClassDynamique() {
+		
+		ClassDistributionTabDAO classtabDAO = (ClassDistributionTabDAO) xmlbean.getBean("classDistributionTabDAO");
+		List<ClassDistribution> liste_distrib = null;
+		try {
+			 liste_distrib = classtabDAO.getListClassDisDynamique();
+		}
+		catch (PersistanceException e) {
+			e.printStackTrace();
+			liste_distrib = null;
+		}
+		
+		if (liste_distrib == null) {
+			LoggerPerso.log(ServiceMetier.class, LoggerPerso.WARN, "liste de class level vide");
+			return new ArrayList<SelectItem>();
+		}
+		
+		List<SelectItem> liste_select = new LinkedList<SelectItem>();
+		for (ClassDistribution classdis : liste_distrib) {
+				liste_select.add(new SelectItem(new Long(classdis.getIdentifiant()), classdis.getNom()));
+		}
+	
+		return liste_select;
+	}
+	
+	public Secteur getSecteurById(int id_secteur) {
+		Secteur secteur = spm.getSecteurByID(id_secteur);
+		return secteur;
+	}
+
+	public Rcp getRcpById(int id_rcp) {
+		Rcp rcp = spm.getRcpByID(id_rcp);
+		return rcp;
+	}
+	
+	/**
+	 *
 	 * @param id_produit
 	 * @return
@@ -236,13 +411,6 @@
 	public Produit getProduitById(int id_produit) {
 		Produit produit = spm.getProduitByID(id_produit);
-		LoggerPerso.log(ServiceMetier.class, LoggerPerso.DEBUG, "getProduitById::nom::"+ produit.getNom() + "::date::" + produit.getBeginDate());
 		return produit;
 	}
-	
-	/*public Produit getProduitById(long id_produit) {
-		Produit produit = spm.getProduitByID(id_produit);
-		LoggerPerso.log(ServiceMetier.class, LoggerPerso.DEBUG, "getProduitById::nom::"+ produit.getNom() + "::date::" + produit.getBeginDate());
-		return produit;
-	}*/
 	
 	public Grille getGrilleById(Long id_grille) {
@@ -252,5 +420,5 @@
 			grille = grilleDAO.getGrille(id_grille);
 		} catch (PersistanceException e) {
-		LoggerPerso.log(ServiceMetier.class, LoggerPerso.ERROR, "erreur getgrillebyid");
+			LoggerPerso.log(ServiceMetier.class, LoggerPerso.ERROR, "erreur getgrillebyid");
 			return null;
 		}
@@ -271,4 +439,16 @@
 		return spm.getVisuByProduit(type_produit);
 	}
+
+	public String getTypeCodif(long idGrille) {
+		return spm.getTypeCodif(idGrille);
+	}
+
+	public ArrayList<String> getDates(long id_produit,long id_parametre, long id_secteur, long id_rcp, String nomprod) {
+		ArrayList<String> dates = spm.getDates(id_produit,id_parametre, id_secteur, id_rcp, nomprod);
+		if (dates == null) {
+			return new ArrayList<String>();
+		}
+		return dates;
+	}
 }
 	
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/dessinCarte/CarteMapScript.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/dessinCarte/CarteMapScript.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/dessinCarte/CarteMapScript.java	(revision 70)
@@ -2,42 +2,24 @@
 
 import java.awt.Point;
-import java.beans.FeatureDescriptor;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.PrintStream;
 import java.util.Iterator;
 import java.util.List;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.modele.Zone;
 
-import edu.umn.gis.mapscript.DBFInfo;
-import edu.umn.gis.mapscript.MS_FONT_TYPE;
-//import edu.umn.gis.mapscript.MS_LABEL_POSITIONS;
 import edu.umn.gis.mapscript.MS_LAYER_TYPE;
-import edu.umn.gis.mapscript.MS_SHAPE_TYPE;
-import edu.umn.gis.mapscript.MS_UNITS;
-import edu.umn.gis.mapscript.SWIGTYPE_p_FILE;
-import edu.umn.gis.mapscript.SWIGTYPE_p_int;
 import edu.umn.gis.mapscript.classObj;
 import edu.umn.gis.mapscript.colorObj;
 import edu.umn.gis.mapscript.imageObj;
-import edu.umn.gis.mapscript.labelObj;
 import edu.umn.gis.mapscript.layerObj;
-import edu.umn.gis.mapscript.lineObj;
 import edu.umn.gis.mapscript.mapObj;
 import edu.umn.gis.mapscript.pointObj;
-import edu.umn.gis.mapscript.projectionObj;
 import edu.umn.gis.mapscript.rectObj;
 import edu.umn.gis.mapscript.referenceMapObj;
-import edu.umn.gis.mapscript.shapeObj;
 import edu.umn.gis.mapscript.styleObj;
 // faire la fonction dans spm qui retourne une Zone
 /**
- * Classe permettant la manipulation des objets issus de MapScript. Son but est de rendre possible la crÃ¯Â¿Âœation de l'image d'une carte suivant des coordonnÃ¯Â¿Âœes prÃ¯Â¿Âœcises et en fonction des couches Ã¯Â¿Âœ afficher.
+ * Classe permettant la manipulation des objets issus de MapScript. Son but est de rendre possible la crÃ©ation de l'image d'une carte suivant des coordonnÃ©es prÃ©cises et en fonction des couches Ã  afficher.
  * REMARQUE : CLASSE DEPRECIE, CODE A MODIFIER CAR FONCTIONNE SEULEMENT POUR DEGRES DECIMAUX
  *          : S'INSPIRER DE LA CLASSE CARTEMAPSERVER
@@ -56,17 +38,17 @@
 	
 	/**
-	 * Constructeur par dÃ¯Â¿Âœfaut de la CarteMapScript
-	 * @param nomCarte nom du fichier .map dÃ¯Â¿Âœcrivant les informations spatiales
-	 * @param path chemin d'accÃ¯Â¿Âœs au fichier .map ex: c:\mapFile\ ou /mapFile/
+	 * Constructeur par dÃ©faut de la CarteMapScript
+	 * @param nomCarte nom du fichier .map dÃ©crivant les informations spatiales
+	 * @param path chemin d'accÃšs au fichier .map ex: c:\mapFile\ ou /mapFile/
 	 */
 	public CarteMapScript(String nomCarte, String path) {
 		map = new mapObj(path + nomCarte);
-
 		if (map == null)
 			throw new RuntimeException("Erreur initialisation map: Class CarteMapScript::CarteMapScript()");
 		nom = nomCarte;
-		//map.setExtent(-180, -90, 180, 90);
-		//map.setSize(720, 360);
-
+//		map.setUnits(MS_UNITS.MS_DD);
+//		map.setExtent(-180, -90, 180, 90);
+//		map.setSize(720, 360);
+//		map.setResolution(0.5);
 
 	} // end CarteMapScript()
@@ -93,13 +75,13 @@
 	
 	/**
-	 * Positionne les couches Ã¯Â¿Âœ afficher sur la carte
-	 * @param couches liste des couches qui devront apparaÃ¯Â¿Âœtre
-	 */
-	public void choixCouches(List couches) {
+	 * Positionne les couches Ã  afficher sur la carte
+	 * @param couches liste des couches qui devront apparaÃ®tre
+	 */
+	public void choixCouches(List<String> couches) {
 		/*** variables ***/
 		int nbr_layer = map.getNumlayers();
 		layerObj layer;
 
-		/*** parcourt des couches et mise Ã¯Â¿Âœ OFF de leur statut ***/
+		/*** parcourt des couches et mise Ã  OFF de leur statut ***/
 		for (int i=0; i<nbr_layer; i++)
 		{
@@ -111,6 +93,6 @@
 		
 		
-		Iterator i_couches = couches.iterator();
-		/*** parcourt des couches Ã¯Â¿Âœ afficher ***/
+		Iterator<String> i_couches = couches.iterator();
+		/*** parcourt des couches Ã  afficher ***/
 		while (i_couches.hasNext()) {
 			layer = map.getLayerByName((String) i_couches.next());
@@ -118,25 +100,24 @@
 				layer.setStatus(1);
 			else
-				System.err.println("couche non detectÃ¯Â¿Âœe dans la map\nCarte.java:choixCouches:");
+				System.err.println("couche non detectÃ©e dans la map\nCarte.java:choixCouches:");
 		} // end while
 	}
 	
 	/**
-	 * Cree l'image de la carte dans le dossier indiquÃ¯Â¿Âœ
-	 * @param path dossier oÃ¯Â¿Âœ sera crÃ¯Â¿ÂœÃ¯Â¿Âœ l'image
+	 * Cree l'image de la carte dans le dossier indiquÃ©
+	 * @param path dossier oÃ¹ sera crÃ©Ã© l'image
 	 * @param session session de l'utilisateur sans lui nom = 'img[map]defaut.png'
 	 * @return le nom de l'image
 	 */
 	public String dessinerCarte(String path, String session) {
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "dessin cartera");
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "dessin carte, PATH="+path+" SESSION="+session);
 		/**** variables ****/
 		imageObj img = map.draw();
-		String imageNom;
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "dessin carte1");
+		fixExtendMap();
 		/**** gestion erreurs ****/
 		if (img == null)
 			throw new RuntimeException("Erreur crÃ©ation image: CarteMapScript::dessinerCarte");
-		
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "dessin carte2");
+
+		String imageNom;
 		/**** sauvegarde ****/
 		if (session==null)
@@ -145,13 +126,13 @@
 			imageNom =  session + ".png";
 		img.save(path + imageNom, map);
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "fin dessin carte");
 		return imageNom;
-	} // end dessinerCarte()
-	
+	}
+
 	public String dessinerCarte(String path, int identifiant) {
 		/**** variables ****/
 		imageObj img = map.draw();
+		fixExtendMap();
 		String imageNom;
-		
+
 		/**** gestion erreurs ****/
 		if (img == null)
@@ -163,17 +144,17 @@
 			imageNom =  "img_" + identifiant + ".png";
 		img.save(path + imageNom, map);
-		
+
 		return imageNom;
 	} // end dessinerCarte()
-	
+
 	public void dessinerCarte(OutputStream os) {
 		imageObj img = map.draw();
-		
+
 		/**** gestion erreurs ****/
 		if (img == null)
 			throw new RuntimeException("Erreur crÃ©ation image: CarteMapScript::dessinerCarte");
-		
+
 		byte[] b = img.getBytes();
-		
+
 		try {
 			os.write(b);
@@ -184,21 +165,21 @@
 	}
 	/**
-	 * Permet de recentrer la carte sur un point donnÃ¯Â¿Âœ avec un coefficient donnÃ¯Â¿Âœ
+	 * Permet de recentrer la carte sur un point donnÃ© avec un coefficient donnÃ©
 	 * @param coef coefficient du zoom
-	 * @param clic point qui servira de nouveau centre Ã¯Â¿Âœ l'image
+	 * @param clic point qui servira de nouveau centre Ã  l'image
 	 */
 	public void definirZoom(double coef, Point clic, double resol) {
 		// TODO: tester ici
-		// passage du coef Ã¯Â¿Âœ 1 pour Ã¯Â¿Âœviter une coef nul lors du dessin de la carte
+		// passage du coef Ã  1 pour Ã©viter un coef nul lors du dessin de la carte
 		int icoef;
-		if (coef==0) 
-			icoef = 1;
-		if (coef<0)
-			icoef = (int) -(1/coef);
-		else
+//		if (coef==0) 
+//			icoef = 1;
+//		if (coef<0)
+//			icoef = (int) -(1/coef);
+//		else
 			icoef = (int) coef;
 		
 		pointObj my_clic;
-		
+//System.out.println("clic="+clic.x+","+clic.y);
 		// si clic en dehors de l'image on centre le clic
 		if (clic.x !=0 && clic.y != 0)
@@ -207,43 +188,138 @@
 			my_clic = new pointObj(map.getWidth()/2, map.getHeight()/2, 0);
 		
-		
-		Zone zonCouverte = getZoneCouverte();
-		
-		int coeff = (int) ((360 / ( zonCouverte.getEastbc() - zonCouverte.getWestbc() ) )*(1/resol));
-		
-		//blocage du zoom a 8
-		if ( coeff<16 )
+//		Zone zonCouverte = getZoneCouverte();
+
+//		int coeff = (int) ((360 / ( zonCouverte.getEastbc() - zonCouverte.getWestbc() ) )*(1/resol));
+//		Long coefLong = new Long(Math.round((360 / ( zonCouverte.getEastbc() - zonCouverte.getWestbc() ) )*(1/resol)));
+//		int coeff = coefLong.intValue();
+		//blocage du zoom Ã  un certain palier
+		if ( getExtent().getMaxx()-getExtent().getMinx() >= 6)
 		{
-			double maxX = map.getExtent().getMaxx();
-			int diffX = (int)(map.getExtent().getMaxx() -map.getExtent().getMinx());
-			double minX = map.getExtent().getMaxx() - diffX;
-		
-		
-			double maxY = map.getExtent().getMaxy();
-			int diffY = (int)(map.getExtent().getMaxy() -map.getExtent().getMiny());
-			double minY = map.getExtent().getMaxy() - diffY;
-		
-			map.getExtent().setMaxx(maxX);
-			map.getExtent().setMinx(minX);
-			map.getExtent().setMaxy(maxY);
-			map.getExtent().setMiny(minY);
-		
-			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++___________coeff "+ coeff);
-
-			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++getMaxx "+ map.getExtent().getMaxx());
-			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++getMinx "+ map.getExtent().getMinx());
-			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++getMaxy "+ map.getExtent().getMaxy());
-			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++getMiny "+ map.getExtent().getMiny());
-
-			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++ getWidth"+ ((int)(map.getWidth() / coeff))*coeff);
-			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++ getHeight"+ ((int)(map.getHeight() / coeff))*coeff);
-		
-			// mise Ã¯Â¿Âœ jour du zoom Ã¯Â¿Âœ null c'est le maxExtend mais son rÃ¯Â¿Âœle :/ ?
-	
-			map.zoomPoint(icoef, my_clic, ((int)(map.getWidth() / coeff))*coeff , ((int)(map.getHeight() / coeff))*coeff, map.getExtent(), null);
-		}
+//			double maxX = map.getExtent().getMaxx();
+//			int diffX = (int)(map.getExtent().getMaxx() -map.getExtent().getMinx());
+//			double minX = map.getExtent().getMaxx() - diffX;
+
+//			double maxY = map.getExtent().getMaxy();
+//			int diffY = (int)(map.getExtent().getMaxy() -map.getExtent().getMiny());
+//			double minY = map.getExtent().getMaxy() - diffY;
+
+//			map.getExtent().setMaxx(maxX);
+//			map.getExtent().setMinx(minX);
+//			map.getExtent().setMaxy(maxY);
+//			map.getExtent().setMiny(minY);
+//			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++clic="+ clic.x+","+clic.y);
+//			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++getMaxx="+ getExtent().getMaxx());
+//			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++getMinx="+ getExtent().getMinx());
+//			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++getMaxy="+ getExtent().getMaxy());
+//			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++getMiny="+ getExtent().getMiny());
+//			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++getWidth="+ map.getWidth()+", calc="+((int)(map.getWidth() / coeff))*coeff);
+//			LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++getHeight="+ map.getHeight()+", calc="+((int)(map.getHeight() / coeff))*coeff);
+
+			// mise Ã  jour du zoom Ã  null c'est le maxExtend mais son rÃŽle :/ ?
+//			rectObj maxExtend = new rectObj(-180, -90, 180, 90, 0);
+//			map.zoomPoint(icoef, my_clic, ((int)(map.getWidth() / coeff))*coeff , ((int)(map.getHeight() / coeff))*coeff, map.getExtent(), null);
+			rectObj orig = new rectObj(getExtent().getMinx(), getExtent().getMiny(), getExtent().getMaxx(), getExtent().getMaxy(), 0);
+			map.zoomPoint(icoef, my_clic, map.getWidth(), map.getHeight(), getExtent(), null);
+//			map.zoomRectangle(zoomExtend, map.getWidth(), map.getHeight(), getExtent(), null);
+			fixExtendZoom(my_clic,orig,resol);
+		}
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "APRES++++getMaxx="+ getExtent().getMaxx());
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "APRES++++getMinx="+ getExtent().getMinx());
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "APRES++++getMaxy="+ getExtent().getMaxy());
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "APRES++++getMiny="+ getExtent().getMiny());
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "APRES++++getWidth="+ map.getWidth()+", calc="+((int)(map.getWidth() / coeff))*coeff);
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "APRES++++getHeight="+ map.getHeight()+", calc="+((int)(map.getHeight() / coeff))*coeff);
 		//map.zoomPoint(icoef, my_clic, 80 , 40, map.getExtent(), null);
-		
+
 	} // end definirZoom()
+
+
+	/**
+	 * Une erreur dans Mapserver ne permet pas de restituer les limites de la carte de faÃ§on exacte,
+	 * notamment en longitude, il est donc nÃ©cessaire de recalculer les bonnes valeurs
+	 */
+	public void fixExtendMap() {
+//		if (map.getExtent().getMaxx() > 180) map.getExtent().setMaxx(180);
+//		if (map.getExtent().getMinx() < -180) map.getExtent().setMinx(-180);
+//		if (map.getExtent().getMaxy() > 90) map.getExtent().setMaxy(90);
+//		if (map.getExtent().getMiny() < -90) map.getExtent().setMiny(-90);
+		// arrondi au dixiÃšme
+		double maxx = map.getExtent().getMaxx();
+		maxx = (double)Math.round(maxx*10)/10;
+		double minx = map.getExtent().getMinx();
+		minx = (double)Math.round(minx*10)/10;
+		// cas particulier lors d'un premier affichage
+		if (maxx == 180.3) maxx = 180;
+		if (minx == -180.3) minx = -180;
+		// arrondi Ã  0.5 prÃšs
+		maxx = (double)Math.round(maxx*2)/2;
+		minx = (double)Math.round(minx*2)/2;
+		map.getExtent().setMaxx(maxx);
+		map.getExtent().setMinx(minx);
+	}
+	
+	/**
+	 * Lors d'un zoom, les coordonnÃ©es des extrÃ©mitÃ©s de la carte sont mal recalculÃ©es par Mapserver.
+	 * Cette fonction permet donc de recalculer manuellement les nouvelles extrÃ©mitÃ©s en fonction:
+	 * - des coordonnÃ©es du point sur lequel on a cliquÃ©
+	 * - des coordonnÃ©es des extrÃ©mitÃ©s de la carte originale
+	 * - de la rÃ©solution de la carte
+	 */
+	public void fixExtendZoom(pointObj clic, rectObj orig,double resol) {
+		double largeur = orig.getMaxx()-orig.getMinx();
+		double lon1 = (clic.getX()-1)*largeur;
+		double lon2 = 720 * resol;
+		int xAjuste = 1+(int)Math.floor(lon1/lon2);
+		double hauteur = orig.getMaxy()-orig.getMiny();
+		double lat1 = (clic.getY()-1)*hauteur;
+		double lat2 = 360 * resol;
+		int yAjuste = 1+(int)Math.floor(lat1/lat2);
+//System.out.println("x="+clic.getX()+"->"+xAjuste+", y="+clic.getY()+"->"+yAjuste);
+		rectObj centre = new rectObj(orig.getMinx()+(xAjuste-1)*resol, orig.getMaxy()-yAjuste*resol,
+				orig.getMinx()+xAjuste*resol, orig.getMaxy()-(yAjuste-1)*resol, 0);
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "CENTRE++++getMaxx="+ centre.getMaxx());
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "CENTRE++++getMinx="+ centre.getMinx());
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "CENTRE++++getMaxy="+ centre.getMaxy());
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "CENTRE++++getMiny="+ centre.getMiny());
+		rectObj zoom = getExtent();
+		// ZOOM 1 : largeur/hauteur = 360/180 -> 180/90
+		if (largeur >= 360) {
+			zoom = new rectObj(centre.getMaxx()-90, centre.getMiny()-45,
+					centre.getMaxx()+90, centre.getMiny()+45, 0);
+		}
+		// ZOOM 2 : largeur/hauteur = 180/90 -> 90/45
+		else if (largeur >= 180) {
+			zoom = new rectObj(centre.getMaxx()-45, centre.getMiny()-22,
+					centre.getMaxx()+45, centre.getMiny()+23, 0);
+		}
+		// ZOOM 3 : largeur/hauteur = 90/45 -> 44/22
+		else if (largeur >= 90) {
+			zoom = new rectObj(centre.getMaxx()-22, centre.getMiny()-11,
+					centre.getMaxx()+22, centre.getMiny()+11, 0);
+		}
+		// ZOOM 4 : largeur/hauteur = 44/22 -> 22/11
+		else if (largeur >= 44) {
+			zoom = new rectObj(centre.getMaxx()-11, centre.getMiny()-5,
+					centre.getMaxx()+11, centre.getMiny()+6, 0);
+		}
+		// ZOOM 5 : largeur/hauteur = 22/11 -> 12/6
+		else if (largeur >= 22) {
+			zoom = new rectObj(centre.getMaxx()-6, centre.getMiny()-3,
+					centre.getMaxx()+6, centre.getMiny()+3, 0);
+		}
+		// ZOOM 6 : largeur/hauteur = 12/6 -> 6/3
+		else if (largeur >= 12) {
+			zoom = new rectObj(centre.getMaxx()-3, centre.getMiny()-1,
+					centre.getMaxx()+3, centre.getMiny()+2, 0);
+		}
+		// ZOOM 7 : largeur/hauteur = 6/3 -> 4/2
+		else if (largeur >= 6) {
+			zoom = new rectObj(centre.getMaxx()-2, centre.getMiny()-1,
+					centre.getMaxx()+2, centre.getMiny()+1, 0);
+		}
+		map.setExtent(zoom);
+	}
+	
+	
 	
 	public void modifDataLayer(String nom, String data) {
@@ -257,7 +333,7 @@
 	 */
 	public void deleteAllLayer() {
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "delete all layer");
+//		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "delete all layer");
 		int nbr_layer = map.getNumlayers();
-		/*** parcourt des couches et mise Ã¯Â¿Âœ OFF de leur statut ***/
+		/*** parcourt des couches et mise Ã  OFF de leur statut ***/
 		for (int i=0; i<nbr_layer; i++)
 		{
@@ -267,13 +343,20 @@
 	
 	/**
-	 * Equivalent Ã¯Â¿Âœ choixCouche
-	 */
-	public void doLayerChoice(List layer) {
+	 * Equivalent Ã  choixCouche
+	 */
+	public void doLayerChoice(List<String> layer) {
 		this.choixCouches(layer);
 	}
 	
 	private rectObj getExtent() {
+//		map.getExtent().setMaxx(Math.round(map.getExtent().getMaxx()));
+//		map.getExtent().setMinx(Math.round(map.getExtent().getMinx()));
+//		map.getExtent().setMaxy(Math.round(map.getExtent().getMaxy()));
+//		map.getExtent().setMiny(Math.round(map.getExtent().getMiny()));
+//		if (map.getExtent().getMaxx() > 180) map.getExtent().setMaxx(180);
+//		if (map.getExtent().getMinx() < -180) map.getExtent().setMinx(-180);
+//		if (map.getExtent().getMaxy() > 90) map.getExtent().setMaxy(90);
+//		if (map.getExtent().getMiny() < -90) map.getExtent().setMiny(-90);
 		return map.getExtent();
-		
 	}
 	
@@ -281,9 +364,8 @@
 	public Zone getZoneCouverte() {
 		rectObj rect = getExtent();
-		
+
 		/*double maxX = map.getExtent().getMaxx();
 		int diffX = (int)(map.getExtent().getMaxx() -map.getExtent().getMinx());
 		double minX = map.getExtent().getMaxx() - diffX;
-		
 		
 		double maxY = map.getExtent().getMaxy();
@@ -296,11 +378,9 @@
 		rect.setMiny(minY);
 		
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++getMaxx "+ rect.getMaxx());
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++getMinx "+ rect.getMinx());
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++getMaxy "+ rect.getMaxy());
-		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "++++++++++++++++++++++++++++++++++++++++getMiny "+ rect.getMiny());*/
-
-
-		
+		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "+++getMaxx "+ rect.getMaxx());
+		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "+++getMinx "+ rect.getMinx());
+		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "+++getMaxy "+ rect.getMaxy());
+		LoggerPerso.log(CarteMapScript.class, LoggerPerso.DEBUG, "+++getMiny "+ rect.getMiny());*/
+
 		Zone zone = new Zone(rect.getMaxy(), rect.getMiny(), rect.getMaxx(), rect.getMinx());
 		return zone;
@@ -308,5 +388,5 @@
 	
 	/**
-	 * Equivalent Ã¯Â¿Âœ dessinerCarte
+	 * Equivalent Ã  dessinerCarte
 	 */
 	public String getMapDraw(String path, String session) {
@@ -315,5 +395,5 @@
 	
 	/**
-	 * Equivalent Ã¯Â¿Âœ definirZoom
+	 * Equivalent Ã  definirZoom
 	 */
 	public void doZoomDefine(double coef, Point clic) {
@@ -323,9 +403,10 @@
 	
 	public void zoneAffiche(double latmax, double latmin, double lonmax, double lonmin) {
-		rectObj rectangle = map.getExtent();
+		rectObj rectangle = getExtent();
 		rectangle.setMaxx(lonmax);
 		rectangle.setMinx(lonmin);
 		rectangle.setMiny(latmin);
 		rectangle.setMaxy(latmax);
+//		System.out.println("zone="+latmax+","+latmin+","+lonmax+","+lonmin);
 		map.setExtent(rectangle);
 	}
@@ -337,5 +418,5 @@
 	 */
 	public void doSelectZone(Point clicMin, Point clicMax) {
-		rectObj rectangle = map.getExtent();
+		rectObj rectangle = getExtent();
 		double longExtX, longExtY; // longueur du rectangle extent
 		double facteurX, facteurY; // facteur multiplicatif (extent/taille image)
@@ -365,11 +446,11 @@
 
 	/**
-	 * Dessine la carte de rÃ¯Â¿ÂœfÃ¯Â¿Âœrence dont le fond de carte est situÃ¯Â¿Âœ dans le path passÃ¯Â¿Âœ en parametre et porte le nom donnÃ¯Â¿Âœ.
+	 * Dessine la carte de rÃ©fÃ©rence dont le fond de carte est situÃ© dans le path passÃ© en parametre et porte le nom donnÃ©.
 	 * La fonction retourne le nom de l'image
 	 * @deprecated utiliser getMapRefDraw(String path, String idImage)
-	 * @param path chemin d'acces Ã¯Â¿Âœ l'image
-	 * @param idImage numÃ¯Â¿Âœro de l'image Ã¯Â¿Âœ crÃ¯Â¿Âœer (utilisÃ¯Â¿Âœ pour crÃ¯Â¿Âœer le nom de l'image)
-	 * @param IMGREF nom de l'image de rÃ¯Â¿ÂœfÃ¯Â¿Âœrence
-	 * @return le nom dÃ¯Â¿Âœfinitif de l'image
+	 * @param path chemin d'acces Ã  l'image
+	 * @param idImage numÃ©ro de l'image Ã  crÃ©er (utilisÃ© pour crÃ©er le nom de l'image)
+	 * @param IMGREF nom de l'image de rÃ©fÃ©rence
+	 * @return le nom dÃ©finitif de l'image
 	 */
 	public String getMapRefDraw(String path, String idImage, String IMGREF) {
@@ -402,5 +483,5 @@
 		/**** gestion erreurs ****/
 		if (img == null)
-			throw new RuntimeException("Erreur crÃ¯Â¿Âœation ref image: CarteMapScript::dessinerCarte");
+			throw new RuntimeException("Erreur crÃ©ation ref image: CarteMapScript::dessinerCarte");
 		img.save(path + imageNom, map);
 		
@@ -409,9 +490,9 @@
 
 	/**
-	 * Dessine la carte de rÃ¯Â¿ÂœfÃ¯Â¿Âœrence dÃ¯Â¿Âœfinie pour la carte. 
+	 * Dessine la carte de rÃ©fÃ©rence dÃ©finie pour la carte. 
 	 * La fonction retourne le nom de l'image
-	 * @param path chemin d'acces Ã¯Â¿Âœ l'image
-	 * @param idImage numÃ¯Â¿Âœro de l'image Ã¯Â¿Âœ crÃ¯Â¿Âœer (utilisÃ¯Â¿Âœ pour crÃ¯Â¿Âœer le nom de l'image)
-	 * @return le nom dÃ¯Â¿Âœfinitif de l'image
+	 * @param path chemin d'acces Ã  l'image
+	 * @param idImage numÃ©ro de l'image Ã  crÃ©er (utilisÃ© pour crÃ©er le nom de l'image)
+	 * @return le nom dÃ©finitif de l'image
 	 */
 		public String getMapRefDraw(String path, String idImage) {
@@ -420,5 +501,5 @@
 		/**** sauvegarde ****/
 		if (refmap == null)
-			System.err.println("MapServer::fichier de reference Ã¯Â¿Âœ la carte non initialise ");
+			System.err.println("MapServer::fichier de reference Ã  la carte non initialise ");
 		
 		if (idImage==null || refmap==null) {
@@ -433,5 +514,5 @@
 		/**** gestion erreurs ****/
 		if (img == null)
-			throw new RuntimeException("Erreur crÃ¯Â¿Âœation ref image: CarteMapScript::dessinerCarte");
+			throw new RuntimeException("Erreur crÃ©ation ref image: CarteMapScript::dessinerCarte");
 		
 		img.save(path + imageNom, map);
@@ -461,4 +542,7 @@
 		couche.setName(name);
 		couche.setData(data);
+//		couche.setExtent(-180, -90, 180, 90);
+//		couche.setSizeunits(MS_UNITS.MS_PIXELS.swigValue());
+//		couche.setUnits(MS_UNITS.MS_DD.swigValue());
 		couche.setType(MS_LAYER_TYPE.MS_LAYER_LINE);
 		couche.setStatus(1);
@@ -477,4 +561,7 @@
 		couche.setName(name);
 		couche.setData(data);
+//		couche.setExtent(-180, -90, 180, 90);
+//		couche.setSizeunits(MS_UNITS.MS_PIXELS.swigValue());
+//		couche.setUnits(MS_UNITS.MS_PIXELS.swigValue());
 		couche.setType(MS_LAYER_TYPE.MS_LAYER_RASTER);
 		couche.setStatus(1);
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/dessinCarte/ServiceCarte.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/dessinCarte/ServiceCarte.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/dessinCarte/ServiceCarte.java	(revision 70)
@@ -37,7 +37,7 @@
 	
 	/**
-	* Initialisation de l'emplacement de l'application
-	*
-	*/
+	 * Initialisation de l'emplacement de l'application
+	 *
+	 */
 	private void initEmplacement() {
 		emplacement = Donnees.getHome();
@@ -50,5 +50,5 @@
 	 */
 	private void initMap() {
-		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "chargement neutre.map");
+//		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "chargement neutre.map");
 		carte = new CarteMapScript("neutre.map", emplacement + "/mapfile/");
 		carte.setOTFRaster("donnees", "null");
@@ -58,5 +58,5 @@
 	
 	/**
-	 * Cette fonction gÃ©nÃšre une image de carte pour la grille passÃ©e en paramÃªtre avec la table de couleur demandÃ©e
+	 * Cette fonction gÃ©nÃšre une image de carte pour la grille passÃ©e en paramÃštre avec la table de couleur demandÃ©e
 	 * @param id_grille
 	 * @param id_colormap
@@ -67,28 +67,24 @@
 	 * @throws PersistanceException 
 	 */
-	public StatReponse getCarte(long id_grille, long id_colormap, Zone zone_aff, String identifiant_unique){
-		String img_temporaire = new String();
+	public StatReponse getCarte(long id_grille, long id_colormap, long id_classdis, Zone zone_aff, String identifiant_unique, String nomProd, long id_sector, boolean zoom, boolean firstAff, long maskId){
 		ServiceRaster serviceRaster = new ServiceRaster();
-		
-		StatReponse statReponse = serviceRaster.genereRaster(id_grille, id_colormap, zone_aff);
-		img_temporaire = statReponse.getUrlImage();
-		double center = statReponse.getCenter();
-		
+		StatReponse statReponse = serviceRaster.genereRaster(id_grille, id_colormap, id_classdis, zone_aff, nomProd, id_sector, maskId);
+		String img_temporaire = statReponse.getUrlImage();
+//		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "img_temporaire ="+img_temporaire);
+//		double center = statReponse.getCenter();
 		
 		// TODO: placer le generateur de worldfile au niveau du service raster
 		GenerateurWorldFile gen_worldfile = (GenerateurWorldFile) xmlbean.getBean("worldfile");
-		
 		//initialiser la resolution
 		double resolution= getResolution(id_grille);
-				
 		gen_worldfile.setPasX(resolution);
 		gen_worldfile.setPasY(-resolution);
-		
-				
+//		gen_worldfile.setPixelY(statReponse.getZone().getNorthbc() - (resolution/2));
+//		gen_worldfile.setPixelX(statReponse.getZone().getWestbc() + (resolution/2));
+		gen_worldfile.setPixelY(statReponse.getZone().getNorthbc());
+		gen_worldfile.setPixelX(statReponse.getZone().getWestbc());
 		gen_worldfile.writeWorldFile("/tmp/" + id_grille + "." + id_colormap);
-		
-		String urlImage = gestionImageCarte(img_temporaire, zone_aff, identifiant_unique);
-		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "urlImage   " +urlImage);
-		
+		String urlImage = gestionImageCarte(img_temporaire, zone_aff, identifiant_unique, zoom, firstAff);
+//		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "urlImage   " +urlImage);
 		statReponse.setUrlImage(urlImage);
 		
@@ -101,35 +97,23 @@
 		GrilleDAO grilleDAO = (GrilleDAO) xmlbean.getBean("grilleDAO");
 				
-		try {resolution = grilleDAO.getGrilleResolution(id_grille);}catch (PersistanceException e) {LoggerPerso.log(ServiceRaster.class, LoggerPerso.ERROR, "ERROR generateRaster " + e.getM_message(), e);}
-		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "resolution------------------------------------------------------> :: " + resolution);
+		try {
+			resolution = grilleDAO.getGrilleResolution(id_grille);
+		}catch (PersistanceException e) {
+			LoggerPerso.log(ServiceRaster.class, LoggerPerso.ERROR, "ERROR generateRaster " + e.getM_message(), e);
+		}
+//		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "resolution------------------------------------------------------> :: " + resolution);
 		
 		return resolution;
 	}
 	
-	
-	
-	
-	
-	
-	public StatReponse getStatReponse(long id_grille, long id_colormap, Zone zone_aff){
+	public StatReponse getStatReponse(long id_grille, long id_colormap, long id_classdis, Zone zone_aff, String nomProd, long id_sector, long id_mask){
 		ServiceRaster serviceRaster = new ServiceRaster();
-		StatReponse statReponse = serviceRaster.genereRaster(id_grille, id_colormap, zone_aff);
-
-		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "********************getStatReponse***************************");
-		return statReponse;
-	}
-	
-	
-	
-	/*
-	public StatReponse getCenter(long id_grille, long id_colormap, Zone zone_affiche, String identifiant_unique){
-		
-	}
-	*/
-	
-	
-	
-	/**
-	 * Genere une carte calculÃ© Ã  partir des donnÃ©es moyennes, somme, min, max ou ecart-type
+		StatReponse statReponse = serviceRaster.genereRaster(id_grille, id_colormap, id_classdis, zone_aff, nomProd, id_sector, id_mask);
+
+		return statReponse;
+	}
+	
+	/**
+	 * Genere une carte rÃ©sultante comportant des statistiques sur les donnÃ©es
 	 * @param criteres
 	 * @param id_param
@@ -140,27 +124,29 @@
 	 * @return
 	 */
-	public StatReponse getCarteStat(Map<String, String> criteres, long id_param, long id_produit, long id_colormap, String fonction, String id_unique, Zone selection) {
-		String img_temporaire = new String();
-		
-		StatReponse statReponse = serviceStat.getCarteStat(criteres, id_param, id_produit, id_colormap, fonction, id_unique);	
-		img_temporaire = statReponse.getUrlImage();
+	public StatReponse getCarteStat(Map<String, String> criteres, long id_param, long id_produit, long id_colormap, long id_classdis, long id_secteur, long id_rcp, String alt, String fonction, String id_unique, Zone selection, boolean zoom, boolean firstAff, long maskId) {
+		StatReponse statReponse = serviceStat.getCarteStat(criteres, id_param, id_produit, id_colormap, id_classdis, id_secteur, id_rcp, alt, fonction, maskId);
+		String img_temporaire = statReponse.getUrlImage();
 		// TODO: placer le generateur de worldfile au niveau du service raster
 		GenerateurWorldFile gen_worldfile = (GenerateurWorldFile) xmlbean.getBean("worldfile");
-		gen_worldfile.writeWorldFile(img_temporaire);
-		
-		
 //		initialiser la resolution
-		float resolution=0;
+		double resolution = 0;
 		GrilleDAO grilleDAO = (GrilleDAO) xmlbean.getBean("grilleDAO");
-				
-		try {resolution = grilleDAO.getGrilleResolution(id_produit);}catch (PersistanceException e) {LoggerPerso.log(ServiceRaster.class, LoggerPerso.ERROR, "ERROR generateRaster " + e.getM_message(), e);}
-		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "resolution------------------------------------------------------> :: " + resolution);
+		try {
+			resolution = grilleDAO.getProduitResolution(id_produit);
+		}catch (PersistanceException e) {
+			LoggerPerso.log(ServiceRaster.class, LoggerPerso.ERROR, "ERROR generateRaster " + e.getM_message(), e);
+		}
+//		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "resolution--> :: " + resolution);
+
 		gen_worldfile.setPasX(resolution);
 		gen_worldfile.setPasY(-resolution);
-		
-		
-		
-		String urlImage = gestionImageCarte(img_temporaire, selection, id_unique);
-		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "urlImage   " +urlImage);
+//		gen_worldfile.setPixelY(statReponse.getZone().getNorthbc() - (resolution/2));
+//		gen_worldfile.setPixelX(statReponse.getZone().getWestbc() + (resolution/2));
+		gen_worldfile.setPixelY(statReponse.getZone().getNorthbc());
+		gen_worldfile.setPixelX(statReponse.getZone().getWestbc());
+		gen_worldfile.writeWorldFile(img_temporaire.substring(0, img_temporaire.length()-4));
+		
+		String urlImage = gestionImageCarte(img_temporaire, selection, id_unique, zoom, firstAff);
+//		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "urlImage   " +urlImage);
 		
 		statReponse.setUrlImage(urlImage);
@@ -170,20 +156,21 @@
 	}
 	
-	public StatReponse getStatReponse(Map<String, String> criteres, long id_param, long id_produit, long id_colormap, String fonction, String id_unique, Zone selection) {
-		
-		StatReponse statReponse = serviceStat.getCarteStat(criteres, id_param, id_produit, id_colormap, fonction, id_unique);	
-				
-		return statReponse;
-		
-	}
-	
-	
-	
-	public String getLegendStat(long id_grille, long id_colormap, String fonction, String id) {
-		if (!fonction.equals("ecartCarte") && !fonction.equals("moyenneCarte") &&!fonction.equals("sommeCarte")) 
-			return getLegend(id_grille, id_colormap);
-		String legend = serviceStat.getLegend(emplacement + "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +"_" + id , id_colormap, id_grille);
-		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "getLegendCarte :: " + legend);
-		return "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +"_" + id +".legend.png";
+	public StatReponse getStatReponse(Map<String, String> criteres, long id_param, long id_produit, long id_colormap, long id_classdis, long id_secteur, long id_rcp, String alt, String fonction, long id_mask) {
+		StatReponse statReponse = serviceStat.getCarteStat(criteres, id_param, id_produit, id_colormap, id_classdis, id_secteur, id_rcp, alt, fonction, id_mask);
+		return statReponse;
+	}
+	
+	
+	
+	public String getLegendStat(long id_grille, long id_colormap, long id_classdis, String fonction, String id) {
+//		if (!fonction.equals("ecartCarte") && !fonction.equals("moyenneCarte") &&!fonction.equals("sommeCarte")) {
+		if (!fonction.equals("ecartCarte") && !fonction.equals("sommeCarte")
+				&& !fonction.equals("totalDay") && !fonction.equals("totalMonth")
+				&& !fonction.equals("totalYear") && !fonction.equals("totalPeriod")) {
+			return getLegend(id_grille, id_colormap, id_classdis);
+		}
+		serviceStat.getLegend(emplacement + "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +"_" + id_classdis +"_"+ id , id_colormap, id_classdis, id_grille, fonction);
+//		LoggerPerso.log(ServiceCarte.class, LoggerPerso.DEBUG, "getLegendCarte :: " + legend);
+		return "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +"_" +id_classdis+"_"+ id +".legend.png";
 	}
 	/**
@@ -196,15 +183,15 @@
 	 * @return
 	 */
-	public String gestionImageCarte(String image_temporaire,Zone zone_aff, String identifiant_unique) {
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "gestion image carte");
+	public String gestionImageCarte(String image_temporaire,Zone zone_aff, String identifiant_unique, boolean zoom, boolean firstAff) {
+//		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "gestion image carte");
 		String img_erreur = "/images/nodata.png";
 		String nom_image_final;
 		
 		try {
-			LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "modif layer : donnees " + image_temporaire);
+//			LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "modif layer : donnees " + image_temporaire);
 			carte.modifDataLayer("donnees", image_temporaire);
-			LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "modif layer ok");
-			if (zone_aff != null)
+			if (firstAff && !zoom) {
 				carte.zoneAffiche(zone_aff.getNorthbc(), zone_aff.getSouthbc(), zone_aff.getEastbc(), zone_aff.getWestbc());
+			}
 			//carte.changeProjection("");
 			nom_image_final = carte.dessinerCarte(emplacement + "/images/cartes_temporaires/", identifiant_unique);
@@ -229,14 +216,13 @@
 	 * @return
 	 */
-	public String getLegend(long id_grille, long id_colormap) {
-		File legend_img = new File(emplacement + "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +".legend.png");
+	public String getLegend(long id_grille, long id_colormap, long id_classdis) {
+		File legend_img = new File(emplacement + "/images/cartes_temporaires/" + id_grille + "_" + id_colormap+"_"+id_classdis +".legend.png");
 		
 		if (legend_img.exists())
-			return "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +".legend.png";
-		
+			return "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +"_"+id_classdis+".legend.png";
 		ServiceRaster serviceRaster = new ServiceRaster();
-		serviceRaster.genereLegend(id_grille, id_colormap, emplacement + "/images/cartes_temporaires/" + id_grille + "_" + id_colormap);
-		
-		return "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +".legend.png";
+		serviceRaster.genereLegend(id_grille, id_colormap, id_classdis, emplacement + "/images/cartes_temporaires/" + id_grille + "_" + id_colormap+"_"+id_classdis);
+		
+		return "/images/cartes_temporaires/" + id_grille + "_" + id_colormap +"_"+id_classdis+".legend.png";
 	}
 	
@@ -251,9 +237,4 @@
 		Zone zone = carte.getZoneCouverte();
 
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne : getEastbc "+ zone.getEastbc());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne : getWestbc "+ zone.getWestbc());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne : getNorthbc "+ zone.getNorthbc());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne : getSouthbc "+ zone.getSouthbc());
-		
 		/*if (zone.getEastbc() <180) { if((zone.getEastbc()- ((int)zone.getEastbc()))  < 0.5) zone.setEastbc(((int)zone.getEastbc()+ 0.25)); else zone.setEastbc(((int)zone.getEastbc()+ 0.75));};
 		if (zone.getWestbc() > -180 ) {  if((zone.getWestbc()- ((int)zone.getWestbc()))  < 0.5) zone.setWestbc(((int)zone.getWestbc()+ 0.25)); else zone.setWestbc(((int)zone.getWestbc()+ 0.75));};
@@ -261,10 +242,4 @@
 		if (zone.getSouthbc() >-90) {  if((zone.getSouthbc()- ((int)zone.getSouthbc()))  < 0.5) zone.setSouthbc(((int)zone.getSouthbc()+ 0.25)); else zone.setSouthbc(((int)zone.getSouthbc()+ 0.75));};
 */
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne : getEastbcN "+ zone.getEastbcN());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne : getWestbcN "+ zone.getWestbcN());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne : getNorthbcN "+ zone.getNorthbcN());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne : getSouthbcN "+ zone.getSouthbcN());
-		
-		
 		
 		return zone;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/emission/ServiceEmission.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/emission/ServiceEmission.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/emission/ServiceEmission.java	(revision 70)
@@ -15,5 +15,4 @@
 import org.medias.eccad.metier.generationRaster.colorMap.ColorMappingLineaire;
 import org.medias.eccad.metier.statistique.GrapheCGI;
-import org.medias.eccad.metier.statistique.ServiceStatistique;
 import org.medias.eccad.metier.traducteur.TraducteurStat;
 import org.medias.eccad.modele.ColorTab;
@@ -29,5 +28,4 @@
 import org.medias.eccad.persistance.dao.ProduitDAO;
 import org.medias.eccad.persistance.exception.PersistanceException;
-import org.medias.jni.RasterDAO;
 import org.springframework.beans.factory.xml.XmlBeanFactory;
 
@@ -116,5 +114,5 @@
 			LoggerPerso.log(ServiceEmission.class, LoggerPerso.ERROR, "erreur getGazFacteurEmission parametre : ", e);
 		}
-		LoggerPerso.log(ServiceEmission.class, LoggerPerso.DEBUG, " get produit :"  + " " + prod + " ");		
+//		LoggerPerso.log(ServiceEmission.class, LoggerPerso.DEBUG, " get produit :"  + " " + prod + " ");		
 		return prod;
 	}
@@ -134,5 +132,5 @@
 			LoggerPerso.log(ServiceEmission.class, LoggerPerso.ERROR, "erreur getGazFacteurEmission parametre : ", e);
 		}
-		LoggerPerso.log(ServiceEmission.class, LoggerPerso.DEBUG, " getGazFacteurEmission param"  + " " + liste.size() + " " + liste);		
+//		LoggerPerso.log(ServiceEmission.class, LoggerPerso.DEBUG, " getGazFacteurEmission param"  + " " + liste.size() + " " + liste);		
 		return liste;
 	}
@@ -149,5 +147,5 @@
 			LoggerPerso.log(ServiceEmission.class, LoggerPerso.ERROR, "erreur getGazFacteurEmission produit : " + id_produit, e);
 		}
-		LoggerPerso.log(ServiceEmission.class, LoggerPerso.DEBUG, " getGazFacteurEmission produit : " + id_produit + " " + liste.size() + " " + liste);
+//		LoggerPerso.log(ServiceEmission.class, LoggerPerso.DEBUG, " getGazFacteurEmission produit : " + id_produit + " " + liste.size() + " " + liste);
 		return liste;
 	}
@@ -156,5 +154,5 @@
 	
 	public List<Produit> getListLand(Long facteur) {
-		ProduitDAO produitdao    = (ProduitDAO) xmlbean.getBean("produitDAO");
+		ProduitDAO produitdao = (ProduitDAO) xmlbean.getBean("produitDAO");
 		List<Produit> liste = null;
 		
@@ -165,5 +163,5 @@
 			LoggerPerso.log(ServiceEmission.class, LoggerPerso.ERROR, "erreur getListLand parametre : ", e);
 		}
-		LoggerPerso.log(ServiceEmission.class, LoggerPerso.DEBUG, " getListLand param"  + " " + liste.size() + " " + liste);		
+//		LoggerPerso.log(ServiceEmission.class, LoggerPerso.DEBUG, " getListLand param"  + " " + liste.size() + " " + liste);		
 		return liste;
 	}
@@ -190,15 +188,14 @@
 	 * @return
 	 */
-	public String getCarte(RequeteFacteurEmission requete, Zone affiche, String id_unique) {
+	public String getCarte(RequeteFacteurEmission requete, Zone affiche, String id_unique, boolean zoom, boolean firstAff) {
 		String temp = getRasterFacteur(requete);
-		return carte.gestionImageCarte(temp, affiche, id_unique);
-	}
-	
-	public String getLegend(long id_colormap, long id_grille, String url_images) {
-		ColorMapping colormap = getColorMap(id_colormap);
+		return carte.gestionImageCarte(temp, affiche, id_unique, zoom, firstAff);
+	}
+	
+	public String getLegend(long id_colormap, long id_classdis, long id_grille, String url_images) {
+		ColorMapping colormap = getColorMap(id_colormap,id_classdis);
 		InformationLegend info_legend = new InformationLegend();
 		GenerateurLegendRaster gen_legend = new GenerateurLegendeImg();
 		gen_legend.genereLegendVertical(colormap, info_legend.getLegendDynamic(colormap.getColorTable(), reponse.getMaximal(), reponse.getMinimal()), "g(X)/m2/jour");
-		//system.out.println(reponse);
 		//gen_legend.genereLegendVertical(colormap, info_legend.getLegendDynamic(colormap.getColorTable(), 150, 0), info_legend.getInfoSup(id_grille));
 		gen_legend.enregistreLegend(Donnees.getHome()  +url_images+".legend.png");
@@ -222,34 +219,24 @@
 	private String getRasterFacteur(RequeteFacteurEmission requete) {
 		String xml = requete.toXml();
-		System.out.println(xml);
-		// TODO: ATTENDRE LIB DE HAKIM
 		GrapheCGI rasterdao = new GrapheCGI();
-		
-		//system.out.println(rasterdao.getStatistique(xml));
-		
 		reponse = decodeReponse(rasterdao.getStatistique(xml));
 		if (reponse.getError() != null && !reponse.getError().equals(""))
 			return "erreur";
-		
 		GenerateurWorldFile gen_worldfile = (GenerateurWorldFile) xmlbean.getBean("worldfile");
 		gen_worldfile.setPasX(reponse.getCarte().getPasX());
 		gen_worldfile.setPasY(reponse.getCarte().getPasY());
-		gen_worldfile.setPixelY(reponse.getZone().getNorthbc() - (reponse.getCarte().getPasY()/2));
-		gen_worldfile.setPixelX(reponse.getZone().getWestbc() + (reponse.getCarte().getPasY()/2));
-		
-		
+		gen_worldfile.setPixelY(reponse.getZone().getNorthbc());
+		gen_worldfile.setPixelX(reponse.getZone().getWestbc());
+//		gen_worldfile.setPixelY(reponse.getZone().getNorthbc() - (reponse.getCarte().getPasY()/2));
+//		gen_worldfile.setPixelX(reponse.getZone().getWestbc() + (reponse.getCarte().getPasX()/2));
 		String nom = reponse.getUrlImage();
-		
 		nom = nom.substring(0, nom.length()-4);
 		gen_worldfile.writeWorldFile(nom);
-		
-		//system.out.println("\n\n\n" + nom);
 		return reponse.getUrlImage();
-		//return "/tmp/4113.31.png";
-	}
-	
-	private String encodeData() {
-		return "";
-	}
+	}
+	
+//	private String encodeData() {
+//		return "";
+//	}
 	
 	private StatReponse decodeReponse(String reponse_xml) {
@@ -258,5 +245,5 @@
 		if (reponse.getError() != null && !reponse.getError().equals(""))
 			return null;
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, reponse_xml);
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, reponse_xml);
 		return reponse;
 	}
@@ -268,5 +255,5 @@
 	 * @return la table de couleur par dÃ©faut
 	 */
-	private ColorMapping getColorMap(long colormapid) {
+	private ColorMapping getColorMap(long colormapid, long classdisid) {
 		ColorTabDAO colorDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO");
 		
@@ -276,5 +263,5 @@
 		// mais la j'ai un rÃ©sultat chelou :/
 		try {
-			colortab = colorDAO.getColorMapByID(colormapid);
+			colortab = colorDAO.getColorMapByID(colormapid, classdisid);
 		} catch (PersistanceException e) {
 			e.printStackTrace();
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/extracteur/CritereExtractBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/extracteur/CritereExtractBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/extracteur/CritereExtractBean.java	(revision 70)
@@ -7,4 +7,7 @@
 	private String produit = null; 
 	private String parametre = null; 
+	private String secteur = null; 
+	private String rcp = null; 
+
 	private String dateDebut = null; 
 	
@@ -129,4 +132,16 @@
 	public void setSeparator(String separator) {
 		this.separator = separator;
+	}
+	public String getSecteur() {
+		return secteur;
+	}
+	public void setSecteur(String secteur) {
+		this.secteur = secteur;
+	}
+	public String getRcp() {
+		return rcp;
+	}
+	public void setRcp(String rcp) {
+		this.rcp = rcp;
 	}  
 	
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/extracteur/Extract.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/extracteur/Extract.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/extracteur/Extract.java	(revision 70)
@@ -30,4 +30,6 @@
 	    requete +="<idproduit>" + ef.getProduit() + "</idproduit>";
 	    requete +="<idparametre>" + ef.getParametre() + "</idparametre>";
+	    requete +="<idsecteur>" + ef.getSecteur() + "</idsecteur>";
+	    requete +="<idrcp>" + ef.getRcp() + "</idrcp>";
 	    requete +="<dateDebut>" + ef.getDateDebut() + "</dateDebut>";
 	    requete +="<dateFin>" + ef.getDateFin() + "</dateFin>";
@@ -52,10 +54,7 @@
 		XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
 	    
-	    
 	    ExtracteurConfig configuration = (ExtracteurConfig) SpringBeanFactory.getXmlFactory().getBean("extracteur");
 	    String urlCgi =  configuration.getUrl();
 	    
-	    
-	    //URL url = new URL("http://zeus/cgi-bin/eccad_extract.cgi");
 	    URL url = new URL(urlCgi);
 	    config.setServerURL(url);
@@ -66,7 +65,7 @@
 	    
 	    Object[] params = new Object[]{requete,mode};
-	    LoggerPerso.log(Extract.class, LoggerPerso.DEBUG, "extraction :: " + requete);
+//	    LoggerPerso.log(Extract.class, LoggerPerso.DEBUG, "extraction :: " + requete);
 	    String rslt = (String) client.execute("extract", params);
-	    LoggerPerso.log(Extract.class, LoggerPerso.DEBUG, "extraction result :: " + result);
+	    LoggerPerso.log(Extract.class, LoggerPerso.DEBUG, "extraction result :: " + rslt);
 	    setResult(rslt);	
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurLegendRaster.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurLegendRaster.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurLegendRaster.java	(revision 70)
@@ -1,5 +1,3 @@
 package org.medias.eccad.metier.generationRaster;
-
-import java.util.List;
 
 import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurLegendeImg.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurLegendeImg.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurLegendeImg.java	(revision 70)
@@ -4,5 +4,4 @@
 import java.awt.Color;
 import java.awt.Font;
-import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
@@ -14,6 +13,4 @@
 import javax.imageio.ImageIO;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping;
 import org.medias.eccad.modele.ColorTab;
@@ -47,6 +44,5 @@
 			e.printStackTrace();
 		}
-		LoggerPerso.log(GenerateurLegendeImg.class, LoggerPerso.DEBUG, "fin write");
-
+//		LoggerPerso.log(GenerateurLegendeImg.class, LoggerPerso.DEBUG, "fin write");
 	}
 
@@ -56,5 +52,5 @@
 		
 		initcolor();
-		genereCarre();
+		genereCarre(texte_legende.getType());
 		genereText(texte_legende.getType());
 		genereCadre();
@@ -65,9 +61,10 @@
 		valeur = texte_legende;
 		tab_unique = getTabCouleurUnique(colortab);
-		nbr_case = tab_unique.size();
+//		nbr_case = tab_unique.size();
+		nbr_case = (valeur.size()==1?2:valeur.size());
 		longueur = 15;
 		//hauteur  = haut_image/nbr_case;
 		hauteur = 20;
-		haut_image = hauteur*nbr_case+3 + 15;
+		haut_image = hauteur*nbr_case+30;
 		//larg_image = calculer le nombre de chiffre 
 		buff_image = new BufferedImage(larg_image, haut_image, BufferedImage.TYPE_INT_ARGB);
@@ -84,17 +81,21 @@
 	private void genereInfoSup(String info) {
 		image.setColor(new Color (0,0,0));
-		image.drawString(info, 1 , haut_image-1);
-		LoggerPerso.log(GenerateurLegendeImg.class, LoggerPerso.DEBUG, info);
+		image.drawString(info, 1 , haut_image-3);
+//		LoggerPerso.log(GenerateurLegendeImg.class, LoggerPerso.DEBUG, info);
 	}
 	
 	private void genereCadre() {
 		image.setColor(new Color(0, 0, 0));
-		image.drawRect(0, 0, longueur + 1, hauteur*nbr_case+1);
+		image.drawRect(0, 10, longueur + 1, hauteur*nbr_case+1);
 	}
 	
-	private void genereCarre() {
+	private void genereCarre(int type_legend) {
 		for (int i=0; i<nbr_case; i++) {
-			image.setColor(tab_unique.get(nbr_case - 1 - i));
-			image.fillRect(1, i*hauteur + 1, longueur, hauteur);
+			if (type_legend == Legende.TYPE_VALUE) {
+				image.setColor(tab_unique.get(nbr_case - 1 - i));
+			} else {
+				image.setColor(tab_unique.get(i));
+			}
+			image.fillRect(1, i*hauteur + 11, longueur, hauteur);
 		}
 	}
@@ -105,13 +106,14 @@
 		if (nbr_case > valeur.size()+1)
 			return;
-		
 		if (type_legend == Legende.TYPE_VALUE)
-			for (int i=0; i<nbr_case -1; i++) {
-				image.drawString(valeur.get(i), longueur + 6, hauteur*(nbr_case - i - 1)+6);
+			for (int i=0; i<valeur.size(); i++) {
+				image.drawString(valeur.get(i), longueur + 6, hauteur*(nbr_case - i - 1)+16);
 			}
-		else
+		else {
 			for (int i=1; i<=valeur.size(); i++) {
-				image.drawString(valeur.get(i-1), longueur + 6, hauteur*(nbr_case - i + 1) - (hauteur/2) + 6);
+//				image.drawString(valeur.get(i-1), longueur + 6, hauteur*(nbr_case - i + 1) - (hauteur/2) + 16);
+				image.drawString(valeur.get(valeur.size()-i), longueur + 6, hauteur*(nbr_case - i + 1) - (hauteur/2) + 16);
 			}
+		}
 	}
 	
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurRasterImg.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurRasterImg.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/GenerateurRasterImg.java	(revision 70)
@@ -10,5 +10,4 @@
 
 import org.medias.eccad.helpers.Donnees;
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping;
 import org.medias.eccad.metier.generationRaster.colorMap.ColorMappingJaune;
@@ -34,5 +33,5 @@
 			e.printStackTrace();
 		}
-		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "fin write");
+//		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "fin write");
 	}
 	
@@ -58,6 +57,6 @@
 	
 	private void dessineCadre(Zone zone) {
-		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "generation cadre");
-		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "zone :: " + zone);
+//		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "generation cadre");
+//		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "zone :: " + zone);
 		
 		Double tmp = zone.getNorthbc();
@@ -70,5 +69,5 @@
 		int droite = (tmp.intValue() + 180)*2 + 3;
 		
-		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "coord : " + haut + ":" + bas + ":" + droite  + ":" + gauche);
+//		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "coord : " + haut + ":" + bas + ":" + droite  + ":" + gauche);
 		
 		
@@ -85,5 +84,5 @@
 		image.drawRect(gauche+1, haut+1, droite-gauche-2, bas-haut-2);
 		
-		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "fin cadre");
+//		LoggerPerso.log(GenerateurRasterImg.class, LoggerPerso.DEBUG, "fin cadre");
 	}
 	
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/InformationLegend.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/InformationLegend.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/InformationLegend.java	(revision 70)
@@ -7,10 +7,7 @@
 import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.helpers.SpringBeanFactory;
-import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping;
-import org.medias.eccad.metier.statistique.ServiceStatistique;
 import org.medias.eccad.modele.ColorTab;
 import org.medias.eccad.modele.Legende;
 import org.medias.eccad.persistance.dao.CodeDAO;
-import org.medias.eccad.persistance.dao.ColorTabDAO;
 import org.medias.eccad.persistance.dao.GrilleDAO;
 import org.medias.eccad.persistance.dao.ParametreDAO;
@@ -25,9 +22,8 @@
 	}
 	
-	public List<String> getLegendValeur(ColorTab colortab) {
+	public List<String> getLegendValeur(ColorTab colortab, String unit) {
 		int taille = colortab.getLength();
 		float tableau_valeur[] = colortab.getTab_min();
 		float valeur;
-		
 		List<String> liste = new LinkedList<String>();
 		
@@ -36,4 +32,9 @@
 			valeur = tableau_valeur[i];
 			liste.add(Float.toString(valeur));
+		}
+		if (unit.equals("%")) {
+			liste.add(Float.toString(colortab.getMax()));
+		} else {
+			liste.add("\u2265 "+Float.toString(colortab.getMax()));			
 		}
 		
@@ -45,9 +46,9 @@
 	 * Cette fonction a pour vocation d'obtenir les informations suplÃ©mentaires Ã  afficher sous la lÃ©gende (par exemple les unitÃ©s)
 	 * @param id_grille l'identifiant de la grille
+	 * @param fonction la fonction permettant de dÃ©terminer le mode d'affichage choisi
 	 * @return la chaine de caractÃšre reprÃ©sentant les informations
 	 */
-	public String getInfoSup(long id_grille) {
-		String information;
-		information = "Unit : ";
+	public String getInfoSup(long id_grille, String fonction) {
+		String information = "";
 		ParametreDAO paramDAO = (ParametreDAO) xmlbean.getBean("parametreDAO");
 		try {
@@ -55,7 +56,23 @@
 		} catch (PersistanceException e) {
 			e.printStackTrace();
-			information += "none";
+			information += "No unit";
 		}
-		
+		// Cas particulier: les totaux -> on change l'unitÃ© si besoin
+		if (fonction != null && (fonction.equals("totalDay") || fonction.equals("totalMonth")
+				|| fonction.equals("totalYear") || fonction.equals("totalPeriod"))) {
+			if (information.equals("pers/km2")) {
+				information = "pers";
+			} else if (information.equals("kg(X).m-2.s-1")) {
+				if (fonction.equals("totalDay")) {
+					information = "Tg(X)/day";					
+				} else if (fonction.equals("totalMonth")) {
+					information = "Tg(X)/month";
+				} else if (fonction.equals("totalYear")) {
+					information = "Tg(X)/year";
+				} else {
+					information = "Tg(X)/period";
+				}
+			}
+		}
 		return information;
 	}
@@ -67,5 +84,5 @@
 	 * @return
 	 */
-	public Legende getLegendText(long id_grille, ColorTab colortab) {
+	public Legende getLegendText(long id_grille, ColorTab colortab, String unit) {
 		GrilleDAO grille = (GrilleDAO) xmlbean.getBean("grilleDAO");
 		CodeDAO codedao = (CodeDAO) xmlbean.getBean("codeDAO");
@@ -75,8 +92,9 @@
 		try {
 			codif = grille.getCodification(id_grille);
+//			LoggerPerso.log(ServiceRaster.class, LoggerPerso.WARN, "type codification :" + codif);
 		}
 		catch (PersistanceException perse) {
 			LoggerPerso.log(ServiceRaster.class, LoggerPerso.WARN, "erreur rÃ©cupÃ©ration codif grille " + id_grille, perse);
-			return new Legende(getLegendValeur(colortab), Legende.TYPE_VALUE);
+			return new Legende(getLegendValeur(colortab,unit), Legende.TYPE_VALUE);
 		}
 		
@@ -84,12 +102,11 @@
 			if (codif.equals("coded")) {
 				legende = new Legende(codedao.getListCodeByGrille(id_grille), Legende.TYPE_CODED);
-			}
-			else {
-				legende = new Legende(getLegendValeur(colortab), Legende.TYPE_VALUE);
+			} else {
+				legende = new Legende(getLegendValeur(colortab,unit), Legende.TYPE_VALUE);
 			}
 		}
 		catch (PersistanceException perse) {
 			LoggerPerso.log(ServiceRaster.class, LoggerPerso.WARN, "erreur rÃ©cupÃ©ration liste des lÃ©gendes de la grille " + id_grille, perse);
-			return legende = new Legende(getLegendValeur(colortab), Legende.TYPE_VALUE);
+			return legende = new Legende(getLegendValeur(colortab,unit), Legende.TYPE_VALUE);
 		}
 		
@@ -102,11 +119,12 @@
 		int taille = colortab.getLength();
 		float tableau_valeur[] = colortab.getTab_min();
-		
+
 		// on prend n-1 valeur ^^
 		for (int i=1; i<taille; i++) {
-			valeur = tableau_valeur[i];
-			valeur = (valeur *(max-min))+min;
+			valeur = (tableau_valeur[i] *(max-min))+min;
 			liste.add(fixeDecimal(Float.toString(valeur)));
 		}
+		valeur = (colortab.getMax() *(max-min))+min;
+		liste.add(fixeDecimal(Float.toString(valeur)));
 		return new Legende(liste , Legende.TYPE_VALUE);
 	}
@@ -115,20 +133,22 @@
 
 	private String fixeDecimal(String entree) {
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "-------------Legende------------------------******------>entree "+entree);
+//		LoggerPerso.log(this.getClass(), LoggerPerso.DEBUG, "-------------Legende------------------------******------>entree "+entree);
 		if (entree == null)
 			return "nc";
 		int index = entree.lastIndexOf(".");
 		int indexE = entree.lastIndexOf("E");
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree  --lll-->2 "+indexE+"  "+index+"  "+entree.length());
-		if ( indexE == -1 && index != -1 && entree.length() >= index + 5)
+//		LoggerPerso.log(this.getClass(), LoggerPerso.DEBUG, "entree  --lll-->2 "+indexE+"  "+index+"  "+entree.length());
+		if ( indexE == -1 && index != -1 && entree.length() >= index + 5) {
 			entree = entree.substring(0, entree.lastIndexOf(".")+5);
-		if ( indexE != -1 && index != -1 && entree.length() >= index + 5)
+		}
+		else if ( indexE != -1 && index != -1 && entree.length() >= index + 5)
 		{
 			String aEntree = entree;
-			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "aEntree "+aEntree.lastIndexOf("E")+"  "+aEntree.length()+"    "+aEntree.lastIndexOf("E")+"  "+aEntree.length());
+//			LoggerPerso.log(this.getClass(), LoggerPerso.DEBUG, "aEntree "+aEntree.lastIndexOf("E")+"  "+aEntree.length()+"    "+aEntree.lastIndexOf("E")+"  "+aEntree.length());
 			aEntree=aEntree.substring(aEntree.lastIndexOf("E"), aEntree.lastIndexOf("E")+aEntree.length()-aEntree.lastIndexOf("E"));
-			entree = entree.substring(0, entree.lastIndexOf(".")+5)+aEntree;
+			//entree = entree.substring(0, entree.lastIndexOf(".")+5)+aEntree;
+			entree = entree.substring(0, 3)+aEntree;
 		}
-			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree "+entree);
+//		LoggerPerso.log(this.getClass(), LoggerPerso.DEBUG, "entree "+entree);
 		return entree;
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/IntServiceRaster.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/IntServiceRaster.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/IntServiceRaster.java	(revision 70)
@@ -5,5 +5,5 @@
 
 public interface IntServiceRaster {
-	public StatReponse genereRaster(long id_grille, long id_colormap, Zone zone);
-	public String genereLegend(long id_grille, long id_colormap, String fichier);
+	public StatReponse genereRaster(long id_grille, long id_colormap, long id_classdis, Zone zone, String nomProd, long id_sector, long id_mask);
+	public String genereLegend(long id_grille, long id_colormap, long id_classdis, String fichier);
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/ServiceRaster.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/ServiceRaster.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/ServiceRaster.java	(revision 70)
@@ -18,5 +18,4 @@
 import org.medias.eccad.persistance.dao.GrilleDAO;
 import org.medias.eccad.persistance.exception.PersistanceException;
-import org.medias.eccad.presentation.traducteur.TraducteurCarte;
 import org.springframework.beans.factory.xml.XmlBeanFactory;
 
@@ -34,5 +33,5 @@
 	 */
 	public ServiceRaster() {
-		LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG, "crÃ©ation du service");
+//		LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG, "crÃ©ation du service");
 		xmlbean = SpringBeanFactory.getXmlFactory();
 		gen_worldfile = (GenerateurWorldFile) xmlbean.getBean("worldfile");
@@ -46,9 +45,9 @@
 	 * Permet la crÃ©ation de l'image reprÃ©sentant la lÃ©gende
 	 */
-	public String genereLegend(long id_grille, long id_colormap, String fichier) {
-		colormap = getColorMap(id_colormap);
+	public String genereLegend(long id_grille, long id_colormap, long id_classdis, String fichier) {
+		colormap = getColorMap(id_colormap,id_classdis);
 		InformationLegend info_legend = new InformationLegend();
-		
-		gen_legend.genereLegendVertical(colormap, info_legend.getLegendText(id_grille, colormap.getColorTable()), info_legend.getInfoSup(id_grille));
+		String infoSup = info_legend.getInfoSup(id_grille,null);
+		gen_legend.genereLegendVertical(colormap, info_legend.getLegendText(id_grille, colormap.getColorTable(), infoSup), infoSup);
 		gen_legend.enregistreLegend(fichier+".legend.png");
 		return fichier+".legend.png";
@@ -57,8 +56,7 @@
 	
 	/**
-	 * Demande au CGI eccad de gÃ©nÃ©rer un raster pour la grille passÃ©e en paramÃªtre.
+	 * Demande au CGI eccad de gÃ©nÃ©rer un raster pour la grille passÃ©e en paramÃštre.
 	 */
-	public StatReponse genereRaster(long id_grille, long id_colormap, Zone zone) {
-		LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG,"-------------------------  **********************************++++++++++++++++++++++ ");
+	public StatReponse genereRaster(long id_grille, long id_colormap, long id_classdis, Zone zone, String nomProd, long id_sector, long id_mask) {
 		float centerValue = 0, centerLat = 0, centerLon = 0;
 		String requete = "";
@@ -66,48 +64,44 @@
 		Grille grille = null;
 		
-		try {grille = grilleDAO.getGrille(id_grille);}catch (PersistanceException e) {LoggerPerso.log(ServiceRaster.class, LoggerPerso.ERROR, "ERROR generateRaster " + e.getM_message(), e);}
+		try {
+			grille = grilleDAO.getGrille(id_grille);
+		}catch (PersistanceException e) {
+			LoggerPerso.log(ServiceRaster.class, LoggerPerso.ERROR, "ERROR generateRaster " + e.getM_message(), e);
+		}
 		
 		GrapheCGI rasterdao = new GrapheCGI();
 		Map<String, String> critere = new HashMap<String, String>();
-		if (zone != null)
-		{
+		if (zone != null) {
 			//*************************//
-			
 			String northbcN =  zone.getNorthbcN().replace(",",".");
 			String southbcN = zone.getSouthbcN().replace(",",".");
 			String eastbcN = zone.getEastbcN().replace(",",".");
 			String westbcN = zone.getWestbcN().replace(",",".");
-
-			LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG,"-------------------------   "+ northbcN);
-			
 			critere.put("lat-max", northbcN);
 			critere.put("lat-min", southbcN);
 			critere.put("lon-max", eastbcN);
 			critere.put("lon-min", westbcN);
-			
-			critere.put("beg-date", grille.getDate().toString());
-			critere.put("end-date", grille.getDate().toString());
-			TraducteurStat traducteur = new TraducteurStat();
-			requete = traducteur.encodeCritere(critere, grille.getId_param(), grille.getId_produit(), id_colormap, "getGridRaster", id_grille);
-			StatReponse reponse = traducteur.getReponse(rasterdao.getStatistique(requete));
-			centerValue = reponse.getCenter();
-			centerLat   = reponse.getCenterLat();
-			centerLon   = reponse.getCenterLon();
 		}
-
-		LoggerPerso.log(ServiceRaster.class, LoggerPerso.DEBUG,"-------------------------  **********************************++++++++++++++++++++++ ");
-		
-		critere.put("lat-max", "90");
-		critere.put("lat-min", "-90");
-		critere.put("lon-max", "180");
-		critere.put("lon-min", "-180");
-		
+		else {
+			critere.put("lat-max", "90");
+			critere.put("lat-min", "-90");
+			critere.put("lon-max", "180");
+			critere.put("lon-min", "-180");
+		}
 		critere.put("beg-date", grille.getDate().toString());
 		critere.put("end-date", grille.getDate().toString());
 		TraducteurStat traducteur = new TraducteurStat();
-		requete = traducteur.encodeCritere(critere, grille.getId_param(), grille.getId_produit(), id_colormap, "getGridRaster", id_grille);
+		// 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
+		// Sinon, on affiche une seule grille sur la carte
+		if (nomProd.equals("IPCC") && id_sector==0) {
+			requete = traducteur.encodeCritere(critere, grille.getId_param(), grille.getId_produit(), id_colormap, id_classdis, 0, grille.getId_rcp(), "0", "getGridsRaster", id_grille, id_mask);
+		} else {
+			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);
+		}
 		StatReponse reponse = traducteur.getReponse(rasterdao.getStatistique(requete));
-		if (zone != null)
-		{
+		if (zone != null) {
+			centerValue = (reponse.getCenter()==null?0:reponse.getCenter().floatValue());
+			centerLat   = (reponse.getCenterLat()==null?0:reponse.getCenterLat().floatValue());
+			centerLon   = (reponse.getCenterLon()==null?0:reponse.getCenterLon().floatValue());
 			reponse.setCenter(centerValue);
 			reponse.setCenterLat(centerLat);
@@ -125,5 +119,5 @@
 	 * @return la table de couleur par dÃ©faut
 	 */
-	private ColorMapping getColorMap(long colormapid) {
+	private ColorMapping getColorMap(long colormapid, long classdisid) {
 		ColorTabDAO colorDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO");
 		
@@ -131,5 +125,5 @@
 		
 		try {
-			colortab = colorDAO.getColorMapByID(colormapid);
+			colortab = colorDAO.getColorMapByID(colormapid,classdisid);
 		} catch (PersistanceException e) {
 			e.printStackTrace();
@@ -160,4 +154,3 @@
 	}
 
-
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/colorMap/ColorMappingLineaire.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/colorMap/ColorMappingLineaire.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/colorMap/ColorMappingLineaire.java	(revision 70)
@@ -2,6 +2,4 @@
 
 import java.awt.Color;
-
-import org.medias.eccad.modele.ColorTab;
 
 public class ColorMappingLineaire extends ColorMapping {
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/test/TestServiceRaster.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/test/TestServiceRaster.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/generationRaster/test/TestServiceRaster.java	(revision 70)
@@ -15,5 +15,5 @@
 	public void testGenereRaster() {
 		ServiceRaster serv_raster = new ServiceRaster();
-		System.out.println(serv_raster.genereRaster(5100, 25, null));
+		System.out.println(serv_raster.genereRaster(5100, 25, 25, null,null,0,0));
 		
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/GrapheCGI.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/GrapheCGI.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/GrapheCGI.java	(revision 70)
@@ -8,44 +8,37 @@
 import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
 import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.helpers.SpringBeanFactory;
-import org.medias.eccad.metier.extracteur.Extract;
 import org.medias.eccad.metier.extracteur.ExtracteurConfig;
 
 public class GrapheCGI {
 	public String getStatistique(String requete)  {
-		 XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
+		XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
+
+		ExtracteurConfig configuration = (ExtracteurConfig) SpringBeanFactory.getXmlFactory().getBean("extracteur");
+		String urlCgi =  configuration.getUrl();
+		//String xmlSchema = configuration.getSchema();
+//		LoggerPerso.log(GrapheCGI.class, LoggerPerso.DEBUG, "urlcgi="+urlCgi);
+		URL url;
+		try {
+			url = new URL(urlCgi);
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+			return "MalformedURLException erreur";
+		}
+		config.setServerURL(url);
+		XmlRpcClient client = new XmlRpcClient();
+		client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
+		client.setConfig(config);
 		    
-		    
-		    ExtracteurConfig configuration = (ExtracteurConfig) SpringBeanFactory.getXmlFactory().getBean("extracteur");
-		    String urlCgi =  configuration.getUrl();
-		    //String xmlSchema = configuration.getSchema();
-		    LoggerPerso.log(GrapheCGI.class, LoggerPerso.DEBUG, urlCgi);
-		    //URL url = new URL("http://zeus/cgi-bin/eccad_extract.cgi");
-		    URL url;
-			try {
-				url = new URL(urlCgi);
-			} catch (MalformedURLException e) {
-				e.printStackTrace();
-				return "MalformedURLException erreur";
-			}
-		    config.setServerURL(url);
-		    //String xmlSchema = "./Schema_ECCAD1.xsd";
-		    XmlRpcClient client = new XmlRpcClient();
-		    client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
-		    client.setConfig(config);   
-		    //String requete = "<requete>	<parametre>1</parametre>	<produit>1</produit>	<colormap>-1</colormap>	<connexion>	<host>zeus</host>	<dbname>ECCAD2</dbname>	<user>wwwadm</user>	</connexion>	<domaine>	<lat-max>20</lat-max>	<lat-min>20</lat-min>	<lon-max>20</lon-max>	<lon-min>20</lon-min>	</domaine>	<temporel>	<begin>2002-11-01</begin>	<end>2003-10-31</end>	</temporel>	<fonction>	<nom>getGraphique</nom>	</fonction>	</requete>";
-		    
-		    String mode = "visu";
-		    Object[] params = new Object[]{requete, mode};
-		    LoggerPerso.log(Extract.class, LoggerPerso.DEBUG, "visu :: \n" + requete);
-		    String rslt;
-			try {
-				rslt = (String) client.execute("extract", params);
-			} catch (XmlRpcException e) {
-				e.printStackTrace();
-				return "XmlRpcException erreur";
-			}
-		    return rslt;
+		String mode = "visu";
+		Object[] params = new Object[]{requete, mode};
+		String rslt;
+		try {
+			rslt = (String) client.execute("extract", params);
+		} catch (XmlRpcException e) {
+			e.printStackTrace();
+			return "XmlRpcException erreur";
+		}
+		return rslt;
 	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceGraphe.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceGraphe.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceGraphe.java	(revision 70)
@@ -7,8 +7,11 @@
 import java.io.IOException;
 import java.io.OutputStream;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
-
-
 
 import org.jfree.chart.ChartFactory;
@@ -16,7 +19,9 @@
 import org.jfree.chart.JFreeChart;
 import org.jfree.chart.axis.DateAxis;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.NumberTickUnit;
 import org.jfree.chart.plot.XYPlot;
 import org.jfree.chart.renderer.xy.XYErrorRenderer;
-import org.jfree.data.time.Day;
+import org.jfree.data.time.FixedMillisecond;
 import org.jfree.data.time.TimeSeries;
 import org.jfree.data.time.TimeSeriesCollection;
@@ -28,5 +33,5 @@
 public class ServiceGraphe {
 	
-	public String genereGraphe(String identifiant, List<Valeur> liste_valeur) {
+	public String genereGraphe(String identifiant, List<Valeur> liste_valeur, String param, String produit, String unite, String secteur, String rcp, String alt) {
 		File fichier = new File(Donnees.getHome() + "/images/graphes_temporaires/" + identifiant +"_graphe.png");
 		OutputStream out = null;
@@ -34,10 +39,10 @@
 		try {
 			out = new FileOutputStream(fichier);
-			getGraphe(out, liste_valeur);
+			getGraphe(out, liste_valeur, param, produit, unite, secteur, rcp, alt);
 		} catch (FileNotFoundException e) {
-			LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "erreur d'Ã©criture du graphe", e);
+			LoggerPerso.log(ServiceGraphe.class, LoggerPerso.ERROR, "erreur d'Ã©criture du graphe", e);
 			return "/";
 		} catch (IOException e) {
-			LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "erreur d'Ã©criture du graphe", e);
+			LoggerPerso.log(ServiceGraphe.class, LoggerPerso.ERROR, "erreur d'Ã©criture du graphe", e);
 			return "/";
 		}
@@ -46,93 +51,139 @@
 	}
 	
-	public void getGraphe(OutputStream out, List<Valeur> liste_valeur) 
+	public void getGraphe(OutputStream out, List<Valeur> liste_valeur, String param, String produit, String unite, String secteur, String rcp, String alt) 
     throws IOException { 
     
-   // CategoryDataset dataset = new DefaultCategoryDataset(); 
-    TimeSeries time = new TimeSeries("", Day.class);
+		// CategoryDataset dataset = new DefaultCategoryDataset(); 
+		TimeSeries time = new TimeSeries("");
+		double min = Double.MAX_VALUE, max = -1;
+		DecimalFormat df = new DecimalFormat("0.##E0");
+		try {
+			Date dateVal;
+			String datePrec = "";
+			ArrayList<Double> vals = new ArrayList<Double>();
+			int nbGrilles = -1;
+			double val;
+			for (Valeur valeur : liste_valeur) {
+				val = Double.parseDouble(valeur.getValeur());
+				if (!valeur.getNom().equals(datePrec)) {
+					nbGrilles++;
+					vals.add(Double.valueOf(val));
+//					val = Double.parseDouble(valeur.getValeur());
+				} else {
+					vals.set(nbGrilles, Double.valueOf(vals.get(nbGrilles).doubleValue()+val));
+//					val += Double.parseDouble(valeur.getValeur());
+				}
+//  	  			LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "valeur graphe="+valeur.getValeur()+", nom="+valeur.getNom()+", val="+val+", format="+df.format(val));
+				dateVal = (new SimpleDateFormat("yyyyMMdd")).parse(valeur.getNom());
+				time.addOrUpdate(new FixedMillisecond(dateVal),vals.get(nbGrilles).doubleValue());
+				datePrec = valeur.getNom();
+//  		  	time.add(new Day(Integer.parseInt(valeur.getNom().substring(6, 8)), 
+//						 Integer.parseInt(valeur.getNom().substring(4, 6)), 
+//						 Integer.parseInt(valeur.getNom().substring(0, 4))), 
+//				Double.parseDouble(valeur.getValeur()));
+			}
+			for (int num = 0; num < vals.size(); num++) {
+				val = vals.get(num).doubleValue();
+				if (min > val) min = val;
+				if (max < val) max = val;
+			}
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
     
-    for (Valeur valeur : liste_valeur) {
-    	
-    	LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "______________________________________________valeur graphe string "+valeur.getValeur()+" double "+ Double.parseDouble(valeur.getValeur()));
-		
-    	
-    	time.add(new Day(Integer.parseInt(valeur.getNom().substring(6, 8)), 
-						 Integer.parseInt(valeur.getNom().substring(4, 6)), 
-						 Integer.parseInt(valeur.getNom().substring(0, 4))), 
-				 Double.parseDouble(valeur.getValeur()));
-	}
-    
-  /*time.add(new Day(1, 1, 2000), 10);
-   time.add(new Day(2, 1, 2000), 10);
-   time.add(new Day(3, 1, 2000), 10);
-   time.add(new Day(4, 1, 2000), 10);
-   time.add(new Day(5, 1, 2000), 10);
-   time.add(new Day(10, 1, 2000), 100);
-   time.add(new Day(11, 1, 2000), 100);
-   time.add(new Day(12, 1, 2000), 100);
-   time.add(new Day(13, 1, 2000), 100);
-   time.add(new Day(14, 1, 2000), 100);
-   time.add(new Day(15, 1, 2000), 100);*/
-   
-    
-   XYDataset dataset = new TimeSeriesCollection(time);
-   //dataset.setDomainIsPointsInTime(true);
-    JFreeChart barChart = ChartFactory.createTimeSeriesChart("", "", 
-      "", dataset, false, true, false); 
-    XYPlot plot = barChart.getXYPlot();
-    DateAxis axis = (DateAxis) plot.getDomainAxis();
-    axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd"));
-    plot.setRenderer(new XYErrorRenderer());
-    plot.getRenderer().setSeriesPaint(0, Color.blue);
-    
-    /*plot.setRenderer(new XYBarRenderer());
-    svgTest(barChart, "XYBarRenderer");
-    plot.setRenderer(new XYStepRenderer());
-    svgTest(barChart, "XYStepRenderer");
-    plot.setRenderer(new ClusteredXYBarRenderer());
-    svgTest(barChart, "ClusteredXYBarRenderer");
-    plot.setRenderer(new CyclicXYItemRenderer());
-	svgTest(barChart, "CyclicXYItemRenderer");
-    plot.setRenderer(new DefaultXYItemRenderer());
-	svgTest(barChart, "DefaultXYItemRenderer");
-    plot.setRenderer(new DeviationRenderer());
-	svgTest(barChart, "DeviationRenderer");
-    plot.setRenderer(new HighLowRenderer());
-	svgTest(barChart, "HighLowRenderer");
-    plot.setRenderer(new StandardXYItemRenderer());
-	svgTest(barChart, "StandardXYItemRenderer");
-    plot.setRenderer(new VectorRenderer());
-	svgTest(barChart, "VectorRenderer");
-    plot.setRenderer(new XYAreaRenderer());
-	svgTest(barChart, "XYAreaRenderer");
-    plot.setRenderer(new XYAreaRenderer2());
-	svgTest(barChart, "XYAreaRenderer2");
-    plot.setRenderer(new XYBarRenderer());
-	svgTest(barChart, "XYBarRenderer");
-    plot.setRenderer(new XYBlockRenderer());
-	svgTest(barChart, "XYBlockRenderer");
-    plot.setRenderer(new XYBubbleRenderer());
-    svgTest(barChart, "XYBubbleRenderer");
-    plot.setRenderer(new XYDifferenceRenderer());
-	svgTest(barChart, "XYDifferenceRenderer");
-    plot.setRenderer(new XYDotRenderer());
-	svgTest(barChart, "XYDotRenderer");
-    plot.setRenderer(new XYErrorRenderer());
-	svgTest(barChart, "XYErrorRenderer");
-    plot.setRenderer(new XYLine3DRenderer());
-	svgTest(barChart, "XYLine3DRenderer");
-    plot.setRenderer(new XYLineAndShapeRenderer());
-	svgTest(barChart, "XYLineAndShapeRenderer");
-    plot.setRenderer(new XYStepAreaRenderer());
-	svgTest(barChart, "XYStepAreaRenderer");
-    plot.setRenderer(new XYStepRenderer());
-	svgTest(barChart, "XYStepRenderer");
-    plot.setRenderer(new YIntervalRenderer());
-    svgTest(barChart, "YIntervalRenderer");*/
-   
-    
-    ChartUtilities.writeChartAsPNG(out, barChart, 720, 360);
-	
-	
+		XYDataset dataset = new TimeSeriesCollection(time);
+		//dataset.setDomainIsPointsInTime(true);
+		String titre = param;
+		if (produit.equals("IPCC")) {
+			titre += ", "+secteur;
+			if (!rcp.equals("None")) {
+				titre += ", RCP "+rcp;
+			}
+		}
+		titre += " : "+produit;
+		if (produit.equals("IPCC") && !alt.equals("0")) {
+			if (alt.equals("Sum"))
+				titre += " (Sum altitude)";
+			else
+				titre += " ("+alt+" km)";
+		}
+		JFreeChart barChart = ChartFactory.createTimeSeriesChart(titre, "Date", 
+				unite, dataset, false, true, false);
+		XYPlot plot = barChart.getXYPlot();
+		DateAxis axis = (DateAxis) plot.getDomainAxis();
+		axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd"));
+		plot.setRenderer(new XYErrorRenderer());
+		plot.getRenderer().setSeriesPaint(0, Color.blue);
+//		if (!unite.equals("pers/km2") && !unite.equals("%") && !unite.equals("km2") && !unite.equals("number of fires")) {
+//			plot.getRangeAxis().setStandardTickUnits(new StandardTickUnitSource());
+//		}
+//			plot.getRangeAxis().setUpperBound(max);
+//			plot.getRangeAxis().setLowerBound(min);
+		if (max != -1) {
+			NumberAxis na = (NumberAxis)plot.getRangeAxis();
+			na.setAutoTickUnitSelection(false);
+			if (max == min && min != 0) {
+				min = 0;
+			} else if (max == min && min == 0) {
+				max = 6;
+			}
+			na.setRangeWithMargins(min-(max-min)/20,max+(max-min)/20);
+			if (!unite.equals("pers/km2") && !unite.equals("%") && !unite.equals("km2") && !unite.equals("number of fires")) {
+				na.setTickUnit(new NumberTickUnit((max-min)/6,df));
+			} else {
+				na.setTickUnit(new NumberTickUnit((max-min)/6,NumberFormat.getIntegerInstance()));
+			}
+		}
+//  	plot.setBackgroundPaint(Color.white);
+
+//		plot.setRenderer(new StandardXYItemRenderer(
+//                StandardXYItemRenderer.LINES + StandardXYItemRenderer.SHAPES));
+
+		/*plot.setRenderer(new XYBarRenderer());
+    	svgTest(barChart, "XYBarRenderer");
+    	plot.setRenderer(new XYStepRenderer());
+    	svgTest(barChart, "XYStepRenderer");
+    	plot.setRenderer(new ClusteredXYBarRenderer());
+    	svgTest(barChart, "ClusteredXYBarRenderer");
+    	plot.setRenderer(new CyclicXYItemRenderer());
+		svgTest(barChart, "CyclicXYItemRenderer");
+    	plot.setRenderer(new DefaultXYItemRenderer());
+		svgTest(barChart, "DefaultXYItemRenderer");
+    	plot.setRenderer(new DeviationRenderer());
+		svgTest(barChart, "DeviationRenderer");
+    	plot.setRenderer(new HighLowRenderer());
+		svgTest(barChart, "HighLowRenderer");
+    	plot.setRenderer(new StandardXYItemRenderer());
+		svgTest(barChart, "StandardXYItemRenderer");
+    	plot.setRenderer(new VectorRenderer());
+		svgTest(barChart, "VectorRenderer");
+    	plot.setRenderer(new XYAreaRenderer());
+		svgTest(barChart, "XYAreaRenderer");
+    	plot.setRenderer(new XYAreaRenderer2());
+		svgTest(barChart, "XYAreaRenderer2");
+    	plot.setRenderer(new XYBarRenderer());
+		svgTest(barChart, "XYBarRenderer");
+    	plot.setRenderer(new XYBlockRenderer());
+		svgTest(barChart, "XYBlockRenderer");
+    	plot.setRenderer(new XYBubbleRenderer());
+    	svgTest(barChart, "XYBubbleRenderer");
+    	plot.setRenderer(new XYDifferenceRenderer());
+		svgTest(barChart, "XYDifferenceRenderer");
+    	plot.setRenderer(new XYDotRenderer());
+		svgTest(barChart, "XYDotRenderer");
+    	plot.setRenderer(new XYErrorRenderer());
+		svgTest(barChart, "XYErrorRenderer");
+    	plot.setRenderer(new XYLine3DRenderer());
+		svgTest(barChart, "XYLine3DRenderer");
+    	plot.setRenderer(new XYLineAndShapeRenderer());
+		svgTest(barChart, "XYLineAndShapeRenderer");
+    	plot.setRenderer(new XYStepAreaRenderer());
+		svgTest(barChart, "XYStepAreaRenderer");
+    	plot.setRenderer(new XYStepRenderer());
+		svgTest(barChart, "XYStepRenderer");
+    	plot.setRenderer(new YIntervalRenderer());
+    	svgTest(barChart, "YIntervalRenderer");*/
+
+		ChartUtilities.writeChartAsPNG(out, barChart, 720, 360);
 	}
 	
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceStatistique.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceStatistique.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceStatistique.java	(revision 70)
@@ -5,11 +5,7 @@
 import java.util.Map;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.helpers.SpringBeanFactory;
-import org.medias.eccad.helpers.XmlHelper;
 import org.medias.eccad.metier.generationRaster.GenerateurLegendRaster;
 import org.medias.eccad.metier.generationRaster.GenerateurLegendeImg;
-import org.medias.eccad.metier.generationRaster.GenerateurWorldFile;
 import org.medias.eccad.metier.generationRaster.InformationLegend;
 import org.medias.eccad.metier.generationRaster.colorMap.ColorMapping;
@@ -20,5 +16,4 @@
 import org.medias.eccad.modele.StatReponse;
 import org.medias.eccad.modele.Valeur;
-import org.medias.eccad.modele.Zone;
 import org.medias.eccad.persistance.dao.ColorTabDAO;
 import org.medias.eccad.persistance.exception.PersistanceException;
@@ -35,66 +30,61 @@
 	}
 	
-	public StatReponse getCarteStat(Map<String, String> criteres, long id_param, long id_produit, long id_colormap, String fonction, String id_unique) {
-		String xml = traducteur.encodeCritere(criteres, id_param, id_produit, id_colormap, fonction);
-		
+	public StatReponse getCarteStat(Map<String, String> criteres, long id_param, long id_produit, long id_colormap, long id_classdis, long id_secteur, long id_rcp, String alt, String fonction, long maskId) {
+		String xml = traducteur.encodeCritere(criteres, id_param, id_produit, id_colormap, id_classdis, id_secteur, id_rcp, alt, fonction, maskId);
+
 		// TODO: ici modifier pour prendre en compte la librairie de jean-luc
 		//RasterDAO rasterdao = new RasterDAO();
 		GrapheCGI rasterdao = new GrapheCGI();
-		////system.out.println(xml);
+
 		reponse = decodeReponse(rasterdao.getStatistique(xml));
 		if (reponse.getError() != null && !reponse.getError().equals(""))
 			return null;
 		
-		GenerateurWorldFile gen_worldfile = (GenerateurWorldFile) xmlbean.getBean("worldfile");
-		gen_worldfile.setPasX(reponse.getCarte().getPasX());
-		gen_worldfile.setPasY(reponse.getCarte().getPasY());
-		gen_worldfile.setPixelY(reponse.getZone().getNorthbc() - (reponse.getCarte().getPasY()/2));
-		gen_worldfile.setPixelX(reponse.getZone().getWestbc() + (reponse.getCarte().getPasY()/2));
+//		GenerateurWorldFile gen_worldfile = (GenerateurWorldFile) xmlbean.getBean("worldfile");
+//		gen_worldfile.setPasX(reponse.getCarte().getPasX());
+//		gen_worldfile.setPasY(reponse.getCarte().getPasY());
+//		gen_worldfile.setPixelY(reponse.getZone().getNorthbc() - (reponse.getCarte().getPasY()/2));
+//		gen_worldfile.setPixelX(reponse.getZone().getWestbc() + (reponse.getCarte().getPasX()/2));
 		
-		
-		String nom = reponse.getUrlImage();
-		
-		nom = nom.substring(0, nom.length()-4);
-		gen_worldfile.writeWorldFile(nom);
-		
-		////system.out.println(stat.getUrlImage());
-		//return reponse.getUrlImage(); 
+//		String nom = reponse.getUrlImage();
+
+//		nom = nom.substring(0, nom.length()-4);
+//		gen_worldfile.writeWorldFile(nom);
+
+		//return reponse.getUrlImage();
 		return reponse;
 	}
 	
-	public String getLegend(String fichier, long id_colormap, long id_grille) {
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "retour getLegend " + reponse.getMaximal() +" " + reponse.getMinimal());
-		ColorMapping colormap = getColorMap(id_colormap);
+	public String getLegend(String fichier, long id_colormap, long id_classdis, long id_grille, String fonction) {
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "retour getLegend " + reponse.getMaximal() + " " + reponse.getMinimal());
+		ColorMapping colormap = getColorMap(id_colormap,id_classdis);
 		InformationLegend info_legend = new InformationLegend();
 		GenerateurLegendRaster gen_legend = new GenerateurLegendeImg();
-		
-		gen_legend.genereLegendVertical(colormap, info_legend.getLegendDynamic(colormap.getColorTable(), reponse.getMaximal(), reponse.getMinimal()), info_legend.getInfoSup(id_grille));
+
+		gen_legend.genereLegendVertical(colormap, info_legend.getLegendDynamic(colormap.getColorTable(), reponse.getMaximal(), reponse.getMinimal()), info_legend.getInfoSup(id_grille,fonction));
 		gen_legend.enregistreLegend(fichier+".legend.png");
-		
+
 		return fichier+".legend.png";
 	}
-	
-	public ResultatStat getStatistique(Map<String, String> criteres, long id_param, long id_produit, String fonction) {
+
+	public ResultatStat getStatistique(Map<String, String> criteres, long id_param, long id_produit, long id_secteur, long id_rcp, String alt, String type, String fonction) {
 		//RasterDAO rasterdao = new RasterDAO();
 		GrapheCGI rasterdao = new GrapheCGI();
-		String xml = traducteur.encodeCritere(criteres, id_param, id_produit, new Long(-1), fonction);
-		//system.out.println(xml);
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "");
+		String xml = traducteur.encodeCritere(criteres, id_param, id_produit, -1, -1, id_secteur, id_rcp, alt, fonction, 0);
 		reponse = decodeReponse(rasterdao.getStatistique(xml));
 		if (reponse == null)
-			return new ResultatStat("0", "0", "0", "0", "0");
+			return new ResultatStat("0", "0", "0", "0", "0",type);
 		Map<String, String> map = reponse.getStatistique();
-		return new ResultatStat(map.get("min"), map.get("max"), map.get("moyenne"), map.get("ecartType"), map.get("somme"));
+		return new ResultatStat(map.get("min"), map.get("max"), map.get("moyenne"), map.get("ecartType"), map.get("somme"),type);
 	}
-	
-	public String getGraphe(String identifiant, Map<String, String> criteres, long id_param, long id_produit, String fonction) {
+
+	public String getGraphe(String identifiant, Map<String, String> criteres, long id_param, long id_produit, long id_secteur, long id_rcp, String alt, String param, String produit, String unite, String secteur, String rcp, String fonction) {
 		//RasterDAO rasterdao = new RasterDAO();
 		GrapheCGI rasterdao = new GrapheCGI();
-		String xml = traducteur.encodeCritere(criteres, id_param, id_produit, new Long(-1), fonction);
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "xml ::\n" + xml);
+		String xml = traducteur.encodeCritere(criteres, id_param, id_produit, -1, -1, id_secteur, id_rcp, alt, fonction, 0);
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "xml ::\n" + xml);
 		String str_reponse = rasterdao.getStatistique(xml);
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "reception OK");
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "str_reponse ::\n" + str_reponse);
 		reponse = decodeReponse(str_reponse);
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "decodage OK");
 		List<Valeur> graphe;
 		if (reponse == null)
@@ -102,18 +92,16 @@
 		else
 			graphe = reponse.getGraphe();
-		
-		return new ServiceGraphe().genereGraphe(identifiant, graphe);
+
+		return new ServiceGraphe().genereGraphe(identifiant, graphe, param, produit, unite, secteur, rcp, alt);
 	}
-	
-	
-	
+
 	public StatReponse decodeReponse(String reponse_xml) {
 		reponse = traducteur.getReponse(reponse_xml);
-		
+
 		if (reponse.getError() != null && !reponse.getError().equals(""))
 			return null;
 		return reponse;
 	}
-	
+
 	/**
 	 * Interroge la base de donnÃ©es pour obtenir la table de couleur de la grille
@@ -122,15 +110,15 @@
 	 * @return la table de couleur par dÃ©faut
 	 */
-	private ColorMapping getColorMap(long colormapid) {
+	private ColorMapping getColorMap(long colormapid, long classdisid) {
 		ColorTabDAO colorDAO = (ColorTabDAO) xmlbean.getBean("colorTabDAO");
-		
+
 		ColorTab colortab = null;
-		
+
 		try {
-			colortab = colorDAO.getColorMapByID(colormapid);
+			colortab = colorDAO.getColorMapByID(colormapid,classdisid);
 		} catch (PersistanceException e) {
 			e.printStackTrace();
 		}
-		
+
 		ColorMapping colormap = new ColorMappingLineaire();
 		colormap.setColorTable(colortab);
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestServiceCarte.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestServiceCarte.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestServiceCarte.java	(revision 70)
@@ -9,5 +9,5 @@
 	private ServiceCarte serv_carte;
 	private Zone zone_affiche;
-	private Zone zone_selection;
+//	private Zone zone_selection;
 	
 	
@@ -16,9 +16,9 @@
 		 serv_carte = new ServiceCarte();
 		 zone_affiche = new Zone(45.0, -45.0, 90, -90);
-		 zone_selection = new Zone(90.0, -90.0, 180, -180);
+//		 zone_selection = new Zone(90.0, -90.0, 180, -180);
 	}
 
 	public void testGetCarte() {
-		String nom_image = serv_carte.getCarte( 1, 32, zone_affiche ,"_test_carte_").getUrlImage();
+		String nom_image = serv_carte.getCarte( 1, 32, -1, zone_affiche ,"_test_carte_",null,0,false,false,0).getUrlImage();
 		assertEquals("/images/cartes_temporaires/_test_carte__1_32.png", nom_image);
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestServiceEmission.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestServiceEmission.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestServiceEmission.java	(revision 70)
@@ -1,5 +1,4 @@
 package org.medias.eccad.metier.test;
 
-import org.medias.eccad.metier.emission.ServiceEmission;
 import org.medias.eccad.modele.RequeteFacteurEmission;
 import org.medias.eccad.modele.Zone;
@@ -15,5 +14,5 @@
 
 	public void testGetCarte() {
-		ServiceEmission service = new ServiceEmission();
+//		ServiceEmission service = new ServiceEmission();
 		RequeteFacteurEmission requete = new RequeteFacteurEmission();
 		requete.setParamBurnt(new Long(5));
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestStatistique.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestStatistique.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TestStatistique.java	(revision 70)
@@ -27,6 +27,6 @@
 		
 		ServiceStatistique service = new ServiceStatistique();
-		service.getCarteStat(map, 1, 2, 3, "moyenneCarte", "id_unique");
-		String retour = "<requete>\n<parametre>1</parametre>\n<produit>2</produit>\n<colormap>3</colormap>\n<connexion>\n<host>zeus</host>\n<dbname>ECCAD2</dbname>\n<user>wwwadm</user>\n</connexion>\n<domaine>\n<lat-max>90.0</lat-max>\n<lat-min>-90.0</lat-min>\n<lon-max>180.0</lon-max>\n<lon-min>-180.0</lon-min>\n</domaine>\n<temporel>\n<begin>1970-01-01</begin>\n<end>1999-12-31</end>\n</temporel>\n<fonction>\n<name>moyenneCarte</name>\n</fonction>\n</requete>\n";	
+		service.getCarteStat(map, 1, 2, 3, 4, 5, 6, null, "moyenneCarte",0);
+//		String retour = "<requete>\n<parametre>1</parametre>\n<produit>2</produit>\n<colormap>3</colormap>\n<connexion>\n<host>zeus</host>\n<dbname>ECCAD2</dbname>\n<user>wwwadm</user>\n</connexion>\n<domaine>\n<lat-max>90.0</lat-max>\n<lat-min>-90.0</lat-min>\n<lon-max>180.0</lon-max>\n<lon-min>-180.0</lon-min>\n</domaine>\n<temporel>\n<begin>1970-01-01</begin>\n<end>1999-12-31</end>\n</temporel>\n<fonction>\n<name>moyenneCarte</name>\n</fonction>\n</requete>\n";	
 //		<requete><parametre>3</parametre><produit>4</produit><colormap>23</colormap><connexion><host>zeus</host><dbname>ECCAD2INT</dbname><user>wwwadm</user></connexion><domaine><lat-max>90.0</lat-max><lat-min>-90.0</lat-min><lon-max>180.0</lon-max><lon-min>-180.0</lon-min></domaine><temporel><begin>2005-01-01</begin><end>2015-01-01</end></temporel><fonction><name>moyenneCarte</name></fonction></requete>
 		//assertEquals(retour, service.encodeCritere(map,1, 2, new Long(3), "moyenneCarte"));
@@ -37,5 +37,5 @@
 		RasterDAO rasterdao = new RasterDAO();
 		
-		String retour = "<requete>\n<parametre>1</parametre>\n<produit>2</produit>\n<colormap>3</colormap>\n<connexion>\n<host>zeus</host>\n<dbname>ECCAD2</dbname>\n<user>wwwadm</user>\n</connexion>\n<domaine>\n<lat-max>90.0</lat-max>\n<lat-min>-90.0</lat-min>\n<lon-max>180.0</lon-max>\n<lon-min>-180.0</lon-min>\n</domaine>\n<temporel>\n<begin>1970-01-01</begin>\n<end>1999-12-31</end>\n</temporel>\n<fonction>\n<name>moyenneCarte</name>\n</fonction>\n</requete>\n";	
+//		String retour = "<requete>\n<parametre>1</parametre>\n<produit>2</produit>\n<colormap>3</colormap>\n<connexion>\n<host>zeus</host>\n<dbname>ECCAD2</dbname>\n<user>wwwadm</user>\n</connexion>\n<domaine>\n<lat-max>90.0</lat-max>\n<lat-min>-90.0</lat-min>\n<lon-max>180.0</lon-max>\n<lon-min>-180.0</lon-min>\n</domaine>\n<temporel>\n<begin>1970-01-01</begin>\n<end>1999-12-31</end>\n</temporel>\n<fonction>\n<name>moyenneCarte</name>\n</fonction>\n</requete>\n";	
 		//String xml = "<requete><parametre>3</parametre><produit>5</produit><colormap>32</colormap><connexion><host>zeus</host><dbname>ECCAD2</dbname><user>wwwadm</user></connexion><domaine><lat-max>90.0</lat-max><lat-min>-90.0</lat-min><lon-max>180.0</lon-max><lon-min>-180.0</lon-min></domaine><temporel><begin>1900-01-01</begin><end>2015-01-01</end></temporel><fonction><nom>moyenneCarte</nom></fonction></requete>";
 		String xml = "<requete><parametre>3</parametre><produit>18</produit><colormap>32</colormap><connexion><host>zeus</host><dbname>ECCAD2</dbname><user>wwwadm</user></connexion><domaine><lat-max>24</lat-max><lat-min>24</lat-min><lon-max>84</lon-max><lon-min>84</lon-min></domaine><temporel><begin>1900-01-01</begin><end>2015-01-01</end></temporel><fonction><nom>getStatistique</nom></fonction></requete>";
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TimeSeriesDemo.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TimeSeriesDemo.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/test/TimeSeriesDemo.java	(revision 70)
@@ -51,7 +51,4 @@
 import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
 import org.jfree.chart.renderer.xy.XYItemRenderer;
-import org.jfree.data.time.Day;
-import org.jfree.data.time.Month;
-import org.jfree.data.time.TimeSeries;
 import org.jfree.data.time.TimeSeriesCollection;
 import org.jfree.data.xy.XYDataset;
@@ -68,4 +65,9 @@
 
     /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
      * A demonstration application showing how to create a simple time series chart.  This
      * example uses monthly data.
@@ -118,8 +120,8 @@
         XYItemRenderer renderer = plot.getRenderer();
         if (renderer instanceof StandardXYItemRenderer) {
-            StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
+//            StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
             //rr.setPlotShapes(true);
-            rr.setShapesFilled(true);
-            rr.setItemLabelsVisible(true);
+//            rr.setShapesFilled(true);
+//            rr.setItemLabelsVisible(true);
         }
         
@@ -149,29 +151,29 @@
     private XYDataset createDataset() {
 
-        TimeSeries s1 = new TimeSeries("L&G European Index Trust", Day.class);
-        s1.add(new Day(2, 1, 2001), 181.8);
-        s1.add(new Day(3, 1, 2001), 167.3);
-        s1.add(new Day(4, 1, 2001), 153.8);
-        s1.add(new Day(5, 1, 2001), 167.6);
-        s1.add(new Day(6, 1, 2001), 158.8);
-        s1.add(new Day(7, 1, 2001), 148.3);
-        s1.add(new Day(8, 1, 2001), 153.9);
-        s1.add(new Day(9, 1, 2001), 142.7);
-        s1.add(new Day(10, 1, 2001), 123.2);
-        s1.add(new Day(11, 1, 2001), 131.8);
-        s1.add(new Day(12, 1, 2001), 139.6);
-        s1.add(new Day(13, 1, 2001), 142.9);
-        s1.add(new Day(14, 1, 2001), 138.7);
-        s1.add(new Day(15, 1, 2001), 137.3);
-        s1.add(new Day(16, 1, 2001), 143.9);
-        s1.add(new Day(17, 1, 2001), 139.8);
-        s1.add(new Day(18, 1, 2001), 137.0);
-        s1.add(new Day(19, 1, 2001), 132.8);
+//        TimeSeries s1 = new TimeSeries("L&G European Index Trust", Day.class);
+//        s1.add(new Day(2, 1, 2001), 181.8);
+//        s1.add(new Day(3, 1, 2001), 167.3);
+//        s1.add(new Day(4, 1, 2001), 153.8);
+//        s1.add(new Day(5, 1, 2001), 167.6);
+//        s1.add(new Day(6, 1, 2001), 158.8);
+//        s1.add(new Day(7, 1, 2001), 148.3);
+//        s1.add(new Day(8, 1, 2001), 153.9);
+//        s1.add(new Day(9, 1, 2001), 142.7);
+//        s1.add(new Day(10, 1, 2001), 123.2);
+//        s1.add(new Day(11, 1, 2001), 131.8);
+//        s1.add(new Day(12, 1, 2001), 139.6);
+//        s1.add(new Day(13, 1, 2001), 142.9);
+//        s1.add(new Day(14, 1, 2001), 138.7);
+//        s1.add(new Day(15, 1, 2001), 137.3);
+//        s1.add(new Day(16, 1, 2001), 143.9);
+//        s1.add(new Day(17, 1, 2001), 139.8);
+//        s1.add(new Day(18, 1, 2001), 137.0);
+//        s1.add(new Day(19, 1, 2001), 132.8);
 
 
         TimeSeriesCollection dataset = new TimeSeriesCollection();
-        dataset.addSeries(s1);
+//        dataset.addSeries(s1);
 
-        dataset.setDomainIsPointsInTime(true);
+//        dataset.setDomainIsPointsInTime(true);
 
         return dataset;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurStat.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurStat.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurStat.java	(revision 70)
@@ -6,6 +6,4 @@
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Logger;
-
 
 import org.dom4j.Document;
@@ -24,23 +22,29 @@
 public class TraducteurStat {
 	XmlBeanFactory xmlbean;
-	
+
 	public TraducteurStat() {
 		xmlbean = SpringBeanFactory.getXmlFactory();
 	}
-	
-	public String encodeCritere(Map<String, String> criteres, long id_param, long id_produit, Long id_colormap, String fonction) {
-		return encodeCritere(criteres, id_param, id_produit, id_colormap, fonction, null);
+
+	public String encodeCritere(Map<String, String> criteres, long id_param, long id_produit, long id_colormap, long id_classdis, long id_secteur, long id_rcp, String alt, String fonction, long id_mask) {
+		return encodeCritere(criteres, id_param, id_produit, id_colormap, id_classdis, id_secteur, id_rcp, alt, fonction, null, id_mask);
 	}
-	
-	public String encodeCritere(Map<String, String> criteres, long id_param, long id_produit, Long id_colormap, String fonction, Long id_grille) {
+
+	public String encodeCritere(Map<String, String> criteres, long id_param, long id_produit, long id_colormap, long id_classdis, long id_secteur, long id_rcp, String alt, String fonction, Long id_grille, long id_mask) {
 		String xml = new String();
 		InfoConnectBean infoconnect = (InfoConnectBean) xmlbean.getBean("infoConnect");
-		
+
 		xml = "<requete>\n";
-		
+
 		xml += XmlHelper.createNode("parametre", id_param);
 		xml += XmlHelper.createNode("produit", id_produit);
 		xml += XmlHelper.createNode("colormap", id_colormap);
-		
+		xml += XmlHelper.createNode("scalevalue", id_classdis);
+		xml += XmlHelper.createNode("secteur", id_secteur);
+		xml += XmlHelper.createNode("rcp", id_rcp);
+		if (alt == null || alt.equals("")) alt = "0";
+		xml += XmlHelper.createNode("alt", alt);
+		xml += XmlHelper.createNode("mask", id_mask);
+
 		xml += "<connexion>\n";
 		xml += XmlHelper.createNode("host", infoconnect.getDb_url());
@@ -48,5 +52,5 @@
 		xml += XmlHelper.createNode("user", infoconnect.getDb_login());
 		xml += "</connexion>\n";
-		
+
 		xml += "<domaine>\n";
 		xml += XmlHelper.createNode("lat-max", getValeur("lat-max", criteres));
@@ -55,10 +59,10 @@
 		xml += XmlHelper.createNode("lon-min", getValeur("lon-min", criteres));
 		xml += "</domaine>\n";
-		
+
 		xml += "<temporel>\n";
 		xml += XmlHelper.createNode("begin", getValeur("beg-date", criteres));
 		xml += XmlHelper.createNode("end", getValeur("end-date", criteres));
 		xml += "</temporel>\n";
-		
+
 		xml += "<fonction>\n";
 		xml += XmlHelper.createNode("nom", fonction);
@@ -72,11 +76,10 @@
 		}
 		xml += "</fonction>\n";
-		
-		
+
 		xml += "</requete>\n";
-		//system.out.println(xml);
+//		System.out.println(xml);
 		return xml;
 	}
-	
+
 	private String getValeur(String critere, Map<String, String> criteres) {
 		String valeur = criteres.get(critere);
@@ -85,67 +88,63 @@
 		return valeur;
 	}
-	
+
 	public StatReponse getReponse(String xml) {
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "getXMLtoDocument");
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "getXMLtoDocument + " + xml + "\n mon xml");
 		Document doc = null;
 		try {
-			LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "getXMLtoDocument :: " + xml.getBytes("ISO-8859-1").length);
-		
-		doc = XmlHelper.getXMLtoDocument(new ByteArrayInputStream(xml.getBytes("ISO-8859-1")), null);
-		}
-		catch (Exception e) {
+			doc = XmlHelper.getXMLtoDocument(new ByteArrayInputStream(xml.getBytes("ISO-8859-1")), null);
+		} catch (Exception e) {
 			LoggerPerso.log(TraducteurStat.class, LoggerPerso.ERROR, "erreur encodage");
 		}
-		
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "getXMLtoDocument ok : " + xml);
+
+//		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "getXMLtoDocument=\n" + xml);
 		String erreur = getError(doc);
-		
+
 		if (erreur != null)
 			return new StatReponse(erreur);
-		
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse zone");
+
 		Zone zone = new Zone(Double.parseDouble(getValue(doc, "//domaine/lat-max")),
 							 Double.parseDouble(getValue(doc, "//domaine/lat-min")),
 							 Double.parseDouble(getValue(doc, "//domaine/lon-max")),
 							 Double.parseDouble(getValue(doc, "//domaine/lon-min")));
-		
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse zone ok");
+
+//		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse zone ok");
 		Temporel tempo = new Temporel(getValue(doc, "//temporel/begin"), getValue(doc, "//temporel/end"));
-		
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse url");
+
+//		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse url");
 		String url = getValue(doc, "//image-path");
 		InfoCarte info = null;
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse info");
+//		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse info");
 		if (!getValue(doc, "//pas/pas-lon").equals("") || !getValue(doc, "//pas/pas-lat").equals(""))
-			info = new InfoCarte(Double.parseDouble(getValue(doc, "//pas/pas-lon")), Double.parseDouble(getValue(doc, "//pas/pas-lat")));		
-		
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse variable");
+			info = new InfoCarte(Double.parseDouble(getValue(doc, "//pas/pas-lon")), Double.parseDouble(getValue(doc, "//pas/pas-lat")));
+
+//		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "parse variable");
 		Map<String, String> map = getMapValue(doc, "//statistique/variable", "nom", "valeur");
-		
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "recuperation liste point");
-		List<Valeur> graphe     = getListValue(doc, "//graphe/point", "x", "y");
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "recuperation liste point ok");
+
+//		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "recuperation liste point");
+		List<Valeur> graphe = getListValue(doc, "//graphe/point", "x", "y");
+//		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "recuperation liste point ok");
 		Float min = getFloatValue(doc, "//extremes/mini");
 		Float max = getFloatValue(doc, "//extremes/maxi");
-		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "recuperation min max " + min + " : " + max);
+//		LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "recuperation min max " + min + " : " + max);
 		StatReponse reponse = new StatReponse(zone, tempo, info, url, map, graphe);
 		reponse.setMaximal(max);
 		reponse.setMinimal(min);
-		
+
 		Float centerValue = getFloatValue(doc, "//center/center-value");
 		reponse.setCenter(centerValue);
-		
+
 		Float centerLat = getFloatValue(doc, "//center/center-lat");
 		reponse.setCenterLat(centerLat);
-		
+
 		Float centerLon = getFloatValue(doc, "//center/center-lon");
 		reponse.setCenterLon(centerLon);
 		
+		Float globalSum = getFloatValue(doc, "//total");
+		reponse.setGlobalSum(globalSum);
 		return reponse;
 	}
-	
+
 	private String getError(Document doc) {
-		Node noeud = doc.selectSingleNode("//error");
+		Node noeud = (doc==null?null:doc.selectSingleNode("//error"));
 		if (noeud == null)
 			return null;
@@ -153,47 +152,45 @@
 			return noeud.getText();
 	}
-	
+
 	private Map<String, String> getMapValue(Document doc, String xpath, String nom, String valeur) {
-		List liste_node = doc.selectNodes(xpath);
+		List<?> liste_node = doc.selectNodes(xpath);
 		Map<String, String> map = new HashMap<String, String>();
-		
+
 		for (Object onode : liste_node) {
 			map.put(((Node)onode).selectSingleNode("./" + nom).getText(), ((Node)onode).selectSingleNode("./" + valeur).getText());
 		}
-		////system.out.println(map);
 		return map;
 	}
-	
+
 	private List<Valeur> getListValue(Document doc, String xpath, String nom, String valeur) {
-		List liste_node = doc.selectNodes(xpath);
+		List<?> liste_node = doc.selectNodes(xpath);
 		List<Valeur> liste = new LinkedList<Valeur>();
-		
+
 		for (Object onode : liste_node) {
-			//LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "node en cours" + onode.toString());
+//			LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "nom=" + (((Node)onode).selectSingleNode("./" + nom).getText())+", val="+(((Node)onode).selectSingleNode("./" + valeur).getText()));
 			liste.add(new Valeur(((Node)onode).selectSingleNode("./" + nom).getText(), ((Node)onode).selectSingleNode("./" + valeur).getText()));
 		}
-		////system.out.println(liste);
 		return liste;
 	}
-	
+
 	private String getValue(Document doc, String xpath) {
-		Node noeud = doc.selectSingleNode(xpath);
-		
+		Node noeud = (doc==null?null:doc.selectSingleNode(xpath));
+
 		if (noeud == null) {
-			LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "pas de valeur pour : " + xpath);
+//			LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "pas de valeur pour : " + xpath);
 			return "";
 		}
-		
+
 		return noeud.getText();
 	}
-	
+
 	private Float getFloatValue(Document doc, String xpath) {
 		Node noeud = doc.selectSingleNode(xpath);
-		
+
 		if (noeud == null) {
-			LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "pas de valeur pour : " + xpath);
+//			LoggerPerso.log(TraducteurStat.class, LoggerPerso.DEBUG, "pas de valeur pour : " + xpath);
 			return new Float(0.0);
 		}
-		
+
 		return Float.parseFloat(noeud.getText());
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisu.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisu.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisu.java	(revision 70)
@@ -8,4 +8,4 @@
 
 public interface TraducteurVisu {
-	public List<SelectItem> getListGrille(List<Grille> liste);
+	public List<SelectItem> getListGrille(List<Grille> liste, String delta, String nomProd);
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisuMultiplan.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisuMultiplan.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisuMultiplan.java	(revision 70)
@@ -6,16 +6,20 @@
 import javax.faces.model.SelectItem;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.modele.Grille;
 
 public class TraducteurVisuMultiplan implements TraducteurVisu {
 	
-	public List<SelectItem> getListGrille(List<Grille> liste) {
+	public List<SelectItem> getListGrille(List<Grille> liste, String delta, String nomProd) {
 		List<SelectItem> liste_grille = new LinkedList<SelectItem>();
-		LoggerPerso.log(TraducteurVisu.class, LoggerPerso.DEBUG, "traducteur visu multiplan :: getListGrille " + liste_grille.size());
+//		LoggerPerso.log(TraducteurVisu.class, LoggerPerso.DEBUG, "traducteur visu multiplan :: getListGrille " + liste_grille.size());
 		for (Grille grille : liste) {
 			if (grille.getLegend() == null)
 				grille.setLegend("");
+			else if (grille.getLegend().equals("Water")) {
+				if (nomProd.indexOf("Country") != -1)
+					grille.setLegend("All countries");
+				else if (nomProd.indexOf("Region") != -1)
+					grille.setLegend("All regions");
+			}
 			liste_grille.add(new SelectItem(new Long(grille.getId_grille()), grille.getLegend()));
 		}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisuTemporel.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisuTemporel.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/traducteur/TraducteurVisuTemporel.java	(revision 70)
@@ -6,15 +6,19 @@
 import javax.faces.model.SelectItem;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.modele.Grille;
 
 public class TraducteurVisuTemporel implements TraducteurVisu {
 
-	public List<SelectItem> getListGrille(List<Grille> liste) {
+	public List<SelectItem> getListGrille(List<Grille> liste, String delta, String nomProd) {
 		List<SelectItem> liste_grille = new LinkedList<SelectItem>();
-		LoggerPerso.log(TraducteurVisu.class, LoggerPerso.DEBUG, "traducteur visu temporel :: getListGrille");
+//		LoggerPerso.log(TraducteurVisu.class, LoggerPerso.DEBUG, "traducteur visu temporel :: getListGrille");
 		for (Grille grille : liste) {
-			liste_grille.add(new SelectItem(new Long(grille.getId_grille()), grille.getDate().toString()));
+			if (delta != null && delta.equals("1 mon")) {
+				liste_grille.add(new SelectItem(new Long(grille.getId_grille()), grille.getDate().toString().substring(0,7)));
+			} else if (delta != null && delta.equals("1 year")) {
+				liste_grille.add(new SelectItem(new Long(grille.getId_grille()), grille.getDate().toString().substring(0,4)));
+			} else {
+				liste_grille.add(new SelectItem(new Long(grille.getId_grille()), grille.getDate().toString()));
+			}
 		}
 		
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Grille.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Grille.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Grille.java	(revision 70)
@@ -2,4 +2,5 @@
 
 import java.sql.Date;
+import java.util.Comparator;
 
 public class Grille {
@@ -9,4 +10,7 @@
 	private long id_param;
 	private long id_produit;
+	private long id_secteur;
+	private long id_rcp;
+	private int number_code;
 	
 	public Grille() {
@@ -20,9 +24,10 @@
 	}
 	
-	public Grille(long id_grille, Date date, String legend) {
+	public Grille(long id_grille, Date date, String legend, int numberCode) {
 		super();
 		this.id_grille = id_grille;
 		this.date = date;
 		this.legend = legend;
+		this.number_code = numberCode;
 	}
 	public Date getDate() {
@@ -65,3 +70,34 @@
 		this.id_produit = id_produit;
 	}
+
+	public long getId_secteur() {
+		return id_secteur;
+	}
+
+	public void setId_secteur(long idSecteur) {
+		id_secteur = idSecteur;
+	}
+
+	public long getId_rcp() {
+		return id_rcp;
+	}
+
+	public void setId_rcp(long idRcp) {
+		id_rcp = idRcp;
+	}
+
+	public int getNumber_code() {
+		return number_code;
+	}
+
+	public void setNumber_code(int numberCode) {
+		number_code = numberCode;
+	}
+	
+    public class ComparatorNumberCode implements Comparator<Grille>{
+        public int compare(Grille g1, Grille g2){
+            return new Integer(g1.getNumber_code()).compareTo(new Integer(g2.getNumber_code()));
+        }
+    }
+
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Parametre.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Parametre.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Parametre.java	(revision 70)
@@ -7,4 +7,6 @@
 	private String unite;
 	private String order;
+	private int colormapDefault;
+	private int classdisDefault;
 	
 	public Parametre(int identifiant, String nom) {
@@ -52,5 +54,19 @@
 		this.order = order;
 	}
-	
-	
+
+	public int getColormapDefault() {
+		return colormapDefault;
+	}
+
+	public void setColormapDefault(int colormapDefault) {
+		this.colormapDefault = colormapDefault;
+	}
+
+	public int getClassdisDefault() {
+		return classdisDefault;
+	}
+
+	public void setClassdisDefault(int classdisDefault) {
+		this.classdisDefault = classdisDefault;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Produit.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Produit.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Produit.java	(revision 70)
@@ -12,4 +12,7 @@
 	private String temporalres;
 	private String type;
+	private String citation;
+	private String useconst;
+	private String informpub;
 	
 	public Date getBeginDate() {
@@ -95,3 +98,27 @@
 		this.type = type;
 	}
+
+	public String getCitation() {
+		return citation;
+	}
+
+	public void setCitation(String citation) {
+		this.citation = citation;
+	}
+
+	public String getUseconst() {
+		return useconst;
+	}
+
+	public void setUseconst(String useconst) {
+		this.useconst = useconst;
+	}
+
+	public String getInformpub() {
+		return informpub;
+	}
+
+	public void setInformpub(String informpub) {
+		this.informpub = informpub;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/RequeteFacteurEmission.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/RequeteFacteurEmission.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/RequeteFacteurEmission.java	(revision 70)
@@ -13,4 +13,9 @@
 	private Long produitBurnt;
 	private Long colormap;
+	private Long classdis;
+	private Long id_secteur;
+	private Long id_rcp;
+	private String alt;
+	private Long id_mask;
 	private Zone zone;
 	private String datedeb;
@@ -23,6 +28,6 @@
 	private long burningEff;
 
-	public String toXml(boolean fonction) {
-String xml = new String();
+	public String toXml() {
+		String xml = new String();
 		
 		xml += "<requete>\n";
@@ -31,5 +36,9 @@
 		xml += XmlHelper.createNode("produit", produitBurnt);
 		xml += XmlHelper.createNode("colormap", colormap);
-		
+		xml += XmlHelper.createNode("scalevalue", classdis);
+		xml += XmlHelper.createNode("secteur", id_secteur);
+		xml += XmlHelper.createNode("rcp", id_rcp);
+		xml += XmlHelper.createNode("alt", alt);
+		xml += XmlHelper.createNode("mask", id_mask);
 		
 		InfoConnectBean infoconnect = (InfoConnectBean) SpringBeanFactory.getXmlFactory().getBean("infoConnect");
@@ -60,5 +69,4 @@
 		xml += XmlHelper.createNode("valeur", emissionFactor);
 		xml += "</param>\n";*/
-
 		
 		xml += "<param>\n";
@@ -66,6 +74,5 @@
 		xml += XmlHelper.createNode("valeur", gaz);
 		xml += "</param>\n";
-
-		
+	
 		/*
 		xml += "<param>\n";
@@ -90,7 +97,4 @@
 			
 			// FIXME truc crade pour sortir l'id des classes \o/
-			
-			
-			
 			try {
 				xml += XmlHelper.createNode("nom", codeDAO.getNumberCode(id_classe));
@@ -98,21 +102,12 @@
 				e.printStackTrace();
 			}
-			
 			xml += XmlHelper.createNode("valeur", id_classe);
 			xml += "</param>\n";
 		}
-		
 		xml += "</params>\n";
-		
 		xml += "</fonction>\n";
-		
 		xml += "</requete>";
-		
+//		System.out.println(xml);
 		return xml;
-	}
-	
-	
-	public String toXml() {
-		return toXml(true);
 	}
 	
@@ -125,4 +120,12 @@
 	}
 
+	public Long getClassdis() {
+		return classdis;
+	}
+
+	public void setClassdis(Long classdis) {
+		this.classdis = classdis;
+	}
+
 	public String getDatedeb() {
 		return datedeb;
@@ -212,4 +215,36 @@
 		this.burningEff = burningEff;
 	}
+
+	public Long getId_secteur() {
+		return id_secteur;
+	}
+
+	public void setId_secteur(Long idSecteur) {
+		id_secteur = idSecteur;
+	}
+
+	public Long getId_rcp() {
+		return id_rcp;
+	}
+
+	public void setId_rcp(Long idRcp) {
+		id_rcp = idRcp;
+	}
+
+	public String getAlt() {
+		return alt;
+	}
+
+	public void setAlt(String alt) {
+		this.alt = alt;
+	}
+
+	public Long getId_mask() {
+		return id_mask;
+	}
+
+	public void setId_mask(Long idMask) {
+		id_mask = idMask;
+	}
 	
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/ResultatStat.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/ResultatStat.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/ResultatStat.java	(revision 70)
@@ -2,7 +2,5 @@
 
 import java.lang.Double;
-
-import org.medias.eccad.helpers.LoggerPerso;
-import org.medias.eccad.metier.statistique.ServiceStatistique;
+import java.math.BigDecimal;
 
 public class ResultatStat {
@@ -19,5 +17,5 @@
 	}
 
-	public ResultatStat(String min, String max, String moyenne, String ecart, String somme) {
+	public ResultatStat(String min, String max, String moyenne, String ecart, String somme, String type) {
 		super();
 		
@@ -28,21 +26,23 @@
 		somme = fixeDecimal(somme);*/
 		
-		
-		
 		double minFloat = Double.parseDouble(min);
 		double maxFloat = Double.parseDouble(max);
 		double moyenneFloat = Double.parseDouble(moyenne);  
 		double ecartFloat = Double.parseDouble(ecart); 
-		double sommeFloat = Double.parseDouble(somme); 
+		double sommeFloat = Double.parseDouble(somme);
+		// On arrondit le min, le max et la somme si on attend des valeurs entiÃšres en sortie
+		if (type.equals("positive integer")) {
+			minFloat = (new BigDecimal(Math.round(minFloat))).doubleValue();
+			maxFloat = (new BigDecimal(Math.round(maxFloat))).doubleValue();
+			sommeFloat = (new BigDecimal(Math.round(sommeFloat))).doubleValue();
+		}
 		
-		
-		
-		min = (String)Double.toString(minFloat);
-		max = (String)Double.toString(maxFloat);
-		moyenne = (String)Double.toString(moyenneFloat);
-		ecart = (String)Double.toString(ecartFloat);
-		somme = (String)Double.toString(sommeFloat);
+		min = Double.toString(minFloat);
+		max = Double.toString(maxFloat);
+		moyenne = Double.toString(moyenneFloat);
+		ecart = Double.toString(ecartFloat);
+		somme = Double.toString(sommeFloat);
 
-		LoggerPerso.log(ResultatStat.class, LoggerPerso.DEBUG, "min : "+ min + fixeDecimal(moyenne));
+//		LoggerPerso.log(ResultatStat.class, LoggerPerso.DEBUG, "min : "+ min + "   max : "+ max + " - fixeDecimal : "+fixeDecimal(moyenne));
 		//min = fixeDecimal(min.toString());
 		
@@ -64,26 +64,31 @@
 	
 	private String fixeDecimal(String entree) {
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree 1 "+entree);
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree 1 "+entree);
 		if (entree == null)
 			return "nc";
 		int index = entree.lastIndexOf(".");
 		int indexE = entree.lastIndexOf("E");
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree  --lll-->2 "+indexE+"  "+index+"  "+entree.length());
-		if ( indexE == -1 && index != -1 && entree.length() >= index + 5) {
-			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "cas 1 entree");
-			entree = entree.substring(0, entree.lastIndexOf(".")+5);
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree  --lll-->2 "+indexE+"  "+index+"  "+entree.length());
+//		if ( indexE == -1 && index != -1 && entree.length() >= index + 5) {
+//			entree = entree.substring(0, entree.lastIndexOf(".")+5);
+//		}
+//		else if ( indexE != -1 && index != -1 && entree.length() >= index + 5)
+//		{
+//			String aEntree = entree;
+//			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "aEntree "+aEntree.lastIndexOf("E")+"  "+aEntree.length()+"    "+aEntree.lastIndexOf("E")+"  "+aEntree.length());
+//			aEntree = aEntree.substring(aEntree.lastIndexOf("E"), aEntree.lastIndexOf("E")+aEntree.length()-aEntree.lastIndexOf("E"));
+			//entree = entree.substring(0, entree.lastIndexOf(".")+5)+aEntree;
+//			entree = entree.substring(0, entree.substring(0 , entree.lastIndexOf("E")).length()) + aEntree;
+//		}
+		
+		// Le nombre a une virgule et pas de puissance de 10 (n=xx.xxx)
+		if (indexE == -1 && index != -1 && entree.length() >= index + 3) {
+			entree = entree.substring(0,index+3);
 		}
-		else if ( indexE != -1 && index != -1 && entree.length() >= index + 5)
-		{
-			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "cas 2 entree");
-			String aEntree = entree;
-			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "aEntree "+aEntree.lastIndexOf("E")+"  "+aEntree.length()+"    "+aEntree.lastIndexOf("E")+"  "+aEntree.length());
-			aEntree=aEntree.substring(aEntree.lastIndexOf("E"), aEntree.lastIndexOf("E")+aEntree.length()-aEntree.lastIndexOf("E"));
-			entree = entree.substring(0, entree.lastIndexOf(".")+5)+aEntree;
+		// Le nombre a une virgule et une puissance de 10 (n=xx.xxxExx)
+		else if ( indexE != -1 && index != -1 && entree.substring(0,indexE).length() >= index + 3) {
+			entree = entree.substring(0,index+3)+entree.substring(indexE);
 		}
-		else {
-			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree= "+entree);
-		}
-		
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree "+entree);
 		return entree;
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/StatReponse.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/StatReponse.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/StatReponse.java	(revision 70)
@@ -17,4 +17,5 @@
 	private Float centerLat;
 	private Float centerLon;
+	private Float globalSum;
 	
 	public StatReponse(String error) {
@@ -27,5 +28,4 @@
 			return valeur;
 		}
-	
 	
 	public StatReponse(Zone zone, Temporel tempo, InfoCarte carte, String urlImage, Map<String, String> statistique, List<Valeur> graphe) {
@@ -99,11 +99,7 @@
 	}
 
-
-
 	public List<Valeur> getGraphe() {
 		return graphe;
 	}
-
-
 
 	public void setGraphe(List<Valeur> graphe) {
@@ -111,11 +107,7 @@
 	}
 
-
-
 	public Float getMaximal() {
 		return maximal;
 	}
-
-
 
 	public void setMaximal(Float maximal) {
@@ -123,11 +115,7 @@
 	}
 
-
-
 	public Float getMinimal() {
 		return minimal;
 	}
-
-
 
 	public void setMinimal(Float minimal) {
@@ -139,16 +127,11 @@
 	}
 
-
-
 	public void setCenter(Float aCenter) {
 		this.center = aCenter;
 	}
-	
 
 	public Float getCenterLat() {
 		return centerLat;
 	}
-
-
 
 	public void setCenterLat(Float aCenterLat) {
@@ -160,9 +143,14 @@
 	}
 
-
-
 	public void setCenterLon(Float aCenterLon) {
 		this.centerLon = aCenterLon;
 	}
-	
+
+	public Float getGlobalSum() {
+		return globalSum;
+	}
+
+	public void setGlobalSum(Float globalSum) {
+		this.globalSum = globalSum;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Zone.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Zone.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/modele/Zone.java	(revision 70)
@@ -2,4 +2,5 @@
 
 import java.text.NumberFormat;
+import java.util.Locale;
 
 public class Zone {
@@ -16,5 +17,5 @@
 		this.eastbc = eastbc;
 		this.westbc = westbc;
-		numberFormat = NumberFormat.getNumberInstance();
+		numberFormat = NumberFormat.getNumberInstance(Locale.US);
 		numberFormat.setMaximumFractionDigits(2);
 	}
@@ -26,5 +27,5 @@
 		this.eastbc = 0;
 		this.westbc = 0;
-		numberFormat = NumberFormat.getNumberInstance();
+		numberFormat = NumberFormat.getNumberInstance(Locale.US);
 		numberFormat.setMaximumFractionDigits(2);
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/GestionFichier.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/GestionFichier.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/GestionFichier.java	(revision 70)
@@ -36,5 +36,5 @@
          out.close();
         } catch (IOException e) {
-         //system.out.println(e.toString());
+			e.printStackTrace();
         } 
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/PropertiesDatabase.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/PropertiesDatabase.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/PropertiesDatabase.java	(revision 70)
@@ -12,10 +12,10 @@
 	
 	public PropertiesDatabase() {
-		LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement fichier de properties");
+//		LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement fichier de properties");
 		String fichierProp = Lanceur.class.getResource("").getPath() + "/../../../../../propriete/serveur.properties";
 		fichierProp.replaceAll("%20", " ");
 		prop = new Properties();
 		try {
-			LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement de : " + fichierProp);
+//			LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement de : " + fichierProp);
 			prop.load(new FileInputStream(fichierProp));
 		} catch (Exception e) {
@@ -36,5 +36,5 @@
 		info.setDb_passwd(prop.getProperty("password"));
 		
-		LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement :" + info);
+//		LoggerPerso.log(PropertiesDatabase.class, LoggerPerso.DEBUG, "chargement :" + info);
 		return info;
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/SGBD_jdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/SGBD_jdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/SGBD_jdbc.java	(revision 70)
@@ -17,4 +17,5 @@
 import org.medias.eccad.modele.Parametre;
 import org.medias.eccad.modele.Produit;
+import org.medias.eccad.modele.Secteur;
 import org.postgresql.ds.PGPoolingDataSource;
 import org.postgresql.largeobject.LargeObject;
@@ -28,7 +29,7 @@
 	public SGBD_jdbc(InfoConnectBean info) {
 		con = null;
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "construction connection");
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "construction connection");
 		if (pooling == null) {
-			LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "creation pooling :: " + info);
+//			LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "creation pooling :: " + info);
 			pooling = new PGPoolingDataSource();
 			pooling.setDatabaseName(info.getDb_name());
@@ -188,5 +189,5 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListParametre::taille::"+liste_param.size());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListParametre::taille::"+liste_param.size());
 		return liste_param;
 	}
@@ -198,5 +199,5 @@
 		
 		requete = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-		sql = "select distinct id_produit, title_produit, begintime_produit, endtime_produit from produit join grille using (id_produit) where id_param = " + id_param + ";";
+		sql = "select distinct id_produit, title_produit, begintime_produit, endtime_produit, order_produit from produit join grille using (id_produit) where id_param = " + id_param + " order by order_produit;";
 		
 		ResultSet resultat = requete.executeQuery(sql);
@@ -209,5 +210,5 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListProduit::taille::"+liste_param.size());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListProduit::taille::"+liste_param.size());
 		return liste_param;
 		
@@ -228,5 +229,5 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getParametreById::nom::"+ param.getNom());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getParametreById::nom::"+ param.getNom());
 
 		return param;
@@ -250,5 +251,5 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getProduitById::nom::"+ produit.getNom() + "::date::" + produit.getBeginDate());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getProduitById::nom::"+ produit.getNom() + "::date::" + produit.getBeginDate());
 
 		return produit;
@@ -263,5 +264,5 @@
 		requete = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
 		sql = "select distinct valeurs_grille, date_grille from grille where id_produit = " + id_produit + " and date_grille >= '" + date_debut + "' and date_grille <= '" + date_fin + "' order by date_grille;";
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::requete :: " + sql);
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::requete :: " + sql);
 		ResultSet resultat = requete.executeQuery(sql);
 		
@@ -270,9 +271,26 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::taille::"+liste_param.size() + "id_produit::" + id_produit);
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::taille::"+liste_param.size() + "id_produit::" + id_produit);
 		return liste_param;
 	}
 	
-	
+	public List<Secteur> getListSectorByParam(int id_param) throws SQLException {
+		Statement requete;
+		String sql;
+		List<Secteur> liste_secteur = new LinkedList<Secteur>();
+		
+		requete = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+		sql = "select id_secteur, fullname_secteur, id_categorieparametre from secteur; ";
+		
+		ResultSet resultat = requete.executeQuery(sql);
+		
+		while (resultat.next()) {
+			liste_secteur.add(new Secteur(resultat.getInt("id_secteur"), resultat.getString("fullname_secteur")));
+		}
+		
+		//LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListSecteur::taille::"+liste_secteur.size());
+		return liste_secteur;
+		
+	}
 	
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/ServicePersistance.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/ServicePersistance.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/ServicePersistance.java	(revision 70)
@@ -1,8 +1,7 @@
 package org.medias.eccad.persistance;
 
+import java.util.ArrayList;
 import java.util.List;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.helpers.SpringBeanFactory;
 import org.medias.eccad.modele.*;
@@ -10,8 +9,9 @@
 import org.medias.eccad.persistance.dao.MappingDAO;
 import org.medias.eccad.persistance.dao.ParametreDAO;
+import org.medias.eccad.persistance.dao.RcpDAO;
+import org.medias.eccad.persistance.dao.SecteurDAO;
 import org.medias.eccad.persistance.dao.CatParametreDAO;
 import org.medias.eccad.persistance.dao.ProduitDAO;
 import org.medias.eccad.persistance.exception.PersistanceException;
-import org.medias.eccad.persistance.jdbc.CatParametreDAOjdbc;
 import org.springframework.beans.factory.xml.XmlBeanFactory;
 
@@ -21,15 +21,14 @@
 	
 	public ServicePersistance() {
-		LoggerPerso.log(ServicePersistance.class, LoggerPerso.DEBUG, "crÃ©ation du service");
+//		LoggerPerso.log(ServicePersistance.class, LoggerPerso.DEBUG, "crÃ©ation du service");
 		xmlbean = SpringBeanFactory.getXmlFactory();
 	}
 	
 	public List<CatParametre> getListcatParametre() {
-		LoggerPerso.log(ServicePersistance.class, LoggerPerso.DEBUG, "load DAOCAT");
+//		LoggerPerso.log(ServicePersistance.class, LoggerPerso.DEBUG, "load DAOCAT");
 		List<CatParametre> liste_catParam;
 		CatParametreDAO catParamdao = (CatParametreDAO) xmlbean.getBean("catParametreDAO");
 		try {
-			LoggerPerso.log(ServicePersistance.class, LoggerPerso.DEBUG, "try...!");
-			liste_catParam = catParamdao.getListcatParametre();
+			 liste_catParam = catParamdao.getListcatParametre();
 
 		} catch (PersistanceException e) {
@@ -67,4 +66,43 @@
 	}
 	
+	public List<Secteur> getListSectorByParam(int id_param, int id_prod, int id_rcp) {
+		List<Secteur> liste_secteur;
+		SecteurDAO secteur = (SecteurDAO) xmlbean.getBean("secteurDAO");
+		
+		try {
+			 liste_secteur = secteur.getListSectorByParam(id_param,id_prod,id_rcp);
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+		return liste_secteur;
+	}
+	
+	public List<Secteur> getListSecteur() {
+		List<Secteur> liste_secteur;
+		SecteurDAO secteurdao = (SecteurDAO) xmlbean.getBean("secteurDAO");
+		try {
+			 liste_secteur = secteurdao.getListSecteur();
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+		
+		return liste_secteur;
+	}
+	
+	public List<Rcp> getListRcpByParam(int id_param, int id_prod, int id_sector) {
+		List<Rcp> liste_rcp;
+		RcpDAO rcpdao = (RcpDAO) xmlbean.getBean("rcpDAO");
+		
+		try {
+			 liste_rcp = rcpdao.getListRcpByParam(id_param,id_prod,id_sector);
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+		return liste_rcp;
+	}
+	
 	public List<Produit> getListProductByParam(int id_param) {
 		List<Produit> liste_param;
@@ -91,13 +129,41 @@
 		}
 
-		LoggerPerso.log(ServicePersistance.class, LoggerPerso.DEBUG, "getProduitById::nom::"+ produit.getNom() + "::date::" + produit.getBeginDate());
+//		LoggerPerso.log(ServicePersistance.class, LoggerPerso.DEBUG, "getProduitById::nom::"+ produit.getNom() + "::date::" + produit.getBeginDate());
 		return produit;
 	}
 	
-	public List<Grille> getListGrille(long id_produit, long id_parametre,String date_debut, String date_fin) {
+	public Secteur getSecteurByID(long id_secteur) {
+		Secteur secteur = null;
+		SecteurDAO secteurdao = (SecteurDAO) xmlbean.getBean("secteurDAO");
+		
+		try {
+			secteur = secteurdao.getSecteurById(id_secteur);
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+
+//		LoggerPerso.log(ServicePersistance.class, LoggerPerso.DEBUG, "getSecteurById::nom::"+ secteur.getNom());
+		return secteur;
+	}
+
+	public Rcp getRcpByID(long id_rcp) {
+		Rcp rcp = null;
+		RcpDAO rcpdao = (RcpDAO) xmlbean.getBean("rcpDAO");
+		
+		try {
+			rcp = rcpdao.getRcpById(id_rcp);
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+		return rcp;
+	}
+	
+	public List<Grille> getListGrille(long id_produit, long id_parametre, long id_secteur, long id_rcp, String date_debut, String date_fin, String nomProd, String legend, String typeProd) {
 		List<Grille> grille;
 		GrilleDAO grilledao = (GrilleDAO) xmlbean.getBean("grilleDAO");
 		try {
-			grille = grilledao.getListGrille(id_produit, id_parametre, date_debut, date_fin);
+			grille = grilledao.getListGrille(id_produit, id_parametre, id_secteur, id_rcp, date_debut, date_fin, nomProd, legend, typeProd);
 		} catch (PersistanceException e) {
 			e.printStackTrace();
@@ -121,4 +187,30 @@
 	}
 	
+	public List<String> getListAlt(long id_secteur, String date_debut) {
+		List<String> liste_alt;
+		GrilleDAO grilledao = (GrilleDAO) xmlbean.getBean("grilleDAO");
+		try {
+			liste_alt = grilledao.getListAlt(id_secteur, date_debut);
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+
+		return liste_alt;
+	}
+	
+	public List<Grille> getListMasques(String codifMasque) {
+		List<Grille> liste_reg;
+		GrilleDAO grilledao = (GrilleDAO) xmlbean.getBean("grilleDAO");
+		try {
+			liste_reg = grilledao.getListMasques(codifMasque);
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+
+		return liste_reg;
+	}
+
 	public Parametre getParametreById(int id_param) {
 		Parametre param = null;
@@ -151,3 +243,28 @@
 		return mapping.getVisualisation(type_produit);
 	}
+
+	public String getTypeCodif(long idGrille) {
+		String typeCodif;
+		GrilleDAO grilledao = (GrilleDAO) xmlbean.getBean("grilleDAO");
+		try {
+			typeCodif = grilledao.getTypeCodif(idGrille);
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+		return typeCodif;
+	}
+
+	public ArrayList<String> getDates(long idProduit, long idParametre,	long idSecteur, long idRcp, String nomprod) {
+		ArrayList<String> dates;
+		GrilleDAO grilledao = (GrilleDAO) xmlbean.getBean("grilleDAO");
+		try {
+			dates = grilledao.getDates(idProduit, idParametre, idSecteur, idRcp, nomprod);
+		} catch (PersistanceException e) {
+			e.printStackTrace();
+			return null;
+		}
+
+		return dates;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/ColorTabDAO.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/ColorTabDAO.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/ColorTabDAO.java	(revision 70)
@@ -8,9 +8,7 @@
 
 public interface ColorTabDAO {
-	public abstract ColorTab getColorMapByID(long id)  throws PersistanceException;
+	public abstract ColorTab getColorMapByID(long id, long idClass)  throws PersistanceException;
 	public abstract ColorTab getColorMapByParam(int idparam) throws PersistanceException;
-	public abstract ColorTab getColorMapByGrille(long id_grille) throws PersistanceException;
-	public abstract List<ColorMap> getListColorTabByGrille(long id_grille) throws PersistanceException;
-	public abstract List<ColorMap> getListColorTab() throws PersistanceException;
-	public abstract List<ColorMap> getListColorMapDynamique() throws PersistanceException;
+	public abstract ColorTab getColorMapByGrille() throws PersistanceException;
+	public abstract List<ColorMap> getListColorTabByGrille() throws PersistanceException;
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/FactoryDAO.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/FactoryDAO.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/FactoryDAO.java	(revision 70)
@@ -4,4 +4,5 @@
 	public GrilleDAO getGrilleDAO();
 	public ParametreDAO getParametreDAO();
+	public SecteurDAO getSecteurDAO();
 	public ProduitDAO getProduitDAO();
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/GrilleDAO.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/GrilleDAO.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dao/GrilleDAO.java	(revision 70)
@@ -1,4 +1,5 @@
 package org.medias.eccad.persistance.dao;
 
+import java.util.ArrayList;
 import java.util.List;
 
@@ -7,6 +8,8 @@
 
 public interface GrilleDAO {
-	public List<Grille> getListGrille(long id_produit,long id_parametre, String date_debut, String date_fin) throws PersistanceException;
+	public List<Grille> getListGrille(long id_produit,long id_parametre, long id_secteur, long id_rcp, String date_debut, String date_fin, String nomProd, String legend, String typeProd) throws PersistanceException;
 	public List<Grille> getListGrille(long id_produit, String date_debut, String date_fin) throws PersistanceException;
+	public List<String> getListAlt(long id_secteur, String date_debut) throws PersistanceException;
+	public List<Grille> getListMasques(String codifMasque) throws PersistanceException;
 	public float[][] getGrilleValue(int oid) throws PersistanceException;
 	public String getCodification(long id_grille) throws PersistanceException;
@@ -16,3 +19,5 @@
 	public float getGrilleResolution(long id_grille) throws PersistanceException;
 	public float getProduitResolution(long id_produit) throws PersistanceException;
+	public String getTypeCodif(long idGrille) throws PersistanceException;
+	public ArrayList<String> getDates(long idProduit, long idParametre,	long idSecteur, long idRcp, String nomProd) throws PersistanceException;
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dummy/ColorTabDAOdummy.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dummy/ColorTabDAOdummy.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dummy/ColorTabDAOdummy.java	(revision 70)
@@ -21,5 +21,5 @@
 	}
 	
-	public ColorTab getColorMapByGrille(long oid) {
+	public ColorTab getColorMapByGrille() {
 		ColorTab colortab = new ColorTab();
 		colortab.setMin(min);
@@ -44,8 +44,8 @@
 
 	public ColorTab getColorMapByParam(int id_param) {
-		return getColorMapByGrille(0);
+		return getColorMapByGrille();
 	}
 
-	public List<ColorMap> getListColorTabByGrille(long oid) throws PersistanceException {
+	public List<ColorMap> getListColorTabByGrille() throws PersistanceException {
 		List<ColorMap> liste = new LinkedList<ColorMap>();
 		
@@ -58,11 +58,5 @@
 	}
 
-	public List<ColorMap> getListColorTab() throws PersistanceException {
-		List<ColorMap> liste = new LinkedList<ColorMap>();
-				
-		return liste;
-	}
-
-	public ColorTab getColorMapByID(long id) throws PersistanceException {
+	public ColorTab getColorMapByID(long id, long idClass) throws PersistanceException {
 		// TODO Auto-generated method stub
 		return null;
@@ -73,6 +67,4 @@
 		return null;
 	}
-	
-	
 
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dummy/GrilleDAOdummy.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dummy/GrilleDAOdummy.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/dummy/GrilleDAOdummy.java	(revision 70)
@@ -1,4 +1,5 @@
 package org.medias.eccad.persistance.dummy;
 
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
@@ -20,6 +21,6 @@
 		return data;
 	}
-	public List<Grille> getListGrille(long id_produit,long id_parametre, String date_debut,
-			String date_fin) throws PersistanceException {
+	public List<Grille> getListGrille(long id_produit,long id_parametre, long id_secteur, long id_rcp, String date_debut,
+			String date_fin, String nomProd, String legend, String typeProd) throws PersistanceException {
 		
 		Grille grille;
@@ -104,4 +105,25 @@
 		return 0;
 	}
+	public String getTypeCodif(long idGrille) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public ArrayList<String> getDates(long idProduit, long idParametre,
+			long idSecteur, long idRcp, String nomProd)
+			throws PersistanceException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	public List<String> getListAlt(long idSecteur, String dateDebut)
+			throws PersistanceException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	public List<Grille> getListMasques(String codifMasque) throws PersistanceException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/HibernateSGBD.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/HibernateSGBD.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/HibernateSGBD.java	(revision 70)
@@ -5,5 +5,5 @@
 
 /**
- * Permet l'intéraction avec un système de gestion persistante de l'information
+ * Permet l'intï¿œraction avec un systï¿œme de gestion persistante de l'information
  * @author Jean PINAUD
  *
@@ -14,9 +14,8 @@
 	
 	/**
-	 * Début de la transaction
+	 * Dï¿œbut de la transaction
 	 *
 	 */
 	public void connexion() {
-//		//system.out.println("<<< Hibernate::Connexion >>>");
 		session = HibernateUtil.currentSession();
 		tx = session.beginTransaction();
@@ -43,5 +42,5 @@
 	
 	/**
-	 * Constructeur par défaut
+	 * Constructeur par dï¿œfaut
 	 *
 	 */
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/HibernateUtil.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/HibernateUtil.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/HibernateUtil.java	(revision 70)
@@ -4,5 +4,4 @@
 import org.hibernate.*;
 import org.hibernate.cfg.*;
-import org.medias.eccad.helpers.LoggerPerso;
 
 /**
@@ -24,5 +23,5 @@
  public static Session currentSession()
 		throws HibernateException {
-	 LoggerPerso.log(HibernateUtil.class, LoggerPerso.DEBUG, "--  connexion  --");
+//	 LoggerPerso.log(HibernateUtil.class, LoggerPerso.DEBUG, "--  connexion  --");
   try {
 	   if (sessionFactory == null) {
@@ -30,5 +29,5 @@
 		   }
 		} catch (HibernateException ex) {
-		   throw new RuntimeException("Problème de configuration : "
+		   throw new RuntimeException("ProblÃšme de configuration : "
 		   + ex.getMessage(), ex);
 		}
@@ -50,5 +49,5 @@
  public static void closeSession()
 		throws HibernateException {
-	 LoggerPerso.log(HibernateUtil.class, LoggerPerso.DEBUG, "--  deconnexion  --");
+//	 LoggerPerso.log(HibernateUtil.class, LoggerPerso.DEBUG, "--  deconnexion  --");
    Session s = (Session) session.get();
    session.set(null);
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/XmlDAOhibernate.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/XmlDAOhibernate.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/XmlDAOhibernate.java	(revision 70)
@@ -3,5 +3,4 @@
 import java.util.List;
 
-import org.medias.eccad.helpers.CharactereHelper;
 import org.medias.eccad.persistance.dao.XmlDAO;
 import org.medias.eccad.persistance.hibernate.domaine.Produit;
@@ -10,5 +9,5 @@
 
 	public String getXmlByProduit(long id) {
-		List resultat;
+		List<?> resultat;
 		Produit produitTO;
 		connexion();
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Categorieparametre.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Categorieparametre.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Categorieparametre.java	(revision 70)
@@ -14,4 +14,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idCategorieparametre;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Code.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Code.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Code.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idCode;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Codification.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Codification.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Codification.java	(revision 70)
@@ -12,4 +12,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idCodification;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Color.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Color.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Color.java	(revision 70)
@@ -12,4 +12,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int colId;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ColorIndex.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ColorIndex.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ColorIndex.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private ColorIndexId id;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ColorIndexId.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ColorIndexId.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ColorIndexId.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int cmId;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Colormap.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Colormap.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Colormap.java	(revision 70)
@@ -12,4 +12,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int cmId;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Concerne.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Concerne.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Concerne.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private ConcerneId id;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ConcerneId.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ConcerneId.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ConcerneId.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idProduit;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Contact.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Contact.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Contact.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private ContactId id;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ContactId.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ContactId.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ContactId.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idProduit;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Domaine.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Domaine.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Domaine.java	(revision 70)
@@ -14,4 +14,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idDomaine;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Fichier.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Fichier.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Fichier.java	(revision 70)
@@ -11,4 +11,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idFichier;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Fournit.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Fournit.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Fournit.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private FournitId id;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/FournitId.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/FournitId.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/FournitId.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idProduit;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Grille.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Grille.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Grille.java	(revision 70)
@@ -2,7 +2,4 @@
 
 // Generated 1 Juin 2007 15:03:29 by Hibernate Tools 3.2.0.beta7
-
-import java.io.Serializable;
-import java.util.Date;
 
 /**
@@ -12,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idGrille;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/LienpersonneId.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/LienpersonneId.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/LienpersonneId.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idMetadata;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Metadata.hbm.xml	(revision 70)
@@ -24,10 +24,4 @@
             <one-to-many class="org.medias.eccad.persistance.hibernate.domaine.Produit" />
         </set>
-        <set name="lienorganismes" inverse="true">
-            <key>
-                <column name="id_metadata" not-null="true" />
-            </key>
-            <one-to-many class="org.medias.eccad.persistance.hibernate.domaine.Lienorganisme" />
-        </set>
         <set name="lienpersonnes" inverse="true">
             <key>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Metadata.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Metadata.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Metadata.java	(revision 70)
@@ -30,6 +30,4 @@
 	private Set<Produit> produits = new HashSet<Produit>(0);
 
-	private Set<Lienorganisme> lienorganismes = new HashSet<Lienorganisme>(0);
-
 	private Set<Lienpersonne> lienpersonnes = new HashSet<Lienpersonne>(0);
 
@@ -48,6 +46,5 @@
 	/** full constructor */
 	public Metadata(int idMetadata, String nameMetadata, String dateMetadata,
-			String versionMetadata, Set<Produit> produits,
-			Set<Lienorganisme> lienorganismes, Set<Lienpersonne> lienpersonnes) {
+			String versionMetadata, Set<Produit> produits, Set<Lienpersonne> lienpersonnes) {
 		this.idMetadata = idMetadata;
 		this.nameMetadata = nameMetadata;
@@ -55,5 +52,4 @@
 		this.versionMetadata = versionMetadata;
 		this.produits = produits;
-		this.lienorganismes = lienorganismes;
 		this.lienpersonnes = lienpersonnes;
 	}
@@ -70,6 +66,4 @@
 		valeur += "\n";
 		valeur += XmlHelper.createNode("versionMetadata", versionMetadata);
-		valeur += "\n";
-		valeur += XmlHelper.listToString("organismes", lienorganismes);
 		valeur += "\n";
 		valeur += XmlHelper.listToString("personnes", lienpersonnes);
@@ -124,12 +118,4 @@
 	}
 
-	public Set<Lienorganisme> getLienorganismes() {
-		return this.lienorganismes;
-	}
-
-	public void setLienorganismes(Set<Lienorganisme> lienorganismes) {
-		this.lienorganismes = lienorganismes;
-	}
-
 	public Set<Lienpersonne> getLienpersonnes() {
 		return this.lienpersonnes;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Organisme.hbm.xml	(revision 70)
@@ -42,10 +42,4 @@
             <one-to-many class="org.medias.eccad.persistance.hibernate.domaine.Fournit" />
         </set>
-        <set name="lienorganismes" inverse="true">
-            <key>
-                <column name="id_organisme" not-null="true" />
-            </key>
-            <one-to-many class="org.medias.eccad.persistance.hibernate.domaine.Lienorganisme" />
-        </set>
     </class>
 </hibernate-mapping>
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Organisme.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Organisme.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Organisme.java	(revision 70)
@@ -14,4 +14,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idOrganisme;
@@ -37,6 +42,4 @@
 	private Set<Fournit> fournits = new HashSet<Fournit>(0);
 
-	private Set<Lienorganisme> lienorganismes = new HashSet<Lienorganisme>(0);
-
 	// Constructors
 
@@ -55,6 +58,5 @@
 			String faxOrganisme, String urlOrganisme, String addressOrganisme,
 			String zipcodeOrganisme, String cityOrganisme,
-			String countryOrganisme, Set<Fournit> fournits,
-			Set<Lienorganisme> lienorganismes) {
+			String countryOrganisme, Set<Fournit> fournits) {
 		this.idOrganisme = idOrganisme;
 		this.fullnameOrganisme = fullnameOrganisme;
@@ -68,5 +70,4 @@
 		this.countryOrganisme = countryOrganisme;
 		this.fournits = fournits;
-		this.lienorganismes = lienorganismes;
 	}
 
@@ -194,11 +195,3 @@
 	}
 
-	public Set<Lienorganisme> getLienorganismes() {
-		return this.lienorganismes;
-	}
-
-	public void setLienorganismes(Set<Lienorganisme> lienorganismes) {
-		this.lienorganismes = lienorganismes;
-	}
-
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ParamColor.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ParamColor.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ParamColor.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private ParamColorId id;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ParamColorId.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ParamColorId.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/ParamColorId.java	(revision 70)
@@ -9,4 +9,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int cmId;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Parametre.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Parametre.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Parametre.java	(revision 70)
@@ -14,4 +14,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idParam;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Personne.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Personne.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Personne.java	(revision 70)
@@ -14,4 +14,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idPersonne;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produit.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produit.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produit.java	(revision 70)
@@ -9,5 +9,4 @@
 
 import org.medias.eccad.helpers.CharactereHelper;
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.helpers.XmlHelper;
 
@@ -159,6 +158,6 @@
 		valeur += "<metadonnees>" + "\n";
 		
-		valeur += "<produit>" + "\n";		
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "produit");
+		valeur += "<produit>" + "\n";
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "produit");
 		valeur += XmlHelper.createNode("idProduit", Integer.toString(idProduit));
 		valeur += XmlHelper.createNode("titleProduit", titleProduit);
@@ -185,32 +184,32 @@
 		valeur += XmlHelper.createNode("headerProduit", headerProduit);
 		valeur += XmlHelper.createNode("versionProduit", versionProduit);
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "produit_origine");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "produit_origine");
 		valeur += XmlHelper.objectToString(produitorig);
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "reference");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "reference");
 		valeur += XmlHelper.listToString("referenceses", concernes);
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "fin produit");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "fin produit");
 		valeur += "</produit>" + "\n";
 
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "domaine");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "domaine");
 		valeur += XmlHelper.objectToString(domaine);
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "typeproduit");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "typeproduit");
 		valeur += XmlHelper.objectToString(typeproduit);
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "metadata_produit");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "metadata_produit");
 		valeur += XmlHelper.objectToString(metadata);
 
 		//valeur += "<fichiers>" + listToString(fichiers) + "</fichiers>" + "\n";
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "organismes");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "organismes");
 		valeur += XmlHelper.listToString("organismes", fournits);
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "parametre");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "parametre");
 		valeur += XmlHelper.listToString("parametre", grilles, 1) + "\n";
 		//valeur += "<requetes>" + listToString(requetes) + "</requetes>" + "\n";
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "contacts");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "contacts");
 		valeur += XmlHelper.listToString("contacts", contacts);
 		valeur += "</metadonnees>" + "\n";
 		
 		valeur = CharactereHelper.getEncodage(valeur, "ISO-8859-1");
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "replace all");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "replace all");
 		valeur = valeur.replaceAll("&", "&amp;");
-		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "fin retour valeur");
+//		LoggerPerso.log(Produit.class, LoggerPerso.DEBUG, "fin retour valeur");
 		return valeur;
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produitorig.hbm.xml	(revision 70)
@@ -15,18 +15,15 @@
             <column name="title_produitorig" length="128" unique="true" />
         </property>
-        <property name="orgProduitorig" type="string">
-            <column name="org_produitorig" length="128" />
-        </property>
-        <property name="dateProduitorig" type="date">
-            <column name="date_produitorig" length="4" />
+        <property name="dateProduitorig" type="string">
+            <column name="date_produitorig" length="128" />
         </property>
         <property name="editionProduitorig" type="string">
             <column name="edition_produitorig" length="128" />
         </property>
-        <property name="begintimeProduitorig" type="date">
-            <column name="begintime_produitorig" length="4" />
+        <property name="begintimeProduitorig" type="string">
+            <column name="begintime_produitorig" length="128" />
         </property>
-        <property name="endtimeProduitorig" type="date">
-            <column name="endtime_produitorig" length="4" />
+        <property name="endtimeProduitorig" type="string">
+            <column name="endtime_produitorig" length="128" />
         </property>
         <property name="earthellipsProduitorig" type="string">
@@ -38,7 +35,4 @@
         <property name="spatialresProduitorig" type="string">
             <column name="spatialres_produitorig" length="128" />
-        </property>
-        <property name="projectionProduitorig" type="string">
-            <column name="projection_produitorig" length="128" />
         </property>
         <property name="methodProduitorig" type="string">
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produitorig.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produitorig.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Produitorig.java	(revision 70)
@@ -3,5 +3,4 @@
 // Generated 1 Juin 2007 15:03:29 by Hibernate Tools 3.2.0.beta7
 
-import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
@@ -16,4 +15,9 @@
 	// Fields    
 
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
 	private int idProduitorig;
 
@@ -22,13 +26,11 @@
 	private String titleProduitorig;
 
-	private String orgProduitorig;
-
-	private Date dateProduitorig;
+	private String dateProduitorig;
 
 	private String editionProduitorig;
 
-	private Date begintimeProduitorig;
-
-	private Date endtimeProduitorig;
+	private String begintimeProduitorig;
+
+	private String endtimeProduitorig;
 
 	private String earthellipsProduitorig;
@@ -37,6 +39,4 @@
 
 	private String spatialresProduitorig;
-
-	private String projectionProduitorig;
 
 	private String methodProduitorig;
@@ -61,9 +61,9 @@
 	/** full constructor */
 	public Produitorig(int idProduitorig, Domaine domaine,
-			String titleProduitorig, String orgProduitorig,
-			Date dateProduitorig, String editionProduitorig,
-			Date begintimeProduitorig, Date endtimeProduitorig,
+			String titleProduitorig,
+			String dateProduitorig, String editionProduitorig,
+			String begintimeProduitorig, String endtimeProduitorig,
 			String earthellipsProduitorig, String temporalresProduitorig,
-			String spatialresProduitorig, String projectionProduitorig,
+			String spatialresProduitorig,
 			String methodProduitorig, String dataurlProduitorig,
 			String documentationProduitorig, Set<Produit> produits) {
@@ -71,5 +71,4 @@
 		this.domaine = domaine;
 		this.titleProduitorig = titleProduitorig;
-		this.orgProduitorig = orgProduitorig;
 		this.dateProduitorig = dateProduitorig;
 		this.editionProduitorig = editionProduitorig;
@@ -79,5 +78,4 @@
 		this.temporalresProduitorig = temporalresProduitorig;
 		this.spatialresProduitorig = spatialresProduitorig;
-		this.projectionProduitorig = projectionProduitorig;
 		this.methodProduitorig = methodProduitorig;
 		this.dataurlProduitorig = dataurlProduitorig;
@@ -95,5 +93,4 @@
 		valeur += XmlHelper.createNode("titleProduitorig", titleProduitorig);
 		valeur += XmlHelper.objectToString(domaine);
-		valeur += XmlHelper.createNode("orgProduitorig", orgProduitorig);
 		valeur += XmlHelper.createNode("dateProduitorig", dateProduitorig);
 		valeur += XmlHelper.createNode("editionProduitorig", editionProduitorig);
@@ -103,5 +100,4 @@
 		valeur += XmlHelper.createNode("temporalresProduitorig", temporalresProduitorig);
 		valeur += XmlHelper.createNode("spatialresProduitorig", spatialresProduitorig);
-		valeur += XmlHelper.createNode("projectionProduitorig", projectionProduitorig);
 		valeur += XmlHelper.createNode("methodProduitorig", methodProduitorig);
 		valeur += XmlHelper.createNode("dataurlProduitorig", dataurlProduitorig);
@@ -112,5 +108,4 @@
 		valeur += "<domaine>" + domaine + "</domaine>" + "\n";
 		valeur += "<titleProduitorig>" + titleProduitorig + "</titleProduitorig>" + "\n";
-		valeur += "<orgProduitorig>" + orgProduitorig + "</orgProduitorig>" + "\n";
 		valeur += "<dateProduitorig>" + dateProduitorig + "</dateProduitorig>" + "\n";
 		valeur += "<editionProduitorig>" + editionProduitorig + "</editionProduitorig>" + "\n";
@@ -120,5 +115,4 @@
 		valeur += "<temporalresProduitorig>" + temporalresProduitorig + "</temporalresProduitorig>" + "\n";
 		valeur += "<spatialresProduitorig>" + spatialresProduitorig + "</spatialresProduitorig>" + "\n";
-		valeur += "<projectionProduitorig>" + projectionProduitorig + "</projectionProduitorig>" + "\n";
 		valeur += "<methodProduitorig>" + methodProduitorig + "</methodProduitorig>" + "\n";
 		valeur += "<dataurlProduitorig>" + dataurlProduitorig + "</dataurlProduitorig>" + "\n";
@@ -155,17 +149,9 @@
 	}
 
-	public String getOrgProduitorig() {
-		return this.orgProduitorig;
-	}
-
-	public void setOrgProduitorig(String orgProduitorig) {
-		this.orgProduitorig = orgProduitorig;
-	}
-
-	public Date getDateProduitorig() {
+	public String getDateProduitorig() {
 		return this.dateProduitorig;
 	}
 
-	public void setDateProduitorig(Date dateProduitorig) {
+	public void setDateProduitorig(String dateProduitorig) {
 		this.dateProduitorig = dateProduitorig;
 	}
@@ -179,17 +165,17 @@
 	}
 
-	public Date getBegintimeProduitorig() {
+	public String getBegintimeProduitorig() {
 		return this.begintimeProduitorig;
 	}
 
-	public void setBegintimeProduitorig(Date begintimeProduitorig) {
+	public void setBegintimeProduitorig(String begintimeProduitorig) {
 		this.begintimeProduitorig = begintimeProduitorig;
 	}
 
-	public Date getEndtimeProduitorig() {
+	public String getEndtimeProduitorig() {
 		return this.endtimeProduitorig;
 	}
 
-	public void setEndtimeProduitorig(Date endtimeProduitorig) {
+	public void setEndtimeProduitorig(String endtimeProduitorig) {
 		this.endtimeProduitorig = endtimeProduitorig;
 	}
@@ -219,12 +205,4 @@
 	}
 
-	public String getProjectionProduitorig() {
-		return this.projectionProduitorig;
-	}
-
-	public void setProjectionProduitorig(String projectionProduitorig) {
-		this.projectionProduitorig = projectionProduitorig;
-	}
-
 	public String getMethodProduitorig() {
 		return this.methodProduitorig;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Requete.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Requete.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Requete.java	(revision 70)
@@ -11,4 +11,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idRequete;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Typecodification.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Typecodification.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Typecodification.java	(revision 70)
@@ -12,4 +12,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idTypecodification;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Typeproduit.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Typeproduit.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Typeproduit.java	(revision 70)
@@ -14,4 +14,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idTypeproduit;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Unite.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Unite.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/hibernate/domaine/Unite.java	(revision 70)
@@ -14,4 +14,9 @@
 
 	// Fields    
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	private int idUnite;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/CatParametreDAOjdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/CatParametreDAOjdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/CatParametreDAOjdbc.java	(revision 70)
@@ -8,5 +8,4 @@
 import java.util.List;
 
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.modele.CatParametre;
 import org.medias.eccad.persistance.dao.CatParametreDAO;
@@ -33,8 +32,13 @@
 		conn = getConnection();
 		
-		try {LoggerPerso.log(CatParametreDAOjdbc.class, LoggerPerso.DEBUG, "DAOjdbc youhou!!");
+		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_categorieparametre, fullname_categorieparametre from categorieparametre join parametre using (id_categorieparametre) join grille using (id_param);";
-			
+//			sql = "select distinct id_categorieparametre, fullname_categorieparametre, order_categorieparametre" +
+//					" from categorieparametre join parametre using (id_categorieparametre)" +
+//					" join grille using (id_param) order by order_categorieparametre;";
+			sql = "select distinct id_categorieparametre, fullname_categorieparametre" +
+					", order_categorieparametre from categorieparametre" +
+					" where id_categorieparametre in (select id_categorieparametre from parametre" +
+					" where id_param in (select id_param from grille)) order by order_categorieparametre;";
 			resultat = requete.executeQuery(sql);
 		
@@ -51,5 +55,5 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListCatParametre::taille::"+liste_catParam.size());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListCatParametre::taille::"+liste_catParam.size());
 
 		return liste_catParam;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/CodeDAOjdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/CodeDAOjdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/CodeDAOjdbc.java	(revision 70)
@@ -21,12 +21,19 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = " select legend_code" 
-				+ " from grille join codification using (id_codification)"
-				+ " join code using (id_codification) where id_grille = " + id_grille + " order by id_code;";
-			
+//			sql = " select num_code,legend_code" 
+//				+ " from grille join codification using (id_codification)"
+//				+ " join code using (id_codification) where id_grille = " + id_grille + " order by num_code;";
+			sql = " select number_code,legend_code" 
+			+ " from grille left join code on id_grille = num_code"
+			+ " where id_grille = " + id_grille + " order by number_code;";
+
 			ResultSet resultat = requete.executeQuery(sql);
-			
+			String legend = "";
 			while (resultat.next()) {
-				code.add(resultat.getString("legend_code").toLowerCase());
+				legend = resultat.getString("legend_code");
+				code.add(resultat.getString("number_code")+"-"+legend);
+			}
+			if (code.size() == 1) {
+				code.set(0, "1-"+legend);
 			}
 		}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ColorTabDAOjdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ColorTabDAOjdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ColorTabDAOjdbc.java	(revision 70)
@@ -9,6 +9,4 @@
 import java.util.List;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.modele.ColorMap;
 import org.medias.eccad.modele.ColorTab;
@@ -17,11 +15,8 @@
 
 public class ColorTabDAOjdbc extends GeneriqueDAOjdbc implements ColorTabDAO {
-
-	
-	
-	
-	public ColorTab getColorMapByGrille(long id_grille) throws PersistanceException {
+	
+	public ColorTab getColorMapByGrille() throws PersistanceException {
 		ColorTab colortab = new ColorTab();
-		colortab = getTableDefault(id_grille, colortab);
+		colortab = getTableDefault(colortab);
 		//colortab = getMinMax(oid, colortab);
 		
@@ -29,16 +24,12 @@
 	}
 	
-	public List<ColorMap> getListColorTab() throws PersistanceException {
-		String sql = " select cm_name, " 
-			   + " from colormap "
-			   + " order by cm_id;";
-			   //+ " join grille using (id_param) "
-			   
-		
-		Statement requete = null;
-		ResultSet resultat = null;
-		Connection conn = getConnection();
-		
-		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, " rÃ©cupÃ©ration liste de colortab " + sql);
+	public List<ColorMap> getListClassMap() throws PersistanceException {
+		String sql = " select clm_id, clm_name, num_order from class_map order by clm_id";		
+		
+		Statement requete = null;
+		ResultSet resultat = null;
+		Connection conn = getConnection();
+		
+//		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, " rÃ©cupÃ©ration liste de colortab " + sql);
 		
 		try {
@@ -54,5 +45,5 @@
 		try {
 			while (resultat.next()) {
-				liste_colormap.add(new ColorMap(resultat.getLong("cm_id"), resultat.getString("cm_name"), resultat.getInt("pc_defaut")));
+				liste_colormap.add(new ColorMap(resultat.getLong("clm_id"), resultat.getString("clm_name"), resultat.getInt("num_order")));
 			}
 		}
@@ -67,15 +58,17 @@
 	}
 	
-	public List<ColorMap> getListColorTabByGrille(long id_grille) throws PersistanceException {
-		String sql = " select distinct cm_id, cm_name, pc_defaut" 
+	public List<ColorMap> getListColorTabByGrille() throws PersistanceException {
+		/*String sql = " select distinct cm_id, cm_name, pc_defaut" 
 			   + " from colormap join param_color using (cm_id) "
 			   + " join grille using (id_param) "
-			   + " where id_grille = " + id_grille + " order by pc_defaut desc;";
-		
-		Statement requete = null;
-		ResultSet resultat = null;
-		Connection conn = getConnection();
-		
-		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, " rÃ©cupÃ©ration liste de colortab " + sql);
+			   + " where id_grille = " + id_grille + " order by pc_defaut desc;";*/
+		
+		String sql = " select clm_id as cm_id, clm_name as cm_name, num_order as pc_defaut from class_map order by clm_id";
+		
+		Statement requete = null;
+		ResultSet resultat = null;
+		Connection conn = getConnection();
+		
+//		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, " rÃ©cupÃ©ration liste de colortab " + sql);
 		
 		try {
@@ -104,17 +97,21 @@
 	}
 	
-	private ColorTab getTableDefault(long id_grille, ColorTab colortab) throws PersistanceException {
-		Statement requete = null;
-		String sql = " select distinct col_r, col_g, col_b, ci_min, ci_max" 
+	private ColorTab getTableDefault(ColorTab colortab) throws PersistanceException {
+		Statement requete = null;
+		/*String sql = " select distinct col_r, col_g, col_b, ci_min, ci_max" 
 				   + " from color join color_index using (col_id)"
 				   + " join param_color using (cm_id) "
 				   + " join grille   using (id_param) "
-				   + " where id_grille = " + id_grille +" and pc_defaut = 1 order by ci_max;";
-		Connection conn = getConnection();
-		
-		ResultSet resultat = null;
-		
-		
-		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, "*************************************REQUETE = " + sql);
+				   + " where id_grille = " + id_grille +" and pc_defaut = 1 order by ci_max;";*/
+
+		String sql = " select distinct col_r, col_g, col_b, class_index.num_order"
+				   + " from color join class_index using (col_id)"
+				   + " join class_map using (clm_id) "
+				   + " where class_map.num_order=1 order by class_index.num_order;";
+		Connection conn = getConnection();
+		
+		ResultSet resultat = null;
+		
+//		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, "*************************************REQUETE = " + sql);
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
@@ -129,11 +126,20 @@
 		int i=0;
 
-		
+		float ci_min=-1;
+		float ci_max=0;
 		
 		try {
 			while (resultat.next()) {
 				liste_couleur.add(new Color(resultat.getInt("col_r"), resultat.getInt("col_g"), resultat.getInt("col_b")));
-				liste_min.add(resultat.getFloat("ci_min"));
-				colortab.setMax(resultat.getFloat("ci_max"));
+				//liste_min.add(resultat.getFloat("ci_min"));
+				//colortab.setMax(resultat.getFloat("ci_max"));
+				
+				liste_min.add(ci_min);
+				colortab.setMax(ci_max);
+				
+				if (ci_min==-1) ci_min=0;
+				else ci_min=ci_min+10;
+				
+				ci_max=ci_max+10;
 				i++;
 			}
@@ -164,17 +170,21 @@
 	}
 
-	public ColorTab getColorMapByID(long id) throws PersistanceException {
+	public ColorTab getColorMapByID(long id, long idClass) throws PersistanceException {
 		Statement requete = null;
 		ColorTab colortab = new ColorTab();
 		
-		String sql = " select distinct col_r, col_g, col_b, ci_min, ci_max, cm_name" 
+		/*String sql = " select distinct col_r, col_g, col_b, ci_min, ci_max, cm_name" 
 				   + " from color join color_index using (col_id) join colormap using (cm_id)"
-				   + " where cm_id = " + id +" order by ci_min;";
-		Connection conn = getConnection();
-		
-		ResultSet resultat = null;
-		
-		
-		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, "REQUETE = " + sql);
+				   + " where cm_id = " + id +" order by ci_min;";*/
+
+		String sql="select distinct col_r, col_g, col_b, clm_name as cm_name, ci.num_order, val_min, val_max" 
+			+" from color as co, class_index as ci, class_map as cm, class_distribution as cd" 
+			+" where co.col_id=ci.col_id and ci.clm_id=cm.clm_id and cm.clm_id="+id+" and cd.scl_id="+idClass
+			+" and cd.num_order=ci.num_order order by ci.num_order;";
+		Connection conn = getConnection();
+		
+		ResultSet resultat = null;
+
+//		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, "REQUETE = " + sql);
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
@@ -189,13 +199,11 @@
 		int i=0;
 
-		
-		
-		try {
-			
+		try {
 			while (resultat.next()) {
 				colortab.setName(resultat.getString("cm_name"));
 				liste_couleur.add(new Color(resultat.getInt("col_r"), resultat.getInt("col_g"), resultat.getInt("col_b")));
-				liste_min.add(resultat.getFloat("ci_min"));
-				colortab.setMax(resultat.getFloat("ci_max"));
+				liste_min.add(resultat.getFloat("val_min"));
+				colortab.setMax(resultat.getFloat("val_max"));
+//				LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, "NAME="+resultat.getString("cm_name")+", RANGE = " +resultat.getFloat("val_min")+" - "+resultat.getFloat("val_max"));
 				i++;
 			}
@@ -221,16 +229,15 @@
 	}
 
-	public List<ColorMap> getListColorMapDynamique() throws PersistanceException {
+/*	public List<ColorMap> getListColorMapDynamique() throws PersistanceException {
 		String sql = " select distinct clm_id, clm_name" 
-			   + " from class_map "
-			   + " where clm_name ilike '%exponential%' or clm_name ilike '%linear%' or clm_name ilike '%logarithm%' order by clm_name;";
-		
-		
-		
-		Statement requete = null;
-		ResultSet resultat = null;
-		Connection conn = getConnection();
-		
-		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, " rÃ©cupÃ©ration liste de colortab " + sql);
+			   + " from class_map order by clm_id";
+			   //+ " where clm_name like '%exponential%' or clm_name like '%linear%' or clm_name like '%logarithm%' order by clm_name;";
+		
+		
+		Statement requete = null;
+		ResultSet resultat = null;
+		Connection conn = getConnection();
+		
+//		LoggerPerso.log(ColorTabDAOjdbc.class, LoggerPerso.DEBUG, " rÃ©cupÃ©ration liste de colortab " + sql);
 		
 		try {
@@ -246,5 +253,5 @@
 		try {
 			while (resultat.next()) {
-				liste_colormap.add(new ColorMap(resultat.getLong("cm_id"), resultat.getString("cm_name"), 0));
+				liste_colormap.add(new ColorMap(resultat.getLong("clm_id"), resultat.getString("clm_name"), 0));
 			}
 		}
@@ -257,5 +264,5 @@
 		
 		return liste_colormap;
-	}
+	}*/
 
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/FactoryDAOjdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/FactoryDAOjdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/FactoryDAOjdbc.java	(revision 70)
@@ -4,4 +4,5 @@
 import org.medias.eccad.persistance.dao.GrilleDAO;
 import org.medias.eccad.persistance.dao.ParametreDAO;
+import org.medias.eccad.persistance.dao.SecteurDAO;
 import org.medias.eccad.persistance.dao.ProduitDAO;
 
@@ -24,4 +25,8 @@
 		return new ParametreDAOjdbc(sgbd);
 	}
+	
+	public SecteurDAO getSecteurDAO() {
+		return new SecteurDAOjdbc(sgbd);
+	}
 
 	public ProduitDAO getProduitDAO() {
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/GeneriqueDAOjdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/GeneriqueDAOjdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/GeneriqueDAOjdbc.java	(revision 70)
@@ -4,6 +4,4 @@
 import java.sql.SQLException;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.persistance.exception.PersistanceException;
 
@@ -40,10 +38,8 @@
 			throw new PersistanceException(sqle, "impossible de se connecter au sgbd :: ParametreDAOjdbc.getListParametre");
 		}
-		LoggerPerso.log(GeneriqueDAOjdbc.class, LoggerPerso.DEBUG, "-- jdbc connexion -- ");
 		return conn;
 	}
 	
 	protected void closeConnection() {
-		LoggerPerso.log(GeneriqueDAOjdbc.class, LoggerPerso.DEBUG, "-- jdbc deconnexion -- ");
 		sgbd.deconnexion();
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/GrilleDAOjdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/GrilleDAOjdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/GrilleDAOjdbc.java	(revision 70)
@@ -2,13 +2,14 @@
 
 import java.sql.Connection;
+import java.sql.Date;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 
-
 import org.medias.eccad.helpers.Donnees;
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.modele.Grille;
 import org.medias.eccad.persistance.jdbc.SGBD_jdbc;
@@ -28,5 +29,84 @@
 	}
 	
-	public List<Grille> getListGrille(long id_produit,long id_parametre, String date_debut, String date_fin)  throws PersistanceException{
+	public List<Grille> getListGrille(long id_produit,long id_parametre, long id_secteur, long id_rcp, String date_debut, String date_fin, String nomProd, String legend, String typeProd)  throws PersistanceException{
+		Statement requete;
+		String sql;
+		List<Grille> liste_gril = new LinkedList<Grille>();
+		Connection conn = getConnection();
+
+		try {
+			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+			sql = "select distinct date_grille, id_grille, legend_code, number_code" +
+					" from grille" +
+					" left join code on ((id_grille = num_code) and (grille.id_codification = code.id_codification))" +
+					" where id_produit = "+id_produit+" and id_param = "+id_parametre;
+			if (nomProd.equals("IPCC")) {
+				if (id_secteur > 0) {
+					sql+=" and id_secteur="+id_secteur;					
+				}
+				if (id_rcp > 0 ) {
+					sql+=" and id_rcp="+id_rcp;
+				} else {
+					sql+=" and id_rcp is null";
+				}
+				if (legend != null) {
+					sql+=" and legend_code = '"+legend+"'";
+				}
+			}
+			if (date_debut != null) {
+				sql += " and date_grille >= '" + date_debut + "' and date_grille <= '" + date_fin + "'";
+				if (typeProd.equals("monoplan")) {
+					sql += " order by id_grille, number_code";
+				} else {
+					sql += " order by date_grille, number_code";
+				}
+			} else {
+				sql += " order by id_grille";
+			}
+			sql += ";";
+//LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::requete grille :: " + sql);
+			ResultSet resultat = requete.executeQuery(sql);
+			
+			Date date;
+			long idGrille, idGrillePrec = 0;
+			String datePrec = "";
+			int numberCode;
+			// NB: On ne stocke qu'une seule grille :
+			// - par plan (dans le cas d'un produit multiplan)
+			// - par date (dans le cas d'un produit temporel)
+			// - par masque (dans le cas d'un produit monoplan)
+			while (resultat.next()) {
+				date = resultat.getDate("date_grille");
+				idGrille = resultat.getLong("id_grille");
+				numberCode = resultat.getInt("number_code");
+				if (typeProd.equals("multiplan") || 
+					!date.toString().equals(datePrec) || 
+					(typeProd.equals("monoplan") && idGrille != idGrillePrec)) {
+					// Cas monoplan: on place la grille contenant l'ensemble des masques en premiÃšre position
+//					if (typeProd.equals("monoplan") && numberCode == 0) {
+//						liste_gril.add(0,new Grille(idGrille, date, resultat.getString("legend_code"),numberCode));
+//					} else {
+						liste_gril.add(new Grille(idGrille, date, resultat.getString("legend_code"),numberCode));
+//					}
+				}
+				datePrec = date.toString();
+				idGrillePrec = idGrille;
+			}
+			// Pour un produit monoplan, on trie les grilles par numÃ©ro de code
+			if (typeProd.equals("monoplan")) {
+				Collections.sort(liste_gril,new Grille().new ComparatorNumberCode());
+			}
+		}
+		catch (SQLException sqle) {
+			throw new PersistanceException(sqle, "erreur lors de l'execution de la requete :: GrilleDAOjdbc.getListGrille");
+		}
+		finally {
+			closeConnection();
+		}
+//System.out.println("nbgrilles="+liste_gril.size());
+		return liste_gril;
+	}
+
+	public List<Grille> getListGrille(long id_produit, String date_debut, String date_fin)  throws PersistanceException{
 		Statement requete;
 		String sql;
@@ -36,18 +116,24 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_grille, valeurs_grille, date_grille, legend_code from grille left join code on ((id_grille = num_code) and (grille.id_codification = code.id_codification)) where id_produit = " + id_produit+" and id_param = "+id_parametre;
+			sql = "select distinct id_grille, valeurs_grille, date_grille, legend_code, number_code from grille" +
+//				" inner join codification using (id_codification)" +
+//				" inner join type_codification using (id_typecodification)" +
+				" left join code on ((id_grille = num_code)" +
+				" and (grille.id_codification = code.id_codification)) where id_produit = " + id_produit;
+//				" inner join codification using (id_codification) left join code using (id_codification)" +
+//				" where id_produit = " + id_produit;
 			
 			if (date_debut != null)
-				sql += " and date_grille >= '" + date_debut + "' and date_grille <= '" + date_fin + "' order by date_grille";
+				sql += " and date_grille >= '" + date_debut + "' and date_grille <= '" + date_fin + "' order by date_grille, number_code";
 			else
-				sql += " order by id_grille";
+				sql += " order by number_code, id_grille";
 			
 			sql += ";";
 			
-			LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::requete :: " + sql);
+//			LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille2::requete :: " + sql);
 			ResultSet resultat = requete.executeQuery(sql);
 			
 			while (resultat.next()) {
-				liste_param.add(new Grille(resultat.getLong("id_grille"), resultat.getDate("date_grille"), resultat.getString("legend_code")));
+				liste_param.add(new Grille(resultat.getLong("id_grille"), resultat.getDate("date_grille"), resultat.getString("legend_code"), resultat.getInt("number_code")));
 			}
 		}
@@ -58,48 +144,70 @@
 			closeConnection();
 		}
-			
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::taille::"+liste_param.size() + "id_produit::" + id_produit);
+
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::taille::"+liste_param.size() + "id_produit::" + id_produit);
 		return liste_param;
 	}
 
-	
-	
-	public List<Grille> getListGrille(long id_produit, String date_debut, String date_fin)  throws PersistanceException{
-		Statement requete;
-		String sql;
-		List<Grille> liste_param = new LinkedList<Grille>();
-		Connection conn = getConnection();
-		
-		try {
-			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_grille, valeurs_grille, date_grille, legend_code from grille left join code on ((id_grille = num_code) and (grille.id_codification = code.id_codification)) where id_produit = " + id_produit;
-			
+	public List<String> getListAlt(long id_secteur, String date_debut) throws PersistanceException{
+		Statement requete;
+		String sql;
+		List<String> liste_alt = new LinkedList<String>();
+		Connection conn = getConnection();
+
+		try {
+			// On rÃ©cupÃšre les altitudes
+			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+			//sql = "select distinct cast(legend_code as decimal) as altitude from grille" +
+			sql = "select distinct legend_code, number_code from grille" +
+					" left join code on ((id_grille = num_code) and (grille.id_codification = code.id_codification))" +
+					" where id_secteur = "+id_secteur;
 			if (date_debut != null)
-				sql += " and date_grille >= '" + date_debut + "' and date_grille <= '" + date_fin + "' order by date_grille";
-			else
-				sql += " order by id_grille";
-			
-			sql += ";";
-			
-			LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::requete :: " + sql);
-			ResultSet resultat = requete.executeQuery(sql);
-			
+				sql += " and date_grille = '" + date_debut+"'";
+			sql += " order by number_code;";
+			ResultSet resultat = requete.executeQuery(sql);
 			while (resultat.next()) {
-				liste_param.add(new Grille(resultat.getLong("id_grille"), resultat.getDate("date_grille"), resultat.getString("legend_code")));
-			}
-		}
-		catch (SQLException sqle) {
-			throw new PersistanceException(sqle, "erreur lors de l'execution de la requete :: GrilleDAOjdbc.getListGrille");
-		}
-		finally {
-			closeConnection();
-		}
-			
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListGrille::taille::"+liste_param.size() + "id_produit::" + id_produit);
-		return liste_param;
-	}
-
-	
-	
+				liste_alt.add(resultat.getString("legend_code"));
+			}
+		}
+		catch (SQLException sqle) {
+			throw new PersistanceException(sqle, "erreur lors de l'execution de la requete :: GrilleDAOjdbc.getListAlt");
+		}
+		finally {
+			closeConnection();
+		}
+		return liste_alt;
+	}
+
+	public List<Grille> getListMasques(String codifMasque) throws PersistanceException{
+		Statement requete;
+		String sql;
+		List<Grille> liste_reg = new LinkedList<Grille>();
+		Connection conn = getConnection();
+
+		try {
+			// On rÃ©cupÃšre les rÃ©gions
+			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+			sql = "select distinct legend_code, number_code, id_grille from grille" +
+			" inner join codification using (id_codification) left join code on (id_grille = num_code)" +
+			" where nom_codification = '"+codifMasque+"' order by id_grille, number_code;";
+			ResultSet resultat = requete.executeQuery(sql);
+			long idGrille, idGrillePrec = 0;
+			while (resultat.next()) {
+				idGrille = resultat.getLong("id_grille");
+				if (idGrille != idGrillePrec) {
+					liste_reg.add(new Grille(idGrille, null, resultat.getString("legend_code"),resultat.getInt("number_code")));
+				}
+				idGrillePrec = idGrille;
+			}
+			Collections.sort(liste_reg,new Grille().new ComparatorNumberCode());
+		}
+		catch (SQLException sqle) {
+			throw new PersistanceException(sqle, "erreur lors de l'execution de la requete :: GrilleDAOjdbc.getListAlt");
+		}
+		finally {
+			closeConnection();
+		}
+		return liste_reg;
+	}
 	
 	public float[][] getGrilleValue(int oid) throws PersistanceException {
@@ -184,10 +292,10 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = " select name_typeCodification" +"" 
+			sql = " select name_typecodification"
 				+ " from grille join codification using (id_codification)"
 				+ " join typecodification using (id_typeCodification) where id_grille = " + id_grille + ";";
 			
 			ResultSet resultat = requete.executeQuery(sql);
-			LoggerPerso.log(GrilleDAOjdbc.class, LoggerPerso.DEBUG, "getCodification :: " + sql);	
+//			LoggerPerso.log(GrilleDAOjdbc.class, LoggerPerso.DEBUG, "getCodification :: " + sql);	
 			if (resultat.next()) {
 				codification = resultat.getString("name_typeCodification").toLowerCase();
@@ -216,5 +324,5 @@
 			
 			ResultSet resultat = requete.executeQuery(sql);
-			LoggerPerso.log(GrilleDAOjdbc.class, LoggerPerso.DEBUG, "getCodification :: " + sql);	
+//			LoggerPerso.log(GrilleDAOjdbc.class, LoggerPerso.DEBUG, "getCodification :: " + sql);	
 			if (resultat.next()) {
 				date = resultat.getString("date_grille").toLowerCase();
@@ -237,5 +345,8 @@
 
 	public Grille getGrille(long id_grille) throws PersistanceException {
-		String sql = "select * from grille where id_grille = " + id_grille + ";";
+		
+		String sql = "select * from grille";
+		sql += " left join code on id_grille = num_code";
+		sql += " where id_grille = " + id_grille + ";";
 		Statement requete;
 		Connection conn = getConnection();
@@ -252,4 +363,7 @@
 				grille.setId_param(resultat.getLong("id_param"));
 				grille.setId_produit(resultat.getLong("id_produit"));
+				grille.setId_secteur(resultat.getLong("id_secteur"));
+				grille.setId_rcp(resultat.getLong("id_rcp"));
+				grille.setLegend(resultat.getString("legend_code"));
 			}
 		}
@@ -275,5 +389,5 @@
 			if (resultat.next()) {
 				resol = (float)360/resultat.getLong("ncol_grille");
-				resultat.getLong("nlign_grille");
+			//	resultat.getLong("nlign_grille");
 			}
 		}
@@ -299,5 +413,5 @@
 			if (resultat.next()) {
 				resol = (float)360/resultat.getLong("ncol_grille");
-				resultat.getLong("nlign_grille");
+//				resultat.getLong("nlign_grille");
 			}
 		}
@@ -310,5 +424,68 @@
 		return resol;
 	}
-	
-	
+
+	public String getTypeCodif(long idGrille) throws PersistanceException {
+		String sql = "select name_typecodification from grille" +
+				" inner join codification using (id_codification)" +
+				" inner join typecodification using (id_typecodification)" +
+				" where id_grille = " + idGrille + ";";
+		Statement requete;
+		Connection conn = getConnection();
+		String typeCodif = null;
+		try {
+			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+			
+			
+			ResultSet resultat = requete.executeQuery(sql);
+				
+			if (resultat.next()) {
+				typeCodif = resultat.getString("name_typecodification");
+			}
+		}
+		catch (SQLException sqle) {
+			throw new PersistanceException(sqle, "getTypeCodif " + sql);
+		}
+		finally {
+			closeConnection();
+		}
+		return typeCodif;
+	}
+
+	public ArrayList<String> getDates(long idProduit, long idParametre,	long idSecteur, long idRcp, String nomProd) throws PersistanceException {
+		Statement requete;
+		String sql;
+		ArrayList<String> dates = new ArrayList<String>();
+		Connection conn = getConnection();
+
+		try {
+			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+//			sql = "select min(date_grille) as min, max(date_grille) as max from grille" +
+			sql = "select min(date_grille) as min, (cast(max(date_grille+deltadate_grille) as date)-1) as max, min(deltadate_grille) as delta from grille" +
+				" where id_produit = "+idProduit+" and id_param = "+idParametre;
+			if (nomProd.equals("IPCC")) {
+				if (idSecteur > 0) {
+					sql+=" and id_secteur="+idSecteur;					
+				}
+				if (idRcp > 0 ) {
+					sql+=" and id_rcp="+idRcp;
+				} else {
+					sql+=" and id_rcp is null";
+				}
+			}
+			sql += ";";
+			ResultSet resultat = requete.executeQuery(sql);
+			if (resultat.next()) {
+				dates.add(resultat.getDate("min").toString());
+				dates.add(resultat.getDate("max").toString());
+				dates.add(resultat.getString("delta"));
+			}
+		}
+		catch (SQLException sqle) {
+			throw new PersistanceException(sqle, "erreur lors de l'execution de la requete :: GrilleDAOjdbc.getDates");
+		}
+		finally {
+			closeConnection();
+		}
+		return dates;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ParametreDAOjdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ParametreDAOjdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ParametreDAOjdbc.java	(revision 70)
@@ -9,6 +9,4 @@
 import java.util.List;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.modele.Parametre;
 import org.medias.eccad.persistance.jdbc.SGBD_jdbc;
@@ -62,5 +60,5 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListParametre::taille::"+liste_param.size());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListParametre::taille::"+liste_param.size());
 
 		return liste_param;
@@ -84,11 +82,19 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_param, fullname_param, shortname_param, order_param from parametre join grille using (id_param) join produit using (id_produit) join typeproduit using (id_typeproduit) where id_categorieparametre= "+id_CatParam+" and name_typeproduit not ilike 'array' order by order_param;";
-			
+//			sql = "select distinct id_param, fullname_param, shortname_param, order_param from parametre" +
+//					" join grille using (id_param) join produit using (id_produit)" +
+//					" join typeproduit using (id_typeproduit)" +
+//					" where id_categorieparametre= "+id_CatParam+
+//					" and name_typeproduit not ilike 'array' order by order_param;";
+			sql = "select distinct id_param, fullname_param, shortname_param, order_param from parametre" +
+			" where id_param in (select id_param from grille join produit using (id_produit)" +
+			" join typeproduit using (id_typeproduit)" +
+			" where name_typeproduit not ilike 'array')" +
+			" and id_categorieparametre="+id_CatParam+" order by order_param;";
 			resultat = requete.executeQuery(sql);
 		
 			
 			while (resultat.next()) {
-				if (resultat.getString("shortname_param").equals("NULL"))
+				if (resultat.getString("shortname_param").equals("NULL") || resultat.getString("shortname_param").equals(""))
 					liste_param.add(new Parametre(resultat.getInt("id_param"), resultat.getString("fullname_param")));
 				else
@@ -103,5 +109,5 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListParametre::taille::"+liste_param.size());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListParametre::taille::"+liste_param.size());
 
 		return liste_param;
@@ -126,12 +132,17 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_param, fullname_param, shortname_param, order_param, shortName_unite from parametre join unite using (id_unite) where id_param = " + id_param + " order by order_param;";
-			LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "sql getParametreById="+sql);
+			sql = "select distinct id_param, fullname_param, shortname_param, order_param, shortName_unite, clm_default_id, scl_default_id" +
+					" from parametre p" +
+					" inner join unite using (id_unite)" +
+					" where id_param = " + id_param + " order by order_param;";
 			
 			ResultSet resultat = requete.executeQuery(sql);
 			
 			if (resultat.next()) {
-				param = new Parametre(resultat.getInt("id_param"), resultat.getString("fullname_param"), resultat.getString("shortname_param"),resultat.getString("order_param"));
+				param = new Parametre(resultat.getInt("id_param"), resultat.getString("fullname_param")
+						, resultat.getString("shortname_param"),resultat.getString("order_param"));
 				param.setUnite(resultat.getString("shortName_unite"));
+				param.setColormapDefault(resultat.getInt("clm_default_id"));
+				param.setClassdisDefault(resultat.getInt("scl_default_id"));
 			}
 		}
@@ -142,6 +153,6 @@
 			closeConnection();
 		}
-			
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getParametreById::nom::"+ param.getNom());
+
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getParametreById::nom::"+ param.getNom());
 
 		return param;
@@ -159,5 +170,5 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_param, fullname_param, shortname_param, order_param, shortName_unite from parametre join grille using (id_param) join unite using (id_unite) where id_grille = " + id_grille + " order by order_param;";
+			sql = "select distinct id_param, fullname_param, shortname_param, order_param, shortname_unite from parametre join grille using (id_param) join unite using (id_unite) where id_grille = " + id_grille + " order by order_param;";
 			
 			ResultSet resultat = requete.executeQuery(sql);
@@ -168,6 +179,6 @@
 				String unite = null;
 				try {
-					 temp = resultat.getString("shortName_unite").getBytes("ISO-8859-1");
-				} catch (UnsupportedEncodingException e) {	}
+					 temp = resultat.getString("shortname_unite").getBytes("ISO-8859-1");
+				} catch (UnsupportedEncodingException e) {e.printStackTrace();}
 				
 				if (temp != null)
@@ -182,6 +193,6 @@
 			closeConnection();
 		}
-			
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getParametreById::nom::"+ param.getNom());
+
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getParametreById::nom::"+ param.getNom());
 
 		return param;
@@ -213,6 +224,6 @@
 			closeConnection();
 		}
-			
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getParametreById::nom::"+ param.getNom());
+
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getParametreById::nom::"+ param.getNom());
 
 		return param;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ProduitDAOjdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ProduitDAOjdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/ProduitDAOjdbc.java	(revision 70)
@@ -10,5 +10,4 @@
 
 import org.medias.eccad.helpers.CharactereHelper;
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.modele.Produit;
 import org.medias.eccad.persistance.jdbc.SGBD_jdbc;
@@ -34,6 +33,5 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_produit, title_produit, begintime_produit, endtime_produit, header_produit from produit join grille using (id_produit) where id_param = " + id_param + ";";
-			
+			sql = "select distinct id_produit, title_produit, begintime_produit, endtime_produit, header_produit, order_produit from produit join grille using (id_produit) where id_param = " + id_param + " order by order_produit;";
 			ResultSet resultat = requete.executeQuery(sql);
 			
@@ -55,5 +53,4 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListProduit::taille::"+liste_param.size()+"\nSQL::" + sql);
 		return liste_param;
 	}
@@ -89,5 +86,9 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_produit, title_produit, begintime_produit, endtime_produit, header_produit, temporalRes_produit, name_typeproduit from produit join typeproduit using (id_typeproduit) where id_produit = " + id_produit + ";";
+			sql = "select distinct id_produit, title_produit, begintime_produit" +
+					", endtime_produit, header_produit, temporalRes_produit, name_typeproduit" +
+					", textcitation_produit, useconst_produit, informpub_produit" +
+					" from produit join typeproduit using (id_typeproduit)" +
+					" where id_produit = " + id_produit + ";";
 			
 			ResultSet resultat = requete.executeQuery(sql);
@@ -101,4 +102,7 @@
 				produit.setTemporalres(CharactereHelper.getEncodage(resultat.getString("temporalRes_produit"), "ISO-8859-1"));
 				produit.setType(CharactereHelper.getEncodage(resultat.getString("name_typeproduit"), "ISO-8859-1"));
+				produit.setCitation(CharactereHelper.getEncodage(resultat.getString("textcitation_produit"), "ISO-8859-1"));
+				produit.setUseconst(CharactereHelper.getEncodage(resultat.getString("useconst_produit"), "ISO-8859-1"));
+				produit.setInformpub(CharactereHelper.getEncodage(resultat.getString("informpub_produit"), "ISO-8859-1"));
 			}
 		}
@@ -109,5 +113,5 @@
 			closeConnection();
 		}
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getProduitById::nom::"+ produit.getNom() + "::date::" + produit.getBeginDate());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getProduitById::nom::"+ produit.getNom() + "::date::" + produit.getBeginDate());
 
 		return produit;
@@ -122,5 +126,5 @@
 		try {
 			requete = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
-			sql = "select distinct id_produit, title_produit, begintime_produit, endtime_produit, header_produit from produit join lienproduit using (id_produit) ";
+			sql = "select distinct id_produit, title_produit, begintime_produit, endtime_produit, header_produit from produit join lienproduit using (id_produit)";
 			
 			if (id_produit != null) {
@@ -149,5 +153,5 @@
 		}
 		
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListProductByLink::taille::"+liste_produit.size());
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "getListProductByLink::taille::"+liste_produit.size());
 		return liste_produit;
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/SGBD_jdbc.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/SGBD_jdbc.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/jdbc/SGBD_jdbc.java	(revision 70)
@@ -16,8 +16,8 @@
 	public SGBD_jdbc(InfoConnectBean n_info) {
 		con = null;
-		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "construction connection");
+//		LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "construction connection");
 		if (pooling == null) {
 			info = n_info;
-			LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "creation pooling :: " + info);
+//			LoggerPerso.log(SGBD_jdbc.class, LoggerPerso.DEBUG, "creation pooling :: " + info);
 			pooling = new PGPoolingDataSource();
 			pooling.setDatabaseName(info.getDb_name());
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/MainTest.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/MainTest.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/MainTest.java	(revision 70)
@@ -1,8 +1,6 @@
 package org.medias.eccad.persistance.test;
 
-import java.util.List;
 
 import org.medias.eccad.helpers.SpringBeanFactory;
-import org.medias.eccad.modele.Grille;
 import org.medias.eccad.persistance.exception.PersistanceException;
 import org.medias.eccad.persistance.jdbc.GrilleTestjdbc;
@@ -17,12 +15,12 @@
 		//system.out.println(System.currentTimeMillis());
 		GrilleTestjdbc grilletest = (GrilleTestjdbc) SpringBeanFactory.getXmlFactory("test").getBean("grilleDAO");
-		List<Grille> liste = grilletest.getListGrille(27,3, "2003-11-01", "2008-01-01");
+//		List<Grille> liste = grilletest.getListGrille(27,3, "2003-11-01", "2008-01-01");
 		//system.out.println(System.currentTimeMillis());
 		//system.out.println(liste.size());
 		grilletest.connection();
 		
-		for (Grille grille : liste) {
+//		for (Grille grille : liste) {
 			//grilletest.getGrilleValue(grille.getOid());
-		}
+//		}
 		//system.out.println(System.currentTimeMillis());
 		grilletest.disconnect();
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestColorTabDAO.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestColorTabDAO.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestColorTabDAO.java	(revision 70)
@@ -1,12 +1,3 @@
 package org.medias.eccad.persistance.test;
-
-import java.util.List;
-
-import org.medias.eccad.helpers.SpringBeanFactory;
-import org.medias.eccad.modele.ColorMap;
-import org.medias.eccad.modele.ColorTab;
-import org.medias.eccad.persistance.dao.CodeDAO;
-import org.medias.eccad.persistance.dao.ColorTabDAO;
-import org.medias.eccad.persistance.exception.PersistanceException;
 
 import junit.framework.TestCase;
@@ -19,24 +10,24 @@
 
 	public void testGetColorMapByGrille() {
-		ColorTabDAO colortabDAO = (ColorTabDAO) SpringBeanFactory.getXmlFactory("test").getBean("colorTabDAO");
-		ColorTab colortab = null;
-		try {
-			colortab = colortabDAO.getColorMapByGrille(845767287);
-		} catch (PersistanceException e) {
+//		ColorTabDAO colortabDAO = (ColorTabDAO) SpringBeanFactory.getXmlFactory("test").getBean("colorTabDAO");
+//		ColorTab colortab = null;
+//		try {
+//			colortab = colortabDAO.getColorMapByGrille(845767287);
+//		} catch (PersistanceException e) {
 			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
+//			e.printStackTrace();
+//		}
 		//system.out.println(colortab.toString());
 	}
 
 	public void testGetListColorMapByGrille() {
-		ColorTabDAO colortabDAO = (ColorTabDAO) SpringBeanFactory.getXmlFactory("test").getBean("colorTabDAO");
-		List<ColorMap> colortab = null;
-		try {
-			colortab = colortabDAO.getListColorTabByGrille(10);
-		} catch (PersistanceException e) {
+//		ColorTabDAO colortabDAO = (ColorTabDAO) SpringBeanFactory.getXmlFactory("test").getBean("colorTabDAO");
+//		List<ColorMap> colortab = null;
+//		try {
+//			colortab = colortabDAO.getListColorTabByGrille(10);
+//		} catch (PersistanceException e) {
 			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
+//			e.printStackTrace();
+//		}
 		
 		//system.out.println(colortab.size());
@@ -45,13 +36,13 @@
 	
 	public void testGetCode() {
-		CodeDAO codedao = (CodeDAO) SpringBeanFactory.getXmlFactory("test").getBean("codeDAO");
-		List<String> codes = null;
+//		CodeDAO codedao = (CodeDAO) SpringBeanFactory.getXmlFactory("test").getBean("codeDAO");
+//		List<String> codes = null;
 	
-		try {
-			codes = codedao.getListCodeByGrille(845767287);
-		} catch (PersistanceException e) {
+//		try {
+//			codes = codedao.getListCodeByGrille(845767287);
+//		} catch (PersistanceException e) {
 		// TODO Auto-generated catch block
-		e.printStackTrace();
-	}
+//		e.printStackTrace();
+//	}
 	//system.out.println(codes.toString());
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestMetierDessin.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestMetierDessin.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestMetierDessin.java	(revision 70)
@@ -1,8 +1,4 @@
 package org.medias.eccad.persistance.test;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
-import org.medias.eccad.metier.ServiceMetier;
-import org.medias.eccad.modele.Zone;
 
 import junit.framework.TestCase;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestPerformance.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestPerformance.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestPerformance.java	(revision 70)
@@ -1,10 +1,5 @@
 package org.medias.eccad.persistance.test;
 
-import java.sql.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-
 import org.medias.eccad.helpers.SpringBeanFactory;
-import org.medias.eccad.modele.Grille;
 import org.medias.eccad.persistance.exception.PersistanceException;
 import org.medias.eccad.persistance.jdbc.GrilleTestjdbc;
@@ -23,12 +18,12 @@
 		//system.out.println(System.currentTimeMillis());
 		GrilleTestjdbc grilletest = (GrilleTestjdbc) SpringBeanFactory.getXmlFactory("test").getBean("grilleDAO");
-		List<Grille> liste = grilletest.getListGrille(27,3, "2003-11-01", "2008-01-01");
+//		List<Grille> liste = grilletest.getListGrille(27,3, "2003-11-01", "2008-01-01");
 		//system.out.println(System.currentTimeMillis());
 		//system.out.println(liste.size());
 		grilletest.connection();
 		
-		for (Grille grille : liste) {
+//		for (Grille grille : liste) {
 			//grilletest.getGrilleValue(grille.getId_grille());
-		}
+//		}
 		//system.out.println(System.currentTimeMillis());
 		grilletest.disconnect();
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestServiceMetadata.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestServiceMetadata.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestServiceMetadata.java	(revision 70)
@@ -1,5 +1,3 @@
 package org.medias.eccad.persistance.test;
-
-import org.medias.eccad.metier.ServiceMetadata;
 
 import junit.framework.TestCase;
@@ -13,6 +11,6 @@
 
 	public void testGetXMLTransformResult() {
-		ServiceMetadata service_meta = new ServiceMetadata();
-			String xml = service_meta.getXmlMetadata(4);
+//		ServiceMetadata service_meta = new ServiceMetadata();
+//			String xml = service_meta.getXmlMetadata(4);
 		//system.out.println(xml);
 		//system.out.println(service_meta.getXMLTransformResult(xml, "metadata.xslt"));
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestXmlDAOhibernate.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestXmlDAOhibernate.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/persistance/test/TestXmlDAOhibernate.java	(revision 70)
@@ -1,6 +1,4 @@
 package org.medias.eccad.persistance.test;
 
-import org.medias.eccad.persistance.dao.XmlDAO;
-import org.medias.eccad.persistance.hibernate.XmlDAOhibernate;
 
 import junit.framework.TestCase;
@@ -13,5 +11,5 @@
 
 	public void testGetXmlByProduit() {
-		XmlDAO xmldao = new XmlDAOhibernate();
+//		XmlDAO xmldao = new XmlDAOhibernate();
 		//system.out.println(xmldao.getXmlByProduit(4));
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/AbstractVueBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/AbstractVueBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/AbstractVueBean.java	(revision 70)
@@ -10,21 +10,22 @@
 	 */
 	protected void controleSession() {
-		if (FacesContext.getCurrentInstance() == null)
+		if (FacesContext.getCurrentInstance() == null) {
 			throw new DeconnectionException();
-		
-		if (FacesContext.getCurrentInstance().getExternalContext() == null)
+		}
+		if (FacesContext.getCurrentInstance().getExternalContext() == null) {
 			throw new DeconnectionException();
-		
-		if ((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false) == null)
+		}
+		if ((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false) == null) {
 			throw new DeconnectionException();
-		
+		}
 		
 		SessionBean sessionbean = (SessionBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("sessionBean");
 		
-		if (sessionbean == null)
+		if (sessionbean == null) {
 			throw new DeconnectionException();
-		
-		if (sessionbean.getEmail() == null || sessionbean.getEmail() == "")
+		}
+		if (sessionbean.getEmail() == null || sessionbean.getEmail() == "") {
 			throw new DeconnectionException();
+		}
 	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/CarteBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/CarteBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/CarteBean.java	(revision 70)
@@ -7,5 +7,4 @@
 import javax.faces.component.UIInput;
 import javax.faces.component.UIOutput;
-import javax.faces.component.UISelectItem;
 import javax.faces.component.UISelectOne;
 import javax.faces.context.FacesContext;
@@ -15,30 +14,31 @@
 import javax.servlet.http.HttpSession;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.metier.ServiceMetier;
 import org.medias.eccad.metier.dessinCarte.ServiceCarte;
-import org.medias.eccad.metier.generationRaster.ServiceRaster;
-import org.medias.eccad.metier.statistique.ServiceStatistique;
 import org.medias.eccad.modele.Parametre;
 import org.medias.eccad.modele.Produit;
+import org.medias.eccad.modele.Rcp;
+import org.medias.eccad.modele.Secteur;
 import org.medias.eccad.modele.StatReponse;
+import org.medias.eccad.modele.Visualisation;
 import org.medias.eccad.modele.Zone;
-import org.medias.eccad.persistance.dao.GrilleDAO;
-import org.medias.eccad.persistance.exception.PersistanceException;
 import org.medias.eccad.presentation.traducteur.TraducteurCarte;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
-
 
 public class CarteBean extends AbstractVueBean {
 
-	private XmlBeanFactory xmlbean;
-	
+//	private XmlBeanFactory xmlbean;
+
 	private String url;
 	private ServiceMetier smp;
 	private ServiceCarte serv_carte;
 	private String parametre;
+	private String secteur;
+	private String rcp;
 	private String produit;
-	private Zone zone_affichee;
+	private String unite;
+	private Long colormapDefault;
+	private Long classdisDefault;
+	private Zone zone_demandee;
+	private Zone zone_visible;
 	private Zone zone_click;
 	private int clicX;
@@ -46,44 +46,68 @@
 	private String visu;
 	private String url_legend;
-	
+
 	private UIOutput northbc;
 	private UIOutput southbc;
 	private UIOutput eastbc;
 	private UIOutput westbc;
-	
-	private boolean gridOn;
-	private boolean statOn;
-	
+
+//	private boolean gridOn;
+//	private boolean statOn;
+	private boolean showPosPixel;
+
 	private List<SelectItem> liste_colormap;
+	private List<SelectItem> liste_classdis;
 	private Long colormap_id;
+	private String colormap_txt;
+	private Long classdis_id;
 	private UISelectOne colormapUI;
-	
+	private UISelectOne classdisUI;
+
+	private List<SelectItem> liste_region;
+	private Long region;
+	private String regionName;
+	private UISelectOne regionUI;
+	private List<SelectItem> liste_country;
+	private Long country;
+	private String countryName;
+	private UISelectOne countryUI;
+	
+	private String mode;
+	private UISelectOne modeUI;
 	private String statistique;
 	private UISelectOne statistiqueUI;
+	private String total;
+	private UISelectOne totalUI;
+	private List<SelectItem> liste_mask;
+	private String mask;
+	private UISelectOne maskUI;
 	
 	private int nbrGrille;
-	
+	public int nbrAlt;
+
 	private String mapTitle;
 	private UIOutput mapTitleUI;
-	
+
 	private double minParam;
 	private UIInput minParamUI;
 	private double maxParam;
 	private UIInput maxParamUI;
-	
+
 	private Long nbrClasses;
 	private UISelectOne nbrClassesUI;
-	
+
 	private double resolution;
-	
+
 	private String pixelCenter;
-	private double centerLat;
-	private double centerLon;
+	private String centerLat;
+	private String centerLon;
+	private String globalSum;
 	private double centerLatClick;
 	private double centerLonClick;
-	
+
 	private UIOutput pixelCenterUI;
-	
-
+
+	private String typeCodif;
+	
 	/**
 	 * Initialisation de la carte
@@ -92,6 +116,6 @@
 	public CarteBean() {
 		controleSession();
-		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		smp = critereBean.getSmp();	
+		CritereBean critereBean = (CritereBean) ((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		smp = critereBean.getSmp();
 		serv_carte = new ServiceCarte();
 		initStatistiqueList();
@@ -101,8 +125,7 @@
 		centerLatClick = 0;
 		centerLonClick = 0;
-		
 		nbrGrille = 0;
-	}
-	
+		nbrAlt = 0;
+	}
 
 	/**
@@ -113,173 +136,570 @@
 	 */
 	public void dessinCarteInitiale(ActionEvent event) {
-		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "dessin initial");
-		Produit prod = smp.getProduitById(critereBean.getProduit().intValue());
+		CritereBean critereBean = (CritereBean) ((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		Produit prod = critereBean.getProduitbean();
 		initStatistiqueList();
-		critereBean.majGrille();
-		zone_affichee = new Zone(critereBean.getNorthbc(), critereBean.getSouthbc(), critereBean.getEastbc(), critereBean.getWestbc());
-		nbrGrille = critereBean.getListe_grille().size();
-		
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "nbr grilles ="+nbrGrille);
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "id parametre="+critereBean.getParametre().intValue());
+		zone_demandee = new Zone(critereBean.getNorthbc(), critereBean.getSouthbc(), critereBean.getEastbc(), critereBean.getWestbc());
 		// rÃ©cupÃ©ration des informations sur les donnÃ©es
 		Parametre param = smp.getParametreById(critereBean.getParametre().intValue());
 		parametre = param.getNom();
+		unite = param.getUnite();
+		Secteur sect = smp.getSecteurById((critereBean.getSector()==null?0:critereBean.getSector().intValue()));
+		secteur = sect.getNom();
+		Rcp rc = smp.getRcpById(critereBean.getRcp().intValue());
+		rcp = rc.getNom();
+		colormapDefault = new Long(param.getColormapDefault());
+		classdisDefault = new Long(param.getClassdisDefault());
+		critereBean.majAlt(secteur);
+		critereBean.majGrille(null);
+//System.out.println("init, date="+critereBean.getDate()+", alt="+critereBean.getAlt()+", grille="+critereBean.getGrille());
+		nbrGrille = critereBean.getListe_grille().size();
+		nbrAlt = (critereBean.getListe_alt()==null?0:critereBean.getListe_alt().size()-1);
+//LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "nbr grilles ="+nbrGrille);
 		
-		produit   = prod.getNom();
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "produit="+produit);
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "produit type="+prod.getType());
-		visu = smp.getVisuByTypeProduct(prod.getType()).getPage_jsp();
-		majColorMap(-1);
-		
-		if (statistiqueUI != null)
-			statistiqueUI.setValue("none");
-		statistique = "none";
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "secteur int value="+critereBean.getSector().intValue());
+//		secteur="";
+//		if ( critereBean.getSector().intValue() > 0 ) { 
+//			Secteur sec = smp.getSecteurById(critereBean.getSector().intValue());
+//			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "id secteur="+critereBean.getSector().intValue());
+//			secteur = sec.getNom();
+//		}
+
+		produit = prod.getNom();
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "produit="+produit);
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG , "produit type="+prod.getType());
+
+		Visualisation visual = smp.getVisuByTypeProduct(prod.getType());
+		visu = visual.getPage_jsp();
+		critereBean.majDayMonthYear(visual.getTraducteur());
+		typeCodif = smp.getTypeCodif((critereBean.getGrille()==null?0:critereBean.getGrille().longValue()));
+		majColorMap();
+		majClassDistribution();
+//		statistique = "moyenneCarte";
+//		if (statistiqueUI != null)
+//			statistiqueUI.setValue(statistique);
+//		mode = "date";
+//		if (modeUI != null)
+//			modeUI.setValue(mode);
+		total = "totalYear";
+		if (totalUI != null)
+			totalUI.setValue(total);
+		if (critereBean.getGrille() == null) {
+			url = "/images/nodata.png";
+		} else {
+			resolution = serv_carte.getResolution(critereBean.getGrille().longValue());
+		}
+		majMask();
+//		mask = "none";
+//		if (maskUI != null)
+//			maskUI.setValue(mask);
+		majMaskRegion();
+		majMaskCountry();
 		dessinCarte(event);
 	}
 
-	
 	/**
 	 * Change le mode de visualisation de statistique en normal
 	 * @param event
 	 */
-	public void stopStatistique(ActionEvent event) {
-		initStatistiqueList();
-		majColorMap(-1);
+//	public void stopStatistique(ActionEvent event) {
+//		initStatistiqueList();
+//		majColorMap();
+//		majClassDistribution();
+//		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+//		if (critereBean.getGrille() == null)
+//			url = "/images/nodata.png";
+//		else
+//			setImageURL(false);
+//		clicX = -1;
+//		clicY = -1;
+//	}
+
+	/**
+	 * permet de savoir s'il faut modifier les Ã©chelles
+	 * @param a_tester
+	 * @return
+	 */
+	private boolean testChangeScale(String a_tester) {
+		return (a_tester.equals("ecartCarte") || a_tester.equals("sommeCarte") 
+				|| a_tester.equals("region") || a_tester.equals("country"));
+	}
+
+	/**
+	 * DÃ©termine le mode d'affichage sÃ©lectionnÃ©
+	 * @param event
+	 */
+	public void selectMode(ValueChangeEvent event) {
+		if (modeUI.getValue().toString().equals("date")) {
+			mode = "date";
+			changeGrille(null);
+		} else if (modeUI.getValue().toString().equals("stats")) {
+			mode = "stats";
+			changeStatistique(null);
+		} else if (modeUI.getValue().toString().equals("totals")) {
+			mode = "totals";
+			changeTotal(null);
+		}
+//		System.out.println("changemode="+mode);
+	}
+	
+	/**
+	 * Activer lors du changement de la statistique visualisÃ©
+	 * @param event
+	 */
+	public void changeStatistique(ValueChangeEvent event) {
 		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		if (critereBean.getGrille() == null) 
+//		majColorMap();
+		if (event != null) {
+			statistique = (String)event.getNewValue();
+		}
+		if (testChangeScale(statistique)) {
+			majClassDistributionStat();
+		} else {
+			majClassDistribution();
+		}
+
+		if (critereBean.getGrille() == null)
 			url = "/images/nodata.png";
 		else
-			setImageURL(critereBean.getGrille().longValue(), false);
+			setImageURL(false);
+	}
+
+	/**
+	 * Activer lors du changement du total
+	 * @param event
+	 */
+	public void changeTotal(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (event != null) {
+			total = (String)event.getNewValue();
+		}
+		majClassDistributionStat();
+
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+	}
+	
+	/**
+	 * Modification de la grille sÃ©lectionnÃ©e
+	 * @param event
+	 */
+	public void changeGrille(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+//		if (mode.equals("stats") && testStatistique(statistique)) {
+//			majColorMap(critereBean.getGrille().longValue());
+			majClassDistribution();
+//		}
+
+//		zone_affichee = new Zone(critereBean.getNorthbc(), critereBean.getSouthbc(), critereBean.getEastbc(), critereBean.getWestbc());
+		Long idGrille;
+		if (event == null) {
+			idGrille = critereBean.getGrille();
+		} else {
+			idGrille = (Long)event.getNewValue();
+			critereBean.setGrille(idGrille);
+			String dateLabel;
+			if (critereBean.getProduitbean().getType().equals("temporal")) {
+				for (int num = 0; num < critereBean.getListe_grille().size(); num++) {
+					if (critereBean.getListe_grille().get(num).getValue().equals(idGrille)) {
+						dateLabel = critereBean.getListe_grille().get(num).getLabel();
+						if (dateLabel.length() == 7) {
+							dateLabel += "-01";
+						} else if (dateLabel.length() == 4) {
+							dateLabel += "-01-01";
+						}
+						critereBean.setDate(dateLabel);
+						break;
+					}
+				}
+				critereBean.setDay(critereBean.getDate());
+				critereBean.getDayUI().setValue(critereBean.getDay());
+				critereBean.setMonth(critereBean.getDate().substring(0,7));
+				critereBean.getMonthUI().setValue(critereBean.getMonth());
+				critereBean.setYear(new Integer(critereBean.getDate().substring(0,4)));
+				critereBean.getYearUI().setValue(critereBean.getYear());
+			} else {
+				for (int num = 0; num < critereBean.getListe_grille().size(); num++) {
+					if (critereBean.getListe_grille().get(num).getValue().equals(idGrille)) {
+						dateLabel = critereBean.getListe_grille().get(num).getLabel();
+						critereBean.setDate(dateLabel);
+						break;
+					}
+				}
+			}
+		}
+//		gridOn = true;
+//		statOn = false;
+		if (idGrille == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+//		System.out.println("changeGrille, nouvelle date="+critereBean.getDate()+", alt="+critereBean.getAlt()+", grille="+critereBean.getGrille()+", day="+critereBean.getDay()+", month="+critereBean.getMonth()+", year="+critereBean.getYear()+", grilleUI="+critereBean.getGrilleUI().getValue());
+	}
+
+	/**
+	 * Modification de l'altitude sÃ©lectionnÃ©e
+	 * @param event
+	 */
+	public void changeAlt(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+
+		String alt ;
+		if (event == null) {
+			alt = critereBean.getAlt();
+		} else {
+			alt = (String)event.getNewValue();
+			critereBean.setAlt(alt);
+		}
+		String date = critereBean.getDate();
+		critereBean.majGrille(date);
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+//		System.out.println("changeAlt, date="+date+", alt="+critereBean.getAlt()+", grille="+critereBean.getGrille()+", day="+critereBean.getDay()+", month="+critereBean.getMonth()+", year="+critereBean.getYear());
+	}
+	
+	/**
+	 * Activer lors du changement du jour
+	 * @param event
+	 */
+	public void changeDay(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (event != null && mode.equals("totals")) {
+			String day = (String)event.getNewValue();
+			critereBean.setDay(day);
+			String dateLabel;
+			for (int num = 0; num < critereBean.getListe_grille().size(); num++) {
+				dateLabel = critereBean.getListe_grille().get(num).getLabel();
+				if (dateLabel.length() == 7) {
+					dateLabel += "-01";
+				} else if (dateLabel.length() == 4) {
+					dateLabel += "-01-01";
+				}
+				if (dateLabel.equals(day)) {
+					critereBean.setGrille((Long)critereBean.getListe_grille().get(num).getValue());
+					critereBean.getGrilleUI().setValue(critereBean.getGrille());
+					critereBean.setDate(day);
+					break;
+				}
+			}
+			critereBean.setMonth(critereBean.getDate().substring(0,7));
+			critereBean.getMonthUI().setValue(critereBean.getMonth());
+			critereBean.setYear(new Integer(critereBean.getDate().substring(0,4)));
+			critereBean.getYearUI().setValue(critereBean.getYear());
+		}
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+//		System.out.println("changeDay, grille="+critereBean.getGrille()+", day="+critereBean.getDay()+", month="+critereBean.getMonth()+", year="+critereBean.getYear());
+	}
+	
+	/**
+	 * Activer lors du changement du mois
+	 * @param event
+	 */
+	public void changeMonth(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (event != null && mode.equals("totals")) {
+			String month = (String)event.getNewValue();
+			critereBean.setMonth(month);
+			critereBean.setYear(new Integer(month.substring(0,4)));
+			critereBean.getYearUI().setValue(critereBean.getYear());
+			String dateLabel;
+			for (int num = 0; num < critereBean.getListe_grille().size(); num++) {
+				dateLabel = critereBean.getListe_grille().get(num).getLabel();
+				if (dateLabel.length() == 7) {
+					dateLabel += "-01";
+				} else if (dateLabel.length() == 4) {
+					dateLabel += "-01-01";
+				}
+				if (dateLabel.substring(0,7).equals(month)) {
+					critereBean.setDate(dateLabel);
+					critereBean.setGrille((Long)critereBean.getListe_grille().get(num).getValue());
+					critereBean.getGrilleUI().setValue(critereBean.getGrille());
+					critereBean.setDay(dateLabel);
+					critereBean.getDayUI().setValue(critereBean.getDay());
+					break;
+				}
+			}
+		}
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+//		System.out.println("changeMonth, grille="+critereBean.getGrille()+", day="+critereBean.getDay()+", month="+critereBean.getMonth()+", year="+critereBean.getYear());
+	}
+	
+	/**
+	 * Activer lors du changement de l'annÃ©e
+	 * @param event
+	 */
+	public void changeYear(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (event != null && mode.equals("totals")) {
+			Integer year = (Integer)event.getNewValue();
+			critereBean.setYear(year);
+			String dateLabel;
+			for (int num = 0; num < critereBean.getListe_grille().size(); num++) {
+				dateLabel = critereBean.getListe_grille().get(num).getLabel();
+				if (dateLabel.length() == 7) {
+					dateLabel += "-01";
+				} else if (dateLabel.length() == 4) {
+					dateLabel += "-01-01";
+				}
+				if (Integer.parseInt(dateLabel.substring(0,4)) == year.intValue()) {
+					critereBean.setDate(dateLabel);
+					critereBean.setGrille((Long)critereBean.getListe_grille().get(num).getValue());
+					critereBean.getGrilleUI().setValue(critereBean.getGrille());
+					critereBean.setDay(dateLabel);
+					critereBean.getDayUI().setValue(critereBean.getDay());
+					critereBean.setMonth(critereBean.getDate().substring(0,7));
+					critereBean.getMonthUI().setValue(critereBean.getMonth());
+					break;
+				}
+			}
+		}
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+//		System.out.println("changeYear, grille="+critereBean.getGrille()+", day="+critereBean.getDay()+", month="+critereBean.getMonth()+", year="+critereBean.getYear());
+	}
+	
+	/**
+	 * Modification du masque
+	 * @param event
+	 */
+	public void changeMask(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (event != null) {
+			mask = (String)event.getNewValue();
+		}
+//		if (testChangeScale(mask)) {
+//			majClassDistributionStat();
+//		} else {
+//			majClassDistribution();
+//		}
+		if (mask.equals("region")) {
+			majMaskRegion();
+		} else if (mask.equals("country")) {
+			majMaskCountry();
+		}
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+	}
+	
+	/**
+	 * Modification de la rÃ©gion sÃ©lectionnÃ©e
+	 * @param event
+	 */
+	public void changeRegion(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (event != null) {
+			region = (Long)event.getNewValue();
+			for (SelectItem si: liste_region) {
+				if (region.equals(si.getValue())) {
+					regionName = si.getLabel();
+					break;
+				}
+			}
+		}
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+	}
+	
+	/**
+	 * Modification du pays sÃ©lectionnÃ©
+	 * @param event
+	 */
+	public void changeCountry(ValueChangeEvent event) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (event != null) {
+			country = (Long)event.getNewValue();
+			for (SelectItem si: liste_country) {
+				if (country.equals(si.getValue())) {
+					countryName = si.getLabel();
+					break;
+				}
+			}
+		}
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
+	}
+	
+	/**
+	 * Modification de la colormap
+	 * @param event
+	 */
+	public void changeColormap(ValueChangeEvent event) {
+		if (event != null) {
+			colormap_id = (Long)event.getNewValue();
+		}
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (critereBean.getGrille() == null)
+			url = "/images/nodata.png";
+		else
+			setImageURL(false);
 		clicX = -1;
 		clicY = -1;
 	}
-	
-	/**
-	 * permet de savoir si les statistiques font partie d'une exception (par exemple si elles vont utiliser une colormap dynamique)
-	 * il faudrai modifier cela car ce n'est pas propre du tout 
-	 * de plus il faut penser Ã  le modifier au niveau du service carte dans la fonction getLegendStat
-	 * @param a_tester
-	 * @return
-	 */
-	private boolean testStatistique(String a_tester) {
-		return (a_tester.equals("ecartCarte") || a_tester.equals("moyenneCarte") || a_tester.equals("sommeCarte"));
-	}
-	
-	/**
-	 * Activer lors du changement de la statistique visualisÃ©
-	 * @param event
-	 */
-	public void changeStatistique(ValueChangeEvent event) {
-		LoggerPerso.log(CarteBean.class,LoggerPerso.DEBUG, "change statistique");
-		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		
-		if (testStatistique(statistiqueUI.getValue().toString()))
-			majColorMapStat();
-		else
-			if (testStatistique(statistique))
-				majColorMap(critereBean.getGrille().longValue());
-			
-		if (critereBean.getGrille() == null) 
+
+	public void changeClassdis(ValueChangeEvent event) {
+		if (event != null) {
+			classdis_id = (Long)event.getNewValue();
+		}
+		CritereBean critereBean = (CritereBean) ((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		if (critereBean.getGrille() == null)
 			url = "/images/nodata.png";
 		else
-			setImageURL(critereBean.getGrille().longValue(), false);
-	}
-	
-	/**
-	 * Modification de la grille sÃ©lectionnÃ©e
-	 * @param event
-	 */
-	public void dessinCarte(ValueChangeEvent event) {
-		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		
-		if (testStatistique(statistique))
-			majColorMap(critereBean.getGrille().longValue());
-
-		zone_affichee = new Zone(critereBean.getNorthbc(), critereBean.getSouthbc(), critereBean.getEastbc(), critereBean.getWestbc());
-		critereBean.setGrille((Long)event.getNewValue());
-		
-		initStatistiqueList();
-		
-		setImageURL((Long)event.getNewValue(), false);
-	}
-	
-	
-	
-	
+			setImageURL(false);
+		clicX = -1;
+		clicY = -1;
+	}
+
 	/**
 	 * Modification de la colormap
 	 * @param event
 	 */
-	public void changeColormap(ValueChangeEvent event) {
+/*	public void changeColormapDynamic(ValueChangeEvent event) {
 		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		if (critereBean.getGrille() == null) 
+		if (critereBean.getGrille() == null)
 			url = "/images/nodata.png";
 		else
-			setImageURL(critereBean.getGrille().longValue(), false);
-		
+			setImageURL(false);
 		clicX = -1;
 		clicY = -1;
-	}
-	
-	/**
-	 * Modification de la colormap
+	}*/
+
+	/**
+	 * Sur clique sur la carte
 	 * @param event
 	 */
-	public void changeColormapDynamic(ValueChangeEvent event) {
+	public void dessinCarte(ActionEvent event) {
 		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		if (critereBean.getGrille() == null) 
-			url = "/images/nodata.png";
-		else
-			setImageURL(critereBean.getGrille().longValue(), false);
-		
+		if (critereBean.getGrille() != null) {
+//			url = "/images/nodata.png";
+//		} else {
+			// init resol
+//			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "get grille value ="+critereBean.getGrille().longValue());
+//			resolution = serv_carte.getResolution(critereBean.getGrille().longValue());
+//System.out.println("zoom ou unzoom, date="+critereBean.getDate()+", alt="+critereBean.getAlt()+", grille="+critereBean.getGrille()+", day="+critereBean.getDay()+", month="+critereBean.getMonth()+", year="+critereBean.getYear());
+			setImageURL(true);
+		}
+
 		clicX = -1;
 		clicY = -1;
 	}
-	
-	/**
-	 * Sur clique sur la carte
-	 * @param event
-	 */
-	public void dessinCarte(ActionEvent event) {
-		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		if (critereBean.getGrille() == null) 
-			url = "/images/nodata.png";
-		else{
-			//init resol
-			resolution = serv_carte.getResolution(critereBean.getGrille().longValue());
-			setImageURL(critereBean.getGrille().longValue(), true);
-		}
-		clicX = -1;
-		clicY = -1;
-	}
-
+
+	/**
+	 * permet de charger les types de masques
+	 */
+	private void majMask() {
+		liste_mask = new LinkedList<SelectItem>();
+		liste_mask.add(new SelectItem("none", "None"));
+		if (resolution == 0.5) {
+			liste_mask.add(new SelectItem("region","Region"));
+			liste_mask.add(new SelectItem("country","Country"));
+		}
+		mask = "none";
+		if (maskUI != null)
+			maskUI.setValue(mask);
+	}
+	
+	/**
+	 * permet de charger les masques des rÃ©gions
+	 */
+	private void majMaskRegion() {
+		liste_region = smp.getListRegion();
+		if (liste_region.size() != 0) {
+			region = (Long)liste_region.get(0).getValue();
+			regionName = liste_region.get(0).getLabel();
+			if (regionUI != null)
+				regionUI.setValue(region);
+		}			
+	}
+
+	/**
+	 * permet de charger les masques des pays
+	 */
+	private void majMaskCountry() {
+		liste_country = smp.getListCountry();
+		if (liste_country.size() != 0) {
+			country = (Long)liste_country.get(0).getValue();
+			countryName = liste_region.get(0).getLabel();
+			if (countryUI != null)
+				countryUI.setValue(country);
+		}
+	}
+	
 	/**
 	 * permet de charger la colormap en fonction de la grille visualisÃ©e
-	 * @param oid l'identifiant de la grille
-	 */
-	private void majColorMap(long identifiant) {
-		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		if (identifiant == -1 && critereBean.getGrille() != null) 
-			identifiant = critereBean.getGrille().intValue();
-		
-		liste_colormap = smp.getListMappingColor(identifiant);
-		
+	 */
+	private void majColorMap() {
+//		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+//		if (identifiant == -1 && critereBean.getGrille() != null)
+//			identifiant = critereBean.getGrille().intValue();
+
+		liste_colormap = smp.getListMappingColor();
+
 		if (liste_colormap.size() != 0) {
-			colormap_id = (Long) liste_colormap.get(0).getValue();
+			colormap_id = colormapDefault;
+			for (int num_col = 0; num_col < liste_colormap.size(); num_col++) {
+				if ( Long.parseLong(liste_colormap.get(num_col).getValue().toString()) == colormap_id.longValue() ) {
+					colormap_txt = liste_colormap.get(num_col).getLabel();
+					break;
+				}
+			}
+//			colormap_id = (Long) liste_colormap.get(0).getValue();
 			if (colormapUI != null)
 				colormapUI.setValue(colormap_id);
 		}
 	}
-	
+
+	private void majClassDistribution() {
+		CritereBean critereBean = (CritereBean) ((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+
+		// rÃ©cupÃ©ration des informations sur les donnÃ©es
+		Parametre param = smp.getParametreById(critereBean.getParametre().intValue());
+
+		liste_classdis = smp.getListClassDistribution(param.getIdentifiant());
+
+		if (liste_classdis.size() != 0) {
+			boolean trouve = false;
+			// On recherche l'Ã©chelle de valeur dÃ©jÃ  sÃ©lectionnÃ©e dans la liste
+			// Si on ne le trouve pas, on prend l'echelle par dÃ©faut
+			// Si on le trouve, on conserve la mÃªme echelle
+			for (int i=0; !trouve && i<liste_classdis.size();i++) {
+				if (liste_classdis.get(i).getValue().equals(classdis_id)) {
+					trouve = true;
+				}
+			}
+			if (!trouve)
+				classdis_id = classdisDefault;
+//			classdis_id = (Long) liste_classdis.get(0).getValue();
+			if (classdisUI != null)
+				classdisUI.setValue(classdis_id);
+		}
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "distrib ID !!! :: " + classdis_id);
+	}
+
 	/**
 	 * Permet d'obtenir les colormaps disponible pour les statistiques
 	 *
 	 */
-	private void majColorMapStat() {
-		// FIXME : normalement il faudrai que la base de donnÃ©e retourne les colormaps qui correspondent au produit utilisÃ©... 
-		liste_colormap = smp.getListColorDynamique();
+/*	private void majColorMapStat() {
+		// FIXME : normalement il faudrai que la base de donnÃ©e retourne les colormaps qui correspondent au produit utilisÃ©...
+		liste_colormap = smp.getListColorDynamique();*/
 		/*SelectItem temp = null;
-		if (testStatistique(statistiqueUI.getValue().toString())) {
+		if (testStatistique(statistique)) {
 			for (SelectItem iterable_element : liste_colormap) {
 				if (iterable_element.getLabel().equalsIgnoreCase("logarithm"))
@@ -293,11 +713,28 @@
 			liste_colormap.add(temp);
 		}*/
-		
-		
-		if (liste_colormap.size() != 0) {
-			colormap_id = (Long) liste_colormap.get(0).getValue();
+
+/*		if (liste_colormap.size() != 0) {
+			colormap_id = colormapDefault;
+//			colormap_id = (Long) liste_colormap.get(0).getValue();
 			if (colormapUI != null)
 				colormapUI.setValue(colormap_id);
 		}
+	}*/
+
+	private void majClassDistributionStat() {
+		liste_classdis = smp.getListClassDynamique();
+
+		if (liste_classdis.size() != 0) {
+			boolean trouve = false;
+			for (int i=0; !trouve && i<liste_classdis.size();i++) {
+				if (liste_classdis.get(i).getValue().equals(classdis_id)) {
+					trouve = true;
+				}
+			}
+			if (!trouve)
+				classdis_id = (Long) liste_classdis.get(1).getValue();
+			if (classdisUI != null)
+				classdisUI.setValue(classdis_id);
+		}
 	}
 	
@@ -308,122 +745,151 @@
 	private String getIdUnique() {
 		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
-		if (session==null)
+		if (session == null)
 			return "";
-		
-		String imageID;
-		
-		
-		imageID = session.getId() + session.getLastAccessedTime() ;
-		
+		String imageID = session.getId() + session.getLastAccessedTime();
 		return imageID;
 	}
-	
+
 	/**
 	 * Permet de gÃ©nÃ©rer l'image.
 	 * Cette fonction dÃ©tecte s'il s'agit d'une statistique ou d'une carte normale, leur traitement sera diffÃ©rent par la suite
 	 * @param id_grille de la grille
-	 * @param updateAffiche dÃ©termine si la zone affichÃ©e sera mise Ã  jour ou non (zoom, dÃ©placement, etc...)
-	 */
-	private void setImageURL(Long id_grille, boolean updateAffiche) {
+	 * @param firstAff dÃ©termine si la zone affichÃ©e sera mise Ã  jour ou non (zoom, dÃ©placement, etc...)
+	 */
+	private void setImageURL(boolean firstAff) {
 		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		Long id_grille = critereBean.getGrille();
 		if (smp == null) {
 			smp = critereBean.getSmp();
-			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "smp null dans setImageURL");
-		}
-		
-		if (statistique.equals("none"))
-			mapTitle = parametre + " : " + produit;
-		else
-			mapTitle = "statistics on " + parametre + " : " + produit;
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "mapTitleUI :: " + mapTitleUI);
-		if (mapTitleUI != null)
-				mapTitleUI.setValue(mapTitle);
-		
-		if (colormapUI != null)
-			colormap_id = (Long) colormapUI.getValue();
-		if (colormap_id == null)
-			colormap_id = new Long(-1);
-		
-		
-		Zone zone_selection = new Zone(critereBean.getNorthbc(), critereBean.getSouthbc(), critereBean.getEastbc(), critereBean.getWestbc());
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "\nstatistiqueUI="+statistiqueUI);
-		if (statistiqueUI != null && !statistiqueUI.getValue().toString().equals("none")) {
-			gridOn = false;
-			statOn = true;
-			gestionCarteStat(updateAffiche);
-			
-
-			zone_affichee = serv_carte.getCarteCoordinate();
-			
-			
-			}
-		else {
-			gridOn = true;
-			statOn = false;
-			if (clicX != -1 && clicY != -1)
-				makeZoom(id_grille, getIdUnique(), resolution);
-			else {
-					
-				
-				//pixelCenterUI.setValue(pixelCenter);
-				
-				if  (updateAffiche) {//=========================== ici
-					url =serv_carte.getCarte(id_grille, colormap_id.longValue(), zone_selection, getIdUnique()).getUrlImage();
-
+		}
+		setTitleMap(critereBean);
+
+//		if (colormapUI != null)
+//			colormap_id = (Long) colormapUI.getValue();
+//		if (colormap_id == null)
+//			colormap_id = new Long(-1);
+
+//		if (classdisUI != null)
+//			classdis_id = (Long) classdisUI.getValue();
+//		if (classdis_id == null)
+//			classdis_id = new Long(-1);
+//System.out.println("setImageURL->mode="+mode+", modeUI="+(modeUI==null?"null":modeUI.getValue())+", stats="+statistique+", statsUI="+(statistiqueUI==null?"null":statistiqueUI.getValue())+", grille="+id_grille);
+		if (mode.equals("stats")) {
+//			gridOn = false;
+//			statOn = true;
+			gestionCarteStat(firstAff);
+		} else if (mode.equals("totals")) {
+//			gridOn = false;
+//			statOn = true;
+			gestionCarteTotal(firstAff);
+		} else {
+//			gridOn = true;
+//			statOn = false;
+			String idUnique = getIdUnique();
+			boolean zoom = false;
+			if (clicX != -1 && clicY != -1) {
+				makeZoom(id_grille, idUnique, resolution);
+				zoom = true;
+			} else {
+				// pixelCenterUI.setValue(pixelCenter);
+				if (firstAff) {
 					centerLatClick = 0;
 					centerLonClick = 0;
 				}
-				else{
-					url = serv_carte.getCarte(id_grille, colormap_id.longValue(), null, getIdUnique()).getUrlImage();
-					
-				}
-				
-			}
-			url_legend = serv_carte.getLegend(id_grille, colormap_id.longValue());
-			
-			
-			
-			zone_affichee = serv_carte.getCarteCoordinate();
-			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "************DEBUT " + id_grille);
-			
-			
-			
-			zone_click = new Zone(centerLatClick, centerLatClick , centerLonClick, centerLonClick);
-			
-			StatReponse statReponse = serv_carte.getStatReponse(id_grille, colormap_id.longValue(), zone_click);
-			
-			String aPixelCenter = (String)Double.toString(statReponse.getCenter());
-			
-			
-			pixelCenter = fixeDecimal(aPixelCenter);
-			centerLat = statReponse.getCenterLat();
-			centerLon = statReponse.getCenterLon();
-			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********pixelCenter :: " +pixelCenter);
-			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********centerLat  :: " +centerLat );
-			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********centerLon :: " +centerLon);
-
-		}
-		
+			}
+			StatReponse statReponse = serv_carte.getCarte(id_grille, colormap_id.longValue(), classdis_id.longValue(), zone_demandee, idUnique, produit, critereBean.getSector().longValue(), zoom, firstAff, getMaskId());
+
+			url = statReponse.getUrlImage();
+			url_legend = serv_carte.getLegend(id_grille,colormap_id.longValue(),classdis_id.longValue());
+
+//System.out.println("*** latclick="+centerLatClick+", lonclick="+centerLonClick);
+			zone_click = new Zone(centerLatClick, centerLatClick, centerLonClick, centerLonClick);
+			statReponse = serv_carte.getStatReponse(id_grille,colormap_id.longValue(), classdis_id.longValue(), zone_click, produit, critereBean.getSector().longValue(), getMaskId());
+			// On n'affiche la valeur du pixel cliquÃ© que lors d'un clic sur la carte
+			//ou bien lors d'un recalcul d'un point dÃ©jÃ  cliquÃ©
+			if ((clicX != -1 && clicY != -1) || (!firstAff && !pixelCenter.equals(""))) {
+				showPosPixel = true;
+				String aPixelCenter = Double.toString(statReponse.getCenter());
+				pixelCenter = fixeDecimal(aPixelCenter);
+				centerLat = String.valueOf(statReponse.getCenterLat());
+				centerLon = String.valueOf(statReponse.getCenterLon());
+			} else if (firstAff){
+				showPosPixel = false;
+				pixelCenter = "";
+				centerLat = "";
+				centerLon = "";
+			}
+//			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********pixelCenter :: " + pixelCenter);
+//			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********centerLat  :: " + centerLat);
+//			LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********centerLon :: " + centerLon);
+		}
+		zone_visible = serv_carte.getCarteCoordinate();
+//		System.out.println("zone demandÃ©e="+zone_demandee);
+//		System.out.println("zone visible="+zone_visible);
 		if (northbc != null) {
-			northbc.setValue(zone_affichee.getNorthbcN());
-			southbc.setValue(zone_affichee.getSouthbcN());
-			eastbc.setValue(zone_affichee.getEastbcN());
-			westbc.setValue(zone_affichee.getWestbcN());
-		}
-		
-
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne affichee: getEastbcN "+ zone_affichee.getEastbcN());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne affichee: getWestbcN "+ zone_affichee.getWestbcN());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne affichee: getNorthbcN "+ zone_affichee.getNorthbcN());
-		LoggerPerso.log(LoggerPerso.class, LoggerPerso.DEBUG, "zonnnnnnnnnnnnnnnnnnnnnnnne affichee: getSouthbcN "+ zone_affichee.getSouthbcN());
-		
-
-		//pixelCenter = serv_carte.getCarte(id_grille, colormap_id, zone_affichee, getIdUnique()+1).getCenter();
-		//LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "pixelCenter zoom :: " + pixelCenter);
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "************setImageURL.zone :: " + zone_affichee);
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "************FIN " );
-		
-	}
-	
+			northbc.setValue(zone_demandee.getNorthbcN());
+			southbc.setValue(zone_demandee.getSouthbcN());
+			eastbc.setValue(zone_demandee.getEastbcN());
+			westbc.setValue(zone_demandee.getWestbcN());
+		}
+		// pixelCenter = serv_carte.getCarte(id_grille, colormap_id, zone_affichee, getIdUnique()+1).getCenter();
+		// LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "pixelCenter zoom :: " + pixelCenter);
+		// LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "zone :: " + zone_affichee);
+	}
+	
+	/**
+	 * Permet de dÃ©finir le titre de la carte
+	 */
+	public void setTitleMap(CritereBean critereBean) {
+		String modeDisplay = "";
+		if (secteur.equals("Aviation")) {
+			modeDisplay += ", "+(critereBean.getAlt().equals("Sum")?"sum altitude":critereBean.getAlt()+" km");
+		}
+		if (mode.equals("date")) {
+			modeDisplay += ", "+critereBean.getDate();
+		} else if (mode.equals("stats")) {
+			modeDisplay += ", statistics";
+			if (statistique.equals("moyenneCarte")) {
+				modeDisplay += " - mean";
+			} else if (statistique.equals("ecartCarte")) {
+				modeDisplay += " - standard deviation";
+			} else if (statistique.equals("minimumCarte")) {
+				modeDisplay += " - minimum";
+			} else if (statistique.equals("maximumCarte")) {
+				modeDisplay += " - maximum";
+			} else if (statistique.equals("sommeCarte")) {
+				modeDisplay += " - sum";
+			}
+		} else {
+			modeDisplay += ", totals";
+			if (total.equals("totalDay")) {
+				modeDisplay += " over day "+critereBean.getDay();
+			} else if (total.equals("totalMonth")) {
+				modeDisplay += " over month "+critereBean.getMonth();
+			} else if (total.equals("totalYear")) {
+				modeDisplay += " over year "+critereBean.getYear();
+			} else if (total.equals("totalPeriod")) {
+				modeDisplay += " over period from "+critereBean.getBegDate()+" to "+critereBean.getEndDate();
+			}
+		}
+		if (mask.equals("region")) {
+			modeDisplay += ", mask: "+regionName;
+		} else if (mask.equals("country")) {
+			modeDisplay += ", mask: "+countryName;
+		}
+		if (produit.equals("IPCC")) {
+			if (!rcp.equals("None")) {
+				mapTitle = produit+": "+parametre + ", "+secteur + ", RCP "+rcp + modeDisplay;
+			} else {
+				mapTitle = produit+": "+parametre + ", "+secteur + modeDisplay;
+			}
+		} else {
+			mapTitle = produit+": "+parametre+modeDisplay;				
+		}
+
+		if (mapTitleUI != null)
+			mapTitleUI.setValue(mapTitle);
+	}
+
 	/**
 	 * Permet de zoomer
@@ -432,96 +898,171 @@
 	 */
 	public void makeZoom(long id_grille, String imageID, double resol) {
-	
-	/*	StatReponse statReponse = serv_carte.getCarte(id_grille, colormap_id.longValue(), zone_selection, getIdUnique());
+
+		/* StatReponse statReponse = serv_carte.getCarte(id_grille, colormap_id.longValue(), zone_selection, getIdUnique());
 		pixelCenter = statReponse.getCenter();
 		centerLat = statReponse.getCenterLat();
 		centerLon = statReponse.getCenterLon();*/
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "-------------------------------------------> clicX :: " +clicX);
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "-------------------------------------------> clicY  :: " + clicY);
-
-		Zone aZone = serv_carte.getCarteCoordinate();
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "------------------------------------------->  getEastbc  :: " +aZone.getEastbc());
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "------------------------------------------->  getNorthbc :: " +aZone.getNorthbc() );
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "------------------------------------------->  getSouthbc :: " +aZone.getSouthbc());
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "------------------------------------------->   getWestbc :: " +aZone.getWestbc() );
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "-------------------------------------------> clicX :: " + clicX);
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "-------------------------------------------> clicY  :: " + clicY);
+
+//		Zone aZone = serv_carte.getCarteCoordinate();
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "------------------------------------------->  getEastbc  :: " + aZone.getEastbc());
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "------------------------------------------->  getNorthbc :: " + aZone.getNorthbc());
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "------------------------------------------->  getSouthbc :: " + aZone.getSouthbc());
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "------------------------------------------->   getWestbc :: " + aZone.getWestbc());
 
 		serv_carte.zoomCarte(2, clicX, clicY, resol);
-		url = serv_carte.getCarte(id_grille, colormap_id, null, imageID).getUrlImage();
-	}
-	
+	}
+
 	/**
 	 * Permet de gÃ©nÃ©rer une carte statistique
-	 * @param updateAffiche permet de savoir si la zone visualisÃ© doit Ãªtre modifiÃ© ou non 
-	 */
-	public void gestionCarteStat(boolean updateAffiche) {
+	 * @param updateAffiche permet de savoir si la zone visualisÃ© doit Ãªtre modifiÃ© ou non
+	 */
+	public void gestionCarteStat(boolean firstAff) {
 		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		String alt = (critereBean.getAlt()==null?"0":critereBean.getAlt());
 		/*
-		 * Traduction des paramÃªtres... Bon Ã§a serai mieux de faire Ã§a dans un traducteur dÃ©diÃ© quand mÃªme :)
+		 * Traduction des paramÃštres... Bon Ã§a serai mieux de faire Ã§a dans un traducteur dÃ©diÃ© quand mÃªme :)
 		 */
 		Map<String, String> critere = new TraducteurCarte().tradCritere2Stat(critereBean, this);
-		Long id_param = critereBean.getParametre();
-		Long id_produit = critereBean.getProduit();
-		Zone zone_selection = new Zone(critereBean.getNorthbc(), critereBean.getSouthbc(), critereBean.getEastbc(), critereBean.getWestbc());
-		
-		String url_retourne;
+		long id_param = critereBean.getParametre().longValue();
+		long id_produit = critereBean.getProduit().longValue();
+		long id_secteur = (critereBean.getSector()==null?0:critereBean.getSector().longValue());
+		long id_rcp = critereBean.getRcp().longValue();
+
+		StatReponse statReponse;
+		String idUnique = getIdUnique();
+		boolean zoom = false;
 		if (clicX != -1 && clicY != -1) { // en cas de zoom
 			serv_carte.zoomCarte(2, clicX, clicY, resolution);
-			url_retourne = serv_carte.getCarteStat(critere, id_param, id_produit, getColormap_id(), getStatistiqueUI().getValue().toString(), getIdUnique(), null).getUrlImage();
-		
-
-		
-		}
-		else if (updateAffiche) { // sans zoom mais on fait un update sur la zone affichÃ© (on revient sur la zone sÃ©lectionnÃ©e)
-			Map<String, String> critere2 = new TraducteurCarte().tradCritere2StatReinit(critereBean, this);
-			url_retourne = serv_carte.getCarteStat(critere2, id_param, id_produit, getColormap_id(), getStatistiqueUI().getValue().toString(), getIdUnique(), zone_selection).getUrlImage();			
-
-			centerLatClick = 0;
-			centerLonClick = 0;
-		}
-		else // sans zoom et on reste sur la zone actuellement visible
-			url_retourne = serv_carte.getCarteStat(critere, id_param, id_produit, getColormap_id(), getStatistiqueUI().getValue().toString(), getIdUnique(), null).getUrlImage();
-			
-			
-		
-		////system.out.println(url_retourne);
-		clicX = -1;
-		clicY = -1;
-		
-		url = url_retourne;
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "::CarteBean::ChangeStatistique::ok::\n" + critere + "::" + id_param + "::" + id_produit + "::" + getStatistiqueUI().getValue().toString());
-		url_legend = serv_carte.getLegendStat(critereBean.getGrille().longValue(), colormap_id.longValue(), getStatistiqueUI().getValue().toString(), getIdUnique());
-		if (mapTitleUI != null)
-			mapTitleUI.setValue("statitics on " + parametre + " : " + produit);
-		mapTitle = "statitics on " + parametre + " : " + produit;	
-		
+			zoom = true;
+//		} else if (updateAffiche) { // sans zoom mais on fait un update sur la zone affichÃ© (on revient sur la zone sÃ©lectionnÃ©e)
+//			Map<String, String> critere2 = new TraducteurCarte().tradCritere2StatReinit(critereBean, this);
+//			statReponse = serv_carte.getCarteStat(critere, id_param, id_produit, colormap_id.longValue(),classdis_id.longValue(), id_secteur, id_rcp, statistique, idUnique, zone_selection);
+//			centerLatClick = 0;
+//			centerLonClick = 0;
+		} else {
+			if (firstAff) {
+				centerLatClick = 0;
+				centerLonClick = 0;
+			}
+		}
+		statReponse = serv_carte.getCarteStat(critere, id_param, id_produit, colormap_id.longValue(),classdis_id.longValue(), id_secteur, id_rcp, alt,statistique, idUnique, zone_demandee, zoom, firstAff, getMaskId());
+//		clicX = -1;
+//		clicY = -1;
+
+		url = statReponse.getUrlImage();
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "::CarteBean::ChangeStatistique::ok::\n" + critere + "::" + id_param + "::" + id_produit + "::" + statistique);
+		url_legend = serv_carte.getLegendStat(critereBean.getGrille().longValue(), colormap_id.longValue(),classdis_id.longValue(), statistique, idUnique);
+
 		///initialisation du pixel du centre de la zone
-
-		
-		zone_affichee = serv_carte.getCarteCoordinate();
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "************DEBUT " );
+//		zone_affichee = serv_carte.getCarteCoordinate();
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "************DEBUT ");
 		CritereBean critereBeanProvisoire = new CritereBean();
 		critereBeanProvisoire.setBegDate(critereBean.getBegDate());
 		critereBeanProvisoire.setEndDate(critereBean.getEndDate());
-		
-		Zone zone_click = new Zone(centerLatClick, centerLatClick , centerLonClick, centerLonClick);
-		
+
+		Zone zone_click = new Zone(centerLatClick, centerLatClick, centerLonClick, centerLonClick);
+
 		critereBeanProvisoire.setEastbc(zone_click.getEastbc());
 		critereBeanProvisoire.setWestbc(zone_click.getWestbc());
 		critereBeanProvisoire.setNorthbc(zone_click.getNorthbc());
 		critereBeanProvisoire.setSouthbc(zone_click.getSouthbc());
-		
+
 		Map<String, String> critereProvisoire = new TraducteurCarte().tradCritere2StatReinit(critereBeanProvisoire, this);
-		
-		StatReponse statReponse = serv_carte.getStatReponse(critereProvisoire, id_param, id_produit, getColormap_id(), getStatistiqueUI().getValue().toString(), getIdUnique(), null);
-		
-
-		String aPixelCenter = (String)Double.toString(statReponse.getCenter());
-		
-		pixelCenter = fixeDecimal(aPixelCenter);
-		centerLat = statReponse.getCenterLat();
-		centerLon = statReponse.getCenterLon();
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********pixelCenter stat  :: " +pixelCenter);
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********centerLat stat :: " +centerLat );
-		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********centerLon  stat :: " +centerLon);
+		statReponse = serv_carte.getStatReponse(critereProvisoire, id_param, id_produit, colormap_id.longValue(), classdis_id.longValue(), id_secteur, id_rcp, alt, statistique, getMaskId());
+
+		// On n'affiche la valeur du pixel cliquÃ© que lors d'un clic sur la carte
+		//ou bien lors d'un recalcul d'un point dÃ©jÃ  cliquÃ©
+		if ((clicX != -1 && clicY != -1) || (!firstAff && !pixelCenter.equals(""))) {
+			showPosPixel = true;
+			String aPixelCenter = Double.toString(statReponse.getCenter());
+			pixelCenter = fixeDecimal(aPixelCenter);
+			centerLat = String.valueOf(statReponse.getCenterLat());
+			centerLon = String.valueOf(statReponse.getCenterLon());
+		} else if (firstAff){
+			showPosPixel = false;
+			pixelCenter = "";
+			centerLat = "";
+			centerLon = "";
+		}
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********pixelCenter stat  :: " + pixelCenter);
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********centerLat stat :: " + centerLat);
+//		LoggerPerso.log(CarteBean.class, LoggerPerso.DEBUG, "***********centerLon  stat :: " + centerLon);
+	}
+
+	/**
+	 * Permet de gÃ©nÃ©rer une carte de totaux
+	 * @param updateAffiche permet de savoir si la zone visualisÃ© doit Ãªtre modifiÃ© ou non
+	 */
+	public void gestionCarteTotal(boolean firstAff) {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		String alt = (critereBean.getAlt()==null?"0":critereBean.getAlt());
+		Map<String, String> critere = new TraducteurCarte().tradCritere2Total(critereBean, this);
+		long id_param = critereBean.getParametre().longValue();
+		long id_produit = critereBean.getProduit().longValue();
+		long id_secteur = (critereBean.getSector()==null?0:critereBean.getSector().longValue());
+		long id_rcp = critereBean.getRcp().longValue();
+
+		StatReponse statReponse;
+		String idUnique = getIdUnique();
+		boolean zoom = false;
+		if (clicX != -1 && clicY != -1) { // en cas de zoom
+			serv_carte.zoomCarte(2, clicX, clicY, resolution);
+			zoom = true;
+		} else {
+			if (firstAff) {
+				centerLatClick = 0;
+				centerLonClick = 0;
+			}
+		}
+		statReponse = serv_carte.getCarteStat(critere, id_param, id_produit, colormap_id.longValue(),classdis_id.longValue(), id_secteur, id_rcp, alt, total, idUnique, zone_demandee, zoom, firstAff, getMaskId());
+		String sumStr = Double.toString(statReponse.getGlobalSum());
+		globalSum = fixeDecimal(sumStr);
+		url = statReponse.getUrlImage();
+		url_legend = serv_carte.getLegendStat(critereBean.getGrille().longValue(), colormap_id.longValue(),classdis_id.longValue(), total, idUnique);
+
+		///initialisation du pixel du centre de la zone
+//		zone_affichee = serv_carte.getCarteCoordinate();
+		CritereBean critereBeanProvisoire = new CritereBean();
+		critereBeanProvisoire.setBegDate(critereBean.getBegDate());
+		critereBeanProvisoire.setEndDate(critereBean.getEndDate());
+
+		Zone zone_click = new Zone(centerLatClick, centerLatClick, centerLonClick, centerLonClick);
+
+		critereBeanProvisoire.setEastbc(zone_click.getEastbc());
+		critereBeanProvisoire.setWestbc(zone_click.getWestbc());
+		critereBeanProvisoire.setNorthbc(zone_click.getNorthbc());
+		critereBeanProvisoire.setSouthbc(zone_click.getSouthbc());
+		critereBeanProvisoire.setDay(critereBean.getDay());
+		critereBeanProvisoire.setMonth(critereBean.getMonth());
+		critereBeanProvisoire.setYear(critereBean.getYear());
+		Map<String, String> critereProvisoire = new TraducteurCarte().tradCritere2TotalReinit(critereBeanProvisoire, this);
+		statReponse = serv_carte.getStatReponse(critereProvisoire, id_param, id_produit, getColormap_id(), getClassdis_id(), id_secteur, id_rcp, alt, total, getMaskId());
+
+		// On n'affiche la valeur du pixel cliquÃ© que lors d'un clic sur la carte
+		//ou bien lors d'un recalcul d'un point dÃ©jÃ  cliquÃ©
+		if ((clicX != -1 && clicY != -1) || (!firstAff && !pixelCenter.equals(""))) {
+			showPosPixel = true;
+			String aPixelCenter = Double.toString(statReponse.getCenter());
+			pixelCenter = fixeDecimal(aPixelCenter);
+			centerLat = String.valueOf(statReponse.getCenterLat());
+			centerLon = String.valueOf(statReponse.getCenterLon());
+		} else if (firstAff){
+			showPosPixel = false;
+			pixelCenter = "";
+			centerLat = "";
+			centerLon = "";
+		}
+	}
+	
+	/**
+	 * MÃ©thode fournissant l'identifiant de la grille correspondant au masque sÃ©lectionnÃ©
+	 * Si aucun masque n'est sÃ©lectionnÃ©, retourne 0
+	 */
+	private long getMaskId() {
+		if (mask.equals("region")) return region.longValue();
+		else if (mask.equals("country")) return country.longValue();
+		else return 0;
 	}
 	
@@ -531,41 +1072,46 @@
 	 */
 	private void initStatistiqueList() {
-		gridOn = true;
-		statOn = false;
+//		gridOn = true;
+//		statOn = false;
+		statistique = "moyenneCarte";
 		if (statistiqueUI != null)
-			statistiqueUI.setValue("none");
-		statistique = "none";
-	}
-	
-	
-	
-	
-	
-	
+			statistiqueUI.setValue(statistique);
+		mode = "date";
+		if (modeUI != null)
+			modeUI.setValue(mode);
+	}
+
 	private String fixeDecimal(String entree) {
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "-------------------------------------******------>entree "+entree);
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "-------------------------------------******------>entree "+entree);
 		if (entree == null)
 			return "nc";
 		int index = entree.lastIndexOf(".");
 		int indexE = entree.lastIndexOf("E");
-		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree  --lll-->2 "+indexE+"  "+index+"  "+entree.length());
-		if ( indexE == -1 && index != -1 && entree.length() >= index + 5)
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree  ----> == "+indexE+"  "+index+"  "+entree.length());
+		if (indexE == -1 && index != -1 && entree.length() >= index + 5) {
 			entree = entree.substring(0, entree.lastIndexOf(".")+5);
-		if ( indexE != -1 && index != -1 && entree.length() >= index + 5)
-		{
+		} else if (indexE != -1 && index != -1 && entree.length() >= index + 5) {
 			String aEntree = entree;
-			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "aEntree "+aEntree.lastIndexOf("E")+"  "+aEntree.length()+"    "+aEntree.lastIndexOf("E")+"  "+aEntree.length());
-			aEntree=aEntree.substring(aEntree.lastIndexOf("E"), aEntree.lastIndexOf("E")+aEntree.length()-aEntree.lastIndexOf("E"));
+//			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "aEntree "+aEntree.lastIndexOf("E")+"  "+aEntree.length()+"    "+aEntree.lastIndexOf("E")+"  "+aEntree.length());
+			aEntree = aEntree.substring(aEntree.lastIndexOf("E"), aEntree.lastIndexOf("E")+aEntree.length()-aEntree.lastIndexOf("E"));
 			entree = entree.substring(0, entree.lastIndexOf(".")+5)+aEntree;
 		}
-			LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree "+entree);
+//		LoggerPerso.log(ServiceStatistique.class, LoggerPerso.DEBUG, "entree "+entree);
 		return entree;
 	}
-	
-	
+
 	/*=====================================================
 	 * Getter and Setter
 	 ======================================================*/
-	
+
+	public String getUnite() {
+		controleSession();
+		return unite;
+	}
+
+	public void setUnite(String unite) {
+		this.unite = unite;
+	}
+
 	public String getParametre() {
 		controleSession();
@@ -640,5 +1186,13 @@
 		this.colormapUI = colormapUI;
 	}
-	
+
+	public UISelectOne getClassdisUI() {
+		return classdisUI;
+	}
+
+	public void setClassdisUI(UISelectOne classdisUI) {
+		this.classdisUI = classdisUI;
+	}
+
 	public String getUrl() {
 		return url;
@@ -648,4 +1202,5 @@
 		this.url = url;
 	}
+
 	public Long getColormap_id() {
 		return colormap_id;
@@ -656,4 +1211,12 @@
 	}
 
+	public Long getClassdis_id() {
+		return classdis_id;
+	}
+
+	public void setClassdis_id(Long classdis_id) {
+		this.classdis_id = classdis_id;
+	}
+
 	public List<SelectItem> getListe_colormap() {
 		return liste_colormap;
@@ -664,4 +1227,12 @@
 	}
 
+	public List<SelectItem> getListe_classdis() {
+		return liste_classdis;
+	}
+
+	public void setListe_classdis(List<SelectItem> liste_classdis) {
+		this.liste_classdis = liste_classdis;
+	}
+
 	public int getClicX() {
 		return clicX;
@@ -680,10 +1251,10 @@
 	}
 
-	public Zone getZone_affichee() {
-		return zone_affichee;
-	}
-
-	public void setZone_affichee(Zone zone_affichee) {
-		this.zone_affichee = zone_affichee;
+	public Zone getZone_demandee() {
+		return zone_demandee;
+	}
+
+	public void setZone_demandee(Zone zone_demandee) {
+		this.zone_demandee = zone_demandee;
 	}
 
@@ -712,20 +1283,19 @@
 	}
 
-	public boolean isGridOn() {
-		return gridOn;
-	}
-
-	public void setGridOn(boolean gridOn) {
-		this.gridOn = gridOn;
-	}
-
-	public boolean isStatOn() {
-		return statOn;
-	}
-
-	public void setStatOn(boolean statOn) {
-		this.statOn = statOn;
-	}
-
+//	public boolean isGridOn() {
+//		return gridOn;
+//	}
+
+//	public void setGridOn(boolean gridOn) {
+//		this.gridOn = gridOn;
+//	}
+
+//	public boolean isStatOn() {
+//		return statOn;
+//	}
+
+//	public void setStatOn(boolean statOn) {
+//		this.statOn = statOn;
+//	}
 
 	public String getMapTitle() {
@@ -733,19 +1303,15 @@
 	}
 
-
 	public void setMapTitle(String mapTitle) {
 		this.mapTitle = mapTitle;
 	}
 
-
 	public UIOutput getMapTitleUI() {
 		return mapTitleUI;
 	}
 
-
 	public void setMapTitleUI(UIOutput mapTitleUI) {
 		this.mapTitleUI = mapTitleUI;
 	}
-	
 
 	public double getMinParam() {
@@ -756,4 +1322,5 @@
 		this.minParam = aMinParam;
 	}
+
 	public UIInput getMinParamUI() {
 		return minParamUI;
@@ -763,4 +1330,5 @@
 		this.minParamUI = aMinParamUI;
 	}
+
 	public double getMaxParam() {
 		return maxParam;
@@ -770,4 +1338,5 @@
 		this.maxParam = aMaxParam;
 	}
+
 	public UIInput getMaxParamUI() {
 		return maxParamUI;
@@ -777,5 +1346,5 @@
 		this.maxParamUI = aMaxParamUI;
 	}
-	
+
 	public Long getNbrClasses() {
 		return nbrClasses;
@@ -785,5 +1354,5 @@
 		this.nbrClasses = aNbrClasses;
 	}
-	
+
 	public UISelectOne getNbrClassesUI() {
 		return nbrClassesUI;
@@ -793,40 +1362,45 @@
 		this.nbrClassesUI = aNbrClassesUI;
 	}
-	
+
 	public String getPixelCenter() {
 		return pixelCenter;
 	}
+
 	public void setPixelCenter(String aPixelCenter) {
 		this.pixelCenter = aPixelCenter;
 	}
-	
-	public double getCenterLon() {
+
+	public String getCenterLon() {
 		return centerLon;
 	}
-	public void setCenterLon(double aCenterLon) {
+
+	public void setCenterLon(String aCenterLon) {
 		this.centerLon = aCenterLon;
 	}
-	
-	public double getCenterLat() {
+
+	public String getCenterLat() {
 		return centerLat;
 	}
-	public void setCenterLat(double aCenterLat) {
+
+	public void setCenterLat(String aCenterLat) {
 		this.centerLat = aCenterLat;
 	}
-	
+
 	public double getCenterLonClick() {
 		return centerLonClick;
 	}
+
 	public void setCenterLonClick(double aCenterLonClick) {
 		this.centerLonClick = aCenterLonClick;
 	}
-	
+
 	public double getCenterLatClick() {
 		return centerLatClick;
 	}
+
 	public void setCenterLatClick(double aCenterLatClick) {
 		this.centerLatClick = aCenterLatClick;
 	}
-	
+
 	public UIOutput PixelCenterUI() {
 		return pixelCenterUI;
@@ -836,14 +1410,195 @@
 		this.pixelCenterUI = aPixelCenterUI;
 	}
-	
-	
+
 	public double getResolution() {
 		return resolution;
 	}
+
 	public void setResolution(double aResolution) {
 		this.resolution = aResolution;
 	}
-	
+
+	public String getSecteur() {
+		return secteur;
+	}
+
+	public void setSecteur(String secteur) {
+		this.secteur = secteur;
+	}
+
+	public String getRcp() {
+		return rcp;
+	}
+
+	public void setRcp(String rcp) {
+		this.rcp = rcp;
+	}
+
+	public String getColormap_txt() {
+		return colormap_txt;
+	}
+
+	public void setColormap_txt(String colormapTxt) {
+		colormap_txt = colormapTxt;
+	}
+
+	public String getTypeCodif() {
+		return typeCodif;
+	}
+
+	public void setTypeCodif(String typeCodif) {
+		this.typeCodif = typeCodif;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public UISelectOne getModeUI() {
+		return modeUI;
+	}
+
+	public void setModeUI(UISelectOne modeUI) {
+		this.modeUI = modeUI;
+	}
+
+	public boolean isShowPosPixel() {
+		return showPosPixel;
+	}
+
+	public void setShowPosPixel(boolean showPosPixel) {
+		this.showPosPixel = showPosPixel;
+	}
+
+	public String getTotal() {
+		return total;
+	}
+
+	public void setTotal(String total) {
+		this.total = total;
+	}
+
+	public UISelectOne getTotalUI() {
+		return totalUI;
+	}
+
+	public void setTotalUI(UISelectOne totalUI) {
+		this.totalUI = totalUI;
+	}
+
+	public int getNbrAlt() {
+		return nbrAlt;
+	}
+
+	public void setNbrAlt(int nbrAlt) {
+		this.nbrAlt = nbrAlt;
+	}
+
+	public String getGlobalSum() {
+		return globalSum;
+	}
+
+	public void setGlobalSum(String globalSum) {
+		this.globalSum = globalSum;
+	}
+
+	public Zone getZone_visible() {
+		return zone_visible;
+	}
+
+	public void setZone_visible(Zone zoneVisible) {
+		zone_visible = zoneVisible;
+	}
+
+	public String getMask() {
+		return mask;
+	}
+
+	public void setMask(String mask) {
+		this.mask = mask;
+	}
+
+	public UISelectOne getMaskUI() {
+		return maskUI;
+	}
+
+	public void setMaskUI(UISelectOne maskUI) {
+		this.maskUI = maskUI;
+	}
+
+	public List<SelectItem> getListe_region() {
+		return liste_region;
+	}
+
+	public void setListe_region(List<SelectItem> listeRegion) {
+		liste_region = listeRegion;
+	}
+
+	public Long getRegion() {
+		return region;
+	}
+
+	public void setRegion(Long region) {
+		this.region = region;
+	}
+
+	public UISelectOne getRegionUI() {
+		return regionUI;
+	}
+
+	public void setRegionUI(UISelectOne regionUI) {
+		this.regionUI = regionUI;
+	}
+
+	public List<SelectItem> getListe_country() {
+		return liste_country;
+	}
+
+	public void setListe_country(List<SelectItem> listeCountry) {
+		liste_country = listeCountry;
+	}
+
+	public Long getCountry() {
+		return country;
+	}
+
+	public void setCountry(Long country) {
+		this.country = country;
+	}
+
+	public UISelectOne getCountryUI() {
+		return countryUI;
+	}
+
+	public void setCountryUI(UISelectOne countryUI) {
+		this.countryUI = countryUI;
+	}
+
+	public String getRegionName() {
+		return regionName;
+	}
+
+	public void setRegionName(String regionName) {
+		this.regionName = regionName;
+	}
+
+	public String getCountryName() {
+		return countryName;
+	}
+
+	public void setCountryName(String countryName) {
+		this.countryName = countryName;
+	}
+
+	public List<SelectItem> getListe_mask() {
+		return liste_mask;
+	}
+
+	public void setListe_mask(List<SelectItem> listeMask) {
+		liste_mask = listeMask;
+	}
 }
-
-
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/CritereBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/CritereBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/CritereBean.java	(revision 70)
@@ -1,4 +1,5 @@
 package org.medias.eccad.presentation.bean;
 
+import java.util.ArrayList;
 import java.util.List;
 
@@ -12,8 +13,5 @@
 import javax.faces.model.SelectItem;
 import javax.faces.validator.ValidatorException;
-//import javax.servlet.http.HttpSession;
-
-
-import org.medias.eccad.helpers.LoggerPerso;
+
 import org.medias.eccad.metier.ServiceMetier;
 import org.medias.eccad.modele.Produit;
@@ -36,11 +34,27 @@
 	private List<SelectItem> liste_catparametre;
 	private Long catparametre;
-
+	
+	private List<SelectItem> liste_sector;
+	private Long sector;
+
+	private List<SelectItem> liste_rcp;
+	private Long rcp;
+	
 	private List<SelectItem> liste_grille;
 	private Long grille;
 
+	private List<SelectItem> liste_alt;
+	private String alt;
+
+	private List<SelectItem> liste_day;
+	private String day;
+	
+	private List<SelectItem> liste_month;
+	private String month;
+	
+	private List<SelectItem> liste_year;
+	private Integer year;
+	
 	private ServiceMetier smp;
-	
-	private String ipcc_selection;
 	
 	//private String produit_header;
@@ -59,8 +73,17 @@
 	private UISelectOne  produitUI;
 	private UISelectOne  parametreUI;
+	private UISelectOne  sectorUI;
+	private UISelectOne  rcpUI;
+	private UISelectOne  grilleUI;
+	private UISelectOne  altUI;
+	private UISelectOne  dayUI;
+	private UISelectOne  monthUI;
+	private UISelectOne  yearUI;
 	
 	// date
 	private String begDate;
 	private String endDate;
+	private String date;
+	private String deltaDate;
 	
 	private String begDateSauv;
@@ -73,6 +96,4 @@
 	private UIInput uiEndDateSauv;
 	
-	private boolean prod_change;
-
 	private Produit produitbean;
 	private UIOutput produit_temp;
@@ -83,15 +104,13 @@
 	 */
 	public CritereBean() throws DeconnectionException {
-		
 		smp = new ServiceMetier();
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "creation");
 		majcatParam();
 		majParam();
 		majProduit();
+		majSector();
+		majRcp();
 		majDate();
 		majHeader();
 		majProduitTemp();
-		LoggerPerso.log(this.getClass(), LoggerPerso.DEBUG, "size liste parametre fin " + liste_parametre.size());
-		prod_change = false;
 		northbc = 90;
 		southbc = -90;
@@ -106,28 +125,22 @@
 	 */
 	public void catParametreChangement(ValueChangeEvent even) throws DeconnectionException {
-		
-
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "fonction ::  catParametreChangement");
-		
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "");
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "catParametre changement :: " + even.getNewValue() + " :: old :: " + catparametre);
 		catparametre = (Long) even.getNewValue();
-		majParam();		
+		majParam();
 		majProduit();
+		majSector();
+		majRcp();
 		majDate();
 		majHeader();
 		majProduitTemp();
-		prod_change=true;
 	}
 	
 	public void parametreChangement(ValueChangeEvent even) throws DeconnectionException {
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "parametreChangement");
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "parametre changement :: " + even.getNewValue() + " :: old :: " + parametre);
 		parametre = (Long) even.getNewValue();
 		majProduit();
+		majSector();
+		majRcp();
 		majDate();
 		majHeader();
 		majProduitTemp();
-		prod_change=true;
 	}
 
@@ -137,15 +150,4 @@
 	 */
 	public void produitChangement(ValueChangeEvent even) {
-		
-
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "fonction ::  produitChangement");
-		
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "produit changement avant :: " + produit + " event " + even.getNewValue() + " uiselect " + produitUI.getValue());
-		if (prod_change) {
-			LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "produit changement non rÃ©alisÃ© :: " + produit);
-			prod_change = false;
-			//return;
-		}
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "produit changement ok :: " + produit);
 		produit = (Long) even.getNewValue();
 		if (produit != null) {
@@ -155,4 +157,6 @@
 			produitbean = new Produit(-1, "none", null, null);
 		}
+		majSector();
+		majRcp();
 		majDate();	
 		majHeader();
@@ -160,19 +164,44 @@
 	}
 
-	
-	/**
-	 * met Ã  jour la liste des catï¿œgories de parametres (initialisation de la liste)
+	/**
+	 * ActivÃ© lors du changement du secteur
+	 * @param even la nouvelle valeur du secteur
+	 */
+	public void secteurChangement(ValueChangeEvent even) {
+		sector = (Long) even.getNewValue();
+		majRcp();
+		majDate();
+	}
+
+	/**
+	 * ActivÃ© lors du changement du RCP
+	 * @param even la nouvelle valeur du RCP
+	 */
+	public void rcpChangement(ValueChangeEvent even) {
+		rcp = (Long) even.getNewValue();
+		majSector();
+		majDate();
+	}
+	
+	private boolean identInList(Long identifiant,List<SelectItem> list) {
+		if (identifiant == null) {
+			return false;
+		}
+		Long idCurrent;
+		for (int num = 0; num < list.size(); num++) {
+			idCurrent = (Long)list.get(num).getValue();
+			if (idCurrent.longValue() == identifiant.longValue())
+				return true;
+		}
+		return false;
+	}
+	
+	/**
+	 * met Ã  jour la liste des catÃ©gories de parametres (initialisation de la liste)
 	 *
 	 */
 	public void majcatParam() {
-
 		controleSession();
-		
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "fonction ::  majcatParam");
-		
-		
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "-8-*catparametre maj :: ");
 		liste_catparametre = smp.getListCatParametre();
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "------*SIZE catparametre maj :: "+liste_catparametre.size());
 		if (liste_catparametre.size() > 0) {
 			catparametre= (Long) liste_catparametre.get(0).getValue();
@@ -188,9 +217,5 @@
 	 */
 	public void majParam() {
-		
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "fonction :: majParam");
-		
 		controleSession();
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "parametre maj Catparam :: " + catparametre);
 		if (catparametre == null) {
 			liste_parametre = null;
@@ -198,14 +223,12 @@
 			return;
 		}
-		
-		
+
 		liste_parametre = smp.getListParamByCatParam(catparametre.intValue());
-		LoggerPerso.log(this.getClass(), LoggerPerso.DEBUG, "liste parametre valeur 0>>>>>>" + liste_parametre.get(0).getValue());
 		if (liste_parametre.size() > 0) {
-			LoggerPerso.log(this.getClass(), LoggerPerso.DEBUG, "liste parametre > 0");
-			parametre= (Long) liste_parametre.get(0).getValue();
+			if (!identInList(parametre, liste_parametre)) {
+				parametre= (Long) liste_parametre.get(0).getValue();
+			}
 			if (parametreUI != null)
-				parametreUI.setValue(new Long(parametre));
-			
+				parametreUI.setValue(parametre);
 		}
 		else
@@ -214,4 +237,51 @@
 	}
 	
+	/**
+	 * met Ã  jour la liste des secteurs (initialisation de la liste)
+	 *
+	 */
+	public void majSector() {
+		controleSession();
+		if (catparametre == null) {
+			liste_sector = null;
+			sector = null;
+			return;
+		}
+		liste_sector = smp.getListSectorByParam(parametre.intValue(),produit.intValue(),(rcp==null?0:rcp.intValue()));
+		if (liste_sector.size() > 0) {
+			if (!identInList(sector, liste_sector)) {
+				sector= (Long) liste_sector.get(0).getValue();
+			}
+			if (sectorUI != null)
+				sectorUI.setValue(sector);
+		}
+		else {
+			sector = new Long(0);
+		}
+	}
+	
+	/**
+	 * met Ã  jour la liste des rcp
+	 *
+	 */
+	public void majRcp() {
+		controleSession();
+		if (catparametre == null) {
+			liste_rcp = null;
+			rcp = null;
+			return;
+		}
+		liste_rcp = smp.getListRcpByParam(parametre.intValue(),produit.intValue(),(sector==null?0:sector.intValue()));
+		if (liste_rcp.size() > 0) {
+			if (!identInList(rcp, liste_rcp)) {
+				rcp= (Long) liste_rcp.get(0).getValue();
+			}
+			if (rcpUI != null)
+				rcpUI.setValue(rcp);			
+		}
+		else {
+			rcp = new Long(0);
+		}
+	}
 	
 	/**
@@ -220,9 +290,5 @@
 	 */
 	public void majProduit() throws DeconnectionException {
-		
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "fonction ::  majProduit");
-		
 		controleSession();
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "produit maj param :: " + parametre);
 		if (parametre == null) {
 			liste_produit = null;
@@ -231,8 +297,10 @@
 		}
 		liste_produit = smp.getListProduit(parametre.intValue());
-		if (liste_produit.size() > 0) { 
-			produit = (Long) liste_produit.get(0).getValue();
+		if (liste_produit.size() > 0) {
+			if (!identInList(produit, liste_produit)) {
+				produit = (Long) liste_produit.get(0).getValue();
+			}
 			if (produitUI != null)
-				produitUI.setValue(new Long(produit));
+				produitUI.setValue(produit);
 			produitbean = smp.getProduitById(produit.intValue());
 		}
@@ -245,6 +313,5 @@
 	 *
 	 */
-	public void majGrille() {
-		LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "produit maj grille :: " + grille);
+	public void majGrille(String dateGrille) {
 		if (produit == null) {
 			liste_grille = null;
@@ -252,12 +319,132 @@
 			return;
 		}
-		
-		liste_grille = smp.getListGrille(produit.intValue(),parametre.intValue(), begDate, endDate);
-		if (liste_grille.size() > 0)
-			grille = (Long) liste_grille.get(0).getValue();
-		else
+		liste_grille = smp.getListGrille(produit.longValue(),parametre.longValue(),(sector==null?0:sector.longValue()),(rcp==null?0:rcp.longValue()), begDate, endDate, deltaDate, produitbean, alt);
+		if (liste_grille.size() > 0) {
+			if (dateGrille == null) {
+				grille = (Long) liste_grille.get(0).getValue();
+				if (grilleUI != null)
+					grilleUI.setValue(grille);
+				date = liste_grille.get(0).getLabel();
+				if (date.length() == 7) {
+					date += "-01";
+				} else if (date.length() == 4) {
+					date += "-01-01";
+				}
+			} else {
+				String dateLabel;
+				for (int num = 0; num < liste_grille.size(); num++) {
+					dateLabel = liste_grille.get(num).getLabel();
+					if (dateLabel.length() == 7) {
+						dateLabel += "-01";
+					} else if (dateLabel.length() == 4) {
+						dateLabel += "-01-01";
+					}
+					if (dateLabel.equals(dateGrille)) {
+						grille = (Long)liste_grille.get(num).getValue();
+						if (grilleUI != null)
+							grilleUI.setValue(grille);
+						date = dateLabel; 
+						break;
+					}
+				}
+			}
+		} else {
 			grille = null;
-	}
-	
+		}
+//System.out.println("majGrille, nouvelle date="+date+", alt="+alt+", grille="+grille+", day="+day+", month="+month+", year="+year);
+	}
+
+	/**
+	 * Met Ã  jour la liste des altitudes dans le cas oÃ¹ on a un secteur "Aviation"
+	 *
+	 */
+	public void majAlt(String secteur) {
+		if (produit == null || !secteur.equals("Aviation")) {
+			liste_alt = null;
+			alt = null;
+			return;
+		}
+		liste_alt = smp.getListAlt(sector.longValue(),begDate);
+		if (liste_alt.size() > 0) {
+			alt = (String) liste_alt.get(0).getValue();
+			if (altUI != null)
+				altUI.setValue(alt);
+		} else {
+			alt = null;
+		}
+//System.out.println("majAlt, date="+date+", nouveau alt="+alt+", grille="+grille+", day="+day+", month="+month+", year="+year);
+	}
+	
+	/**
+	 * Met Ã  jour la liste des jours/mois/annÃ©es pour la pÃ©riode sÃ©lectionnÃ©e
+	 *
+	 */
+	public void majDayMonthYear(String traducteur) {
+		if (produit == null) {
+			liste_day = null;
+			liste_month = null;
+			liste_year = null;
+			day = null;
+			month = null;
+			year = null;
+			return;
+		}
+		
+		liste_day = new ArrayList<SelectItem>();
+		liste_month = new ArrayList<SelectItem>();
+		liste_year = new ArrayList<SelectItem>();
+		if (traducteur.equals("traducteur_temporel")) {
+			String dateGrille, jourGrille, moisGrille, anneeGrille, moisPrec = "", anneePrec = "";
+			// On parcourt la liste des dates des grilles
+			for (int num = 0; num < liste_grille.size(); num++) {
+				dateGrille = liste_grille.get(num).getLabel();
+				// On rÃ©cupÃšre le mois et l'annÃ©e (AAAA-MM-JJ) suivant la date (AAAA-MM ou AAAA-MM-JJ)
+				if (dateGrille.length() == 7) {
+					jourGrille = dateGrille+"-01";
+					moisGrille = dateGrille;
+				} else if (dateGrille.length() == 4) {
+					jourGrille = dateGrille+"-01-01";
+					moisGrille = dateGrille+"-01";
+				} else {
+					jourGrille = dateGrille;
+					moisGrille = dateGrille.substring(0,7);
+				}
+				anneeGrille = dateGrille.substring(0,4);
+				// On ajoute le jour/ mois / annÃ©e Ã  la liste si celui-ci n'est pas dÃ©jÃ  prÃ©sent
+				liste_day.add(new SelectItem(jourGrille,jourGrille));
+				if (!moisGrille.equals(moisPrec)) {
+					liste_month.add(new SelectItem(moisGrille, moisGrille));
+				}
+				if (!anneeGrille.equals(anneePrec)) {
+					liste_year.add(new SelectItem(new Integer(anneeGrille), anneeGrille));
+				}
+				moisPrec = moisGrille;
+				anneePrec = anneeGrille;
+			}
+
+			if (liste_day.size() > 0) {
+				day = date;
+				if (dayUI != null)
+					dayUI.setValue(day);
+			} else {
+				day = null;
+			}
+			if (liste_month.size() > 0) {
+				month = date.substring(0,7);
+				if (monthUI != null)
+					monthUI.setValue(month);
+			} else {
+				month = null;
+			}
+			if (liste_year.size() > 0) {
+				year = new Integer(date.substring(0,4));
+				if (yearUI != null)
+					yearUI.setValue(year);
+			} else {
+				year = null;
+			}
+		}
+//System.out.println("majDayMonthYear, date="+date+", alt="+alt+", grille="+grille+", day="+day+", month="+month+", year="+year);
+	}
 	
 	/**
@@ -276,5 +463,4 @@
 	private void majDate() {
 		if (produit == null) {
-			LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "maj date produit null");
 			begDate = null;
 			endDate = null;
@@ -288,25 +474,27 @@
 			if (uiEndDate != null){
 				uiEndDate.setValue(endDate);
-				}
+			}
 			if (uiEndDateSauv != null){
 				uiEndDateSauv.setValue(endDate);
 				setEndDateSauv(endDate);
-				}
-			return;
-		}
-
-		if (produitbean != null) {
-			LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "majDATE::nom::"+ produitbean.getNom() + "::date::" + produitbean.getBeginDate());
-			LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "majDATE::nom::"+ produitbean.getNom() + "::date::" + produitbean.getEndDate());
-			begDate = produitbean.getBeginDate().toString();
-			endDate = produitbean.getEndDate().toString();
-
+			}
+			return;
+		}
+
+		ArrayList<String> dates = smp.getDates(produit.longValue(),parametre.longValue(),(sector==null?0:sector.longValue()),(rcp==null?0:rcp.longValue()),produitbean.getNom());
+//		if (produitbean != null) {
+		if (dates.size() == 3) {
+//			begDate = produitbean.getBeginDate().toString();
+//			endDate = produitbean.getEndDate().toString();
+			begDate = dates.get(0);
+			endDate = dates.get(1);
+			deltaDate = dates.get(2);
 			begDateSauv = begDate;
 			endDateSauv = endDate;
-						
 		}
 		else {
 			begDate = null;
 			endDate = null;
+			deltaDate = null;
 			begDateSauv = null;
 			endDateSauv = null;
@@ -315,6 +503,4 @@
 		if (uiBegDate != null){
 			uiBegDate.setValue(begDate);
-			LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "majDATE::nom::"+ produitbean.getNom() + "::begDate::" +begDate);
-			
 		}
 		if (uiBegDateSauv != null){
@@ -326,6 +512,4 @@
 		if (uiEndDateSauv != null){
 			uiEndDateSauv.setValue(endDateSauv);
-			LoggerPerso.log(CritereBean.class, LoggerPerso.DEBUG, "majDATE::nom::"+ produitbean.getNom() + "::endDateSauv::" +endDateSauv);
-			
 		}
 	}
@@ -348,5 +532,4 @@
 	}
 	
-	
 	/*
 	 * GETTER & SETTER + VALIDATOR
@@ -356,15 +539,12 @@
 	}
 
-
 	public void setGrille(Long grille) {
 		this.grille = grille;
 	}
 
-
 	public List<SelectItem> getListe_grille() {
 		return liste_grille;
 	}
 
-
 	public void setListe_grille(List<SelectItem> liste_grille) {
 		this.liste_grille = liste_grille;
@@ -375,10 +555,8 @@
 	}
 
-
 	public void setProduit(Long produit) {
 		this.produit = produit;
 	}
 
-
 	public List<SelectItem> getListe_produit() {
 		return liste_produit;
@@ -405,6 +583,4 @@
 	}
 	
-	
-	/////////////
 	public UIInput getUiBegDateSauv() {
 		return uiBegDateSauv;
@@ -422,7 +598,4 @@
 		this.uiEndDateSauv = uiEndDateSauv;
 	}
-	////////////
-	
-	
 
 	public int getOid() {
@@ -438,10 +611,7 @@
 	}
 
-
 	public void setListe_catparametre(List<SelectItem> liste_catParametre) {
 		this.liste_catparametre = liste_catParametre;
 	}
-	
-
 
 	public Long getCatParametre() throws DeconnectionException {
@@ -450,5 +620,4 @@
 	}
 
-
 	public void setCatParametre(Long catParametre) {
 		this.catparametre = catParametre;
@@ -459,11 +628,8 @@
 	}
 
-
 	public void setListe_parametre(List<SelectItem> liste_parametre) {
 		this.liste_parametre = liste_parametre;
 	}
 	
-
-
 	public Long getParametre() throws DeconnectionException {
 		controleSession();
@@ -471,9 +637,40 @@
 	}
 
-
 	public void setParametre(Long parametre) {
 		this.parametre = parametre;
 	}
 
+	public List<SelectItem> getListe_sector() {
+		return liste_sector;
+	}
+
+	public List<SelectItem> getListe_rcp() {
+		return liste_rcp;
+	}
+	
+	public void setListe_sector(List<SelectItem> liste_sector) {
+		this.liste_sector = liste_sector;
+	}
+	
+	public void setListe_rcp(List<SelectItem> liste_rcp) {
+		this.liste_rcp= liste_rcp;
+	}
+	
+	public Long getSector() throws DeconnectionException {
+		return sector;
+	}
+
+	public Long getRcp() throws DeconnectionException {
+		return rcp;
+	}
+	
+	public void setSector(Long sector) {
+		this.sector = sector;
+	}
+
+	public void setRcp(Long rcp) {
+		this.rcp = rcp;
+	}
+	
 	public String getBegDate() {
 		return begDate;
@@ -539,52 +736,35 @@
 	}
 
-
-
 	public UIInput getEastbcInput() {
 		return eastbcInput;
 	}
 
-
-
 	public void setEastbcInput(UIInput eastbcInput) {
 		this.eastbcInput = eastbcInput;
 	}
 
-
-
 	public UIInput getNorthbcInput() {
 		return northbcInput;
 	}
 
-
-
 	public void setNorthbcInput(UIInput northbcInput) {
 		this.northbcInput = northbcInput;
 	}
 
-
-
 	public UIInput getSouthbcInput() {
 		return southbcInput;
 	}
 
-
-
 	public void setSouthbcInput(UIInput southbcInput) {
 		this.southbcInput = southbcInput;
 	}
 
-
-
 	public UIInput getWestbcInput() {
 		return westbcInput;
 	}
 
-
-
 	public void setWestbcInput(UIInput westbcInput) {
 		this.westbcInput = westbcInput;
 	}
-
 	
 	public void validateDate(FacesContext contexte, UIComponent composant, Object objet) throws ValidatorException {
@@ -612,15 +792,16 @@
 		if (uiBegDate.getValue().toString().compareTo(uiEndDate.getValue().toString()) > 0) {
 			estValide = false;
-			errMsg = new FacesMessage("begin date must be smaller than end date");
-		}
-		if ((uiBegDate.getValue().toString().compareTo(uiEndDateSauv.getValue().toString()) > 0) && estValide) {
+			errMsg = new FacesMessage("Begin date must be lower or equal than End date");
+		}
+		else if (uiBegDateSauv.getValue().toString().compareTo(uiBegDate.getValue().toString()) > 0) {
 			estValide = false;
-			errMsg = new FacesMessage(uiEndDateSauv.getValue().toString()+" - "+ uiBegDate.getValue().toString());
-			//errMsg = new FacesMessage("no data in this Date selection");
-		}
-		
+			errMsg = new FacesMessage("Begin date must be greater or equal than "+uiBegDateSauv.getValue().toString());
+		}
+		else if (uiEndDate.getValue().toString().compareTo(uiEndDateSauv.getValue().toString()) > 0) {
+			estValide = false;
+			errMsg = new FacesMessage("End date must be lower or equal than "+uiEndDateSauv.getValue().toString());
+		}
 		if (!estValide)
 			throw new ValidatorException(errMsg);
-		
 	}
 	
@@ -634,5 +815,5 @@
 	
 	/**
-	 * Valide la date
+	 * Valide la zone de sÃ©lection
 	 * @param contexte
 	 * @param composant
@@ -675,6 +856,4 @@
 	}
 
-
-
 	public ServiceMetier getSmp() {
 		return smp;
@@ -687,5 +866,4 @@
 	public void setProduitUI(UISelectOne produitUI) {
 		this.produitUI = produitUI;
-		////system.out.println("\n\n\n" + produitUI.getValue());
 	}
 
@@ -697,8 +875,22 @@
 	public void setParametreUI(UISelectOne parametreUI) {
 		this.parametreUI = parametreUI;
-		////system.out.println("\n\n\n" + produitUI.getValue());
-	}
-	
-	
+	}
+	
+	public UISelectOne getSectorUI() {
+		return sectorUI;
+	}
+
+	public UISelectOne getRcpUI() {
+		return rcpUI;
+	}
+	
+	public void setSectorUI(UISelectOne sectorUI) {
+		this.sectorUI = sectorUI;
+	}
+	
+	public void setRcpUI(UISelectOne rcpUI) {
+		this.rcpUI = rcpUI;
+	}
+
 /*	public String getProduit_header() {
 		return produit_header;
@@ -732,3 +924,123 @@
 		this.produit_temp = produit_temp;
 	}
+
+	public String getDate() {
+		return date;
+	}
+
+	public void setDate(String date) {
+		this.date = date;
+	}
+
+	public List<SelectItem> getListe_month() {
+		return liste_month;
+	}
+
+	public void setListe_month(List<SelectItem> listeMonth) {
+		liste_month = listeMonth;
+	}
+
+	public String getMonth() {
+		return month;
+	}
+
+	public void setMonth(String month) {
+		this.month = month;
+	}
+
+	public List<SelectItem> getListe_year() {
+		return liste_year;
+	}
+
+	public void setListe_year(List<SelectItem> listeYear) {
+		liste_year = listeYear;
+	}
+
+	public Integer getYear() {
+		return year;
+	}
+
+	public void setYear(Integer year) {
+		this.year = year;
+	}
+
+	public List<SelectItem> getListe_day() {
+		return liste_day;
+	}
+
+	public void setListe_day(List<SelectItem> listeDay) {
+		liste_day = listeDay;
+	}
+
+	public String getDay() {
+		return day;
+	}
+
+	public void setDay(String day) {
+		this.day = day;
+	}
+
+	public UISelectOne getDayUI() {
+		return dayUI;
+	}
+
+	public void setDayUI(UISelectOne dayUI) {
+		this.dayUI = dayUI;
+	}
+
+	public UISelectOne getMonthUI() {
+		return monthUI;
+	}
+
+	public void setMonthUI(UISelectOne monthUI) {
+		this.monthUI = monthUI;
+	}
+
+	public UISelectOne getYearUI() {
+		return yearUI;
+	}
+
+	public void setYearUI(UISelectOne yearUI) {
+		this.yearUI = yearUI;
+	}
+
+	public UISelectOne getGrilleUI() {
+		return grilleUI;
+	}
+
+	public void setGrilleUI(UISelectOne grilleUI) {
+		this.grilleUI = grilleUI;
+	}
+
+	public List<SelectItem> getListe_alt() {
+		return liste_alt;
+	}
+
+	public void setListe_alt(List<SelectItem> listeAlt) {
+		liste_alt = listeAlt;
+	}
+
+	public String getAlt() {
+		return alt;
+	}
+
+	public void setAlt(String alt) {
+		this.alt = alt;
+	}
+
+	public UISelectOne getAltUI() {
+		return altUI;
+	}
+
+	public void setAltUI(UISelectOne altUI) {
+		this.altUI = altUI;
+	}
+
+	public String getDeltaDate() {
+		return deltaDate;
+	}
+
+	public void setDeltaDate(String deltaDate) {
+		this.deltaDate = deltaDate;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/DeconnectionException.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/DeconnectionException.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/DeconnectionException.java	(revision 70)
@@ -3,3 +3,8 @@
 public class DeconnectionException extends RuntimeException {
 
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/ExtractBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/ExtractBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/ExtractBean.java	(revision 70)
@@ -3,6 +3,10 @@
 import java.io.IOException;
 
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
 import javax.faces.context.FacesContext;
 import javax.faces.event.ActionEvent;
+import javax.faces.validator.ValidatorException;
 import javax.servlet.http.HttpSession;
 
@@ -15,4 +19,6 @@
 import org.medias.eccad.modele.Parametre;
 import org.medias.eccad.modele.Produit;
+import org.medias.eccad.modele.Rcp;
+import org.medias.eccad.modele.Secteur;
 
 
@@ -25,16 +31,20 @@
 	public CritereExtractBean critere;
 	public int nbrGrille;
+	public int nbrAlt;
 	public Produit produit;
 	public Parametre param;
+	public Secteur secteur;
+	public Rcp rcp;
 	
 	public ExtractBean() throws DeconnectionException {
 		controleSession();
-		
+
 		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
 		SessionBean sessionbean = (SessionBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("sessionBean");
-		
-		
+		critereBean.majGrille(null);
 		produit = critereBean.getSmp().getProduitById(critereBean.getProduit().intValue());
 		param = critereBean.getSmp().getParametreById(critereBean.getParametre().intValue());
+		secteur = critereBean.getSmp().getSecteurById(critereBean.getSector().intValue());
+		rcp = critereBean.getSmp().getRcpById(critereBean.getRcp().intValue());
 		
 		critere = new CritereExtractBean();
@@ -47,4 +57,6 @@
 		critere.setParametre(critereBean.getParametre().toString());
 		critere.setProduit(critereBean.getProduit().toString());
+		critere.setSecteur(critereBean.getSector().toString());
+		critere.setRcp(critereBean.getRcp().toString());
 		critere.setDataFileFormat("1");
 		critere.setDataFileCompress("0");
@@ -54,5 +66,10 @@
 		
 		critere.setMailUser(sessionbean.getEmail());
-		nbrGrille = critereBean.getSmp().getListGrille(critereBean.getProduit(),critereBean.getParametre(), critere.getDateDebut(), critere.getDateFin()).size();
+		nbrGrille = (critereBean.getListe_grille()==null?0:critereBean.getListe_grille().size());
+		nbrAlt = (critereBean.getListe_alt()==null?0:critereBean.getListe_alt().size());
+			//critereBean.getSmp().getListGrille(critereBean.getProduit(),critereBean.getParametre(), 
+			//	(critereBean.getSector()==null?0:critereBean.getSector().longValue()), 
+			//	(critereBean.getRcp()==null?0:critereBean.getRcp().longValue()), 
+			//	critere.getDateDebut(), critere.getDateFin(),critereBean.getProduitbean(),critereBean.getAlt()).size();
 	}
 	
@@ -91,4 +108,30 @@
 	}
 	
+	/**
+	 * Valide la requÃªte d'extraction
+	 */
+	public void validateRequest(FacesContext contexte, UIComponent composant, Object objet) throws ValidatorException {
+		boolean estValide = true;
+		
+		if ((contexte == null) || (composant == null)) {
+			throw new NullPointerException("composant ou contexte null");
+		}
+		
+		if (!(composant instanceof UIInput))
+			return;
+		
+		FacesMessage errMsg = null;
+		
+		if ( produit.getNom().equals("Region_IPCC") || produit.getNom().equals("GPW3_Country") ||
+				(produit.getNom().equals("IPCC") && 
+				(secteur.getIdentifiant() == 0 || secteur.getNom().equals("Aviation"))) ) {
+			estValide = false;
+			errMsg = new FacesMessage("Sorry, this request is not available yet. Please try later.");
+		}
+
+		if (!estValide)
+			throw new ValidatorException(errMsg);
+	}
+	
 	public CritereExtractBean getCritere() {
 		return critere;
@@ -122,3 +165,27 @@
 		this.produit = produit;
 	}
+
+	public Secteur getSecteur() {
+		return secteur;
+	}
+
+	public void setSecteur(Secteur secteur) {
+		this.secteur = secteur;
+	}
+
+	public Rcp getRcp() {
+		return rcp;
+	}
+
+	public void setRcp(Rcp rcp) {
+		this.rcp = rcp;
+	}
+
+	public int getNbrAlt() {
+		return nbrAlt;
+	}
+
+	public void setNbrAlt(int nbrAlt) {
+		this.nbrAlt = nbrAlt;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/GrapheBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/GrapheBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/GrapheBean.java	(revision 70)
@@ -1,16 +1,108 @@
 package org.medias.eccad.presentation.bean;
 
+import java.util.Map;
+
 import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
 import javax.servlet.http.HttpSession;
 
-import org.medias.eccad.metier.statistique.ServiceGraphe;
+import org.medias.eccad.metier.statistique.ServiceStatistique;
+import org.medias.eccad.modele.Parametre;
+import org.medias.eccad.modele.Produit;
+import org.medias.eccad.modele.ResultatStat;
+import org.medias.eccad.persistance.exception.PersistanceException;
+import org.medias.eccad.presentation.traducteur.TraducteurCarte;
 
 public class GrapheBean extends AbstractVueBean{
+	private ResultatStat result;
+	private String typeResult;
+	private String lat;
+	private String lon;
+	private Long id_param;
+	private Long id_produit;
+	private Long id_secteur;
+	private Long id_rcp;
+	private String alt;
+	private String type;
+	private String urlGraphe;
+	private String infoSup;
+	private String unite;
+	private String param;
+	private String produit;
+	private String secteur;
+	private String rcp;
 	
-	public GrapheBean() {
+	public GrapheBean() throws PersistanceException {
 		controleSession();
 		//CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
-		ServiceGraphe service = new ServiceGraphe();
-		service.genereGraphe(getIdUnique(), null);
+//		ServiceGraphe service = new ServiceGraphe();
+//		service.genereGraphe(getIdUnique(), null,"","","");
+
+		initializeLatLon();
+		
+		urlGraphe = "../images/nographe.png";
+		drawGraph(null);
+	}
+	
+	public void initializeLatLon(){
+		CarteBean cartebean = (CarteBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("carteBean");
+		this.setLat(cartebean.getCenterLat());
+		this.setLon(cartebean.getCenterLon());
+	}
+	
+	public void calculateByPeriod() throws PersistanceException {
+		controleSession();
+		typeResult = "Statistics";
+//		LoggerPerso.log(GrapheBean.class, LoggerPerso.DEBUG, "calculateByPeriod");
+		getStatistique(genereCritere());
+	}
+	
+	public void drawGraph(ActionEvent event) throws PersistanceException {
+		controleSession();
+		calculateByPeriod();
+		getGraphe(genereCritere());
+	}
+	
+	private Map<String, String> genereCritere() throws PersistanceException {
+		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
+		CarteBean carteBean = (CarteBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("carteBean");
+//		LoggerPerso.log(StatBean.class, LoggerPerso.DEBUG, "cartebean = "+cartebean.getUrl());
+		
+		Map<String, String> critere = new TraducteurCarte().tradCritere2Stat(critereBean, carteBean);
+		id_param = critereBean.getParametre();
+		id_produit = critereBean.getProduit();
+		id_secteur = critereBean.getSector();
+		id_rcp = critereBean.getRcp();
+		alt = (critereBean.getAlt()==null?"0":critereBean.getAlt());
+		Parametre parametre = critereBean.getSmp().getParametreById(id_param.intValue());		
+		unite = parametre.getUnite();
+		if (unite.equals("number of fires") || unite.equals("no unit") || unite.equals("code value")) {
+			type = "positive integer";
+		} else {
+			type = "double";
+		}
+		param = parametre.getNom();
+		Produit prod = critereBean.getSmp().getProduitById(id_produit.intValue());
+		produit = prod.getNom();
+		secteur = carteBean.getSecteur();
+		rcp = carteBean.getRcp();
+		critere.put("lat-max", lat);
+		critere.put("lat-min", lat);
+		critere.put("lon-max", lon);
+		critere.put("lon-min", lon);
+		infoSup = " at " + critere.get("lat-max") + "/" + critere.get("lon-max") 
+			+" from " + critere.get("beg-date") + " to " + critere.get("end-date");
+		return critere;
+	}
+	
+	private void getStatistique(Map<String, String> critere) {
+		ServiceStatistique serviceStat = new ServiceStatistique();
+		result = serviceStat.getStatistique(critere, id_param, id_produit, id_secteur, id_rcp, alt, type, "getStatistique");
+	}
+	
+	private void getGraphe(Map<String, String> critere) {
+		ServiceStatistique serviceStat = new ServiceStatistique();
+		urlGraphe = ".." + serviceStat.getGraphe(getIdUnique(), critere, id_param, id_produit, id_secteur, id_rcp, alt, param, produit, unite, secteur, rcp, "getGraphique");
+//		LoggerPerso.log(StatBean.class, LoggerPerso.INFO, "url graphe " + urlGraphe);
 	}
 	
@@ -21,10 +113,55 @@
 		
 		String imageID;
-		
-		
 		imageID = session.getId() + session.getLastAccessedTime() ;
 		
 		return imageID;
 	}
+	
+	public ResultatStat getResult() {
+		return result;
+	}
 
+	public void setResult(ResultatStat result) {
+		this.result = result;
+	}	
+
+	public String getTypeResult() {
+		return typeResult;
+	}
+
+	public void setTypeResult(String typeResult) {
+		this.typeResult = typeResult;
+	}
+
+	public String getLat() {
+		return lat;
+	}
+
+	public void setLat(String lat) {
+		this.lat = lat;
+	}
+
+	public String getLon() {
+		return lon;
+	}
+
+	public void setLon(String lon) {
+		this.lon = lon;
+	}
+	
+	public String getUrlGraphe() {
+		return urlGraphe;
+	}
+
+	public void setUrlGraphe(String urlGraphe) {
+		this.urlGraphe = urlGraphe;
+	}
+
+	public String getInfoSup() {
+		return infoSup;
+	}
+
+	public void setInfoSup(String infoSup) {
+		this.infoSup = infoSup;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/MetadataBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/MetadataBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/MetadataBean.java	(revision 70)
@@ -2,10 +2,5 @@
 
 import javax.faces.context.FacesContext;
-//import javax.servlet.http.HttpSession;
-
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.metier.ServiceMetadata;
-//import org.medias.eccad.presentation.bean.emission.EmissionBean;
 
 public class MetadataBean {
@@ -13,7 +8,6 @@
 	
 	public MetadataBean() {
-		LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "initialisation");
+//		LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "initialisation");
 		ServiceMetadata service_meta = new ServiceMetadata();
-		
 		/*CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
 		EmissionBean emission = (EmissionBean) ((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("emissionBean");
@@ -28,15 +22,14 @@
 			id_produit = emission.getFacteur().getProduit().getId_item().intValue();
 		}*/
-		
-		LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "initialisation" + FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("produit"));
+//		LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "initialisation" + FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("produit"));
 		String id_produit = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("produit");
 		////system.out.println(id_produit);
 		
 		if (id_produit != null) {
-			LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "en attent recuperation");
+//			LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "en attente de recuperation");
 			xmlContent = service_meta.getXmlMetadata(Long.parseLong(id_produit));
-			LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "en attente transforamtion");
+//			LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "en attente de transformation");
 			xmlContent = service_meta.getXMLTransformResult(xmlContent, "metadata.xslt");
-			LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "transformation ok");
+//			LoggerPerso.log(MetadataBean.class, LoggerPerso.DEBUG, "transformation ok");
 		}
 		else
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/StatBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/StatBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/StatBean.java	(revision 70)
@@ -8,10 +8,9 @@
 import javax.servlet.http.HttpSession;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.helpers.SpringBeanFactory;
 import org.medias.eccad.metier.statistique.ServiceStatistique;
+import org.medias.eccad.modele.Parametre;
+import org.medias.eccad.modele.Produit;
 import org.medias.eccad.modele.ResultatStat;
-//import org.medias.eccad.modele.Zone;
 import org.medias.eccad.persistance.dao.GrilleDAO;
 import org.medias.eccad.persistance.exception.PersistanceException;
@@ -22,80 +21,106 @@
 	private String typeResult;
 	private String date;
-	private String lat;
-	private String lon;
+//	private String lat;
+//	private String lon;
 	private Long id_param;
 	private Long id_produit;
-	private String urlGraphe;
+	private Long id_secteur;
+	private Long id_rcp;
+	private String alt;
+	private String type;
+//	private String urlGraphe;
 	private String infoSup;
+	private String unite;
+	private String param;
+	private String produit;
 	
 	public StatBean() throws PersistanceException {
 		controleSession();
 		calculateByArea(null);
-		initializeLatLon();
-		
+//		initializeLatLon();
 		
 		/*lat = "0.0";
 		lon= "0.0";*/
-		typeResult = "Result by area";
-		urlGraphe = "../images/nographe.png";
-	}
-	
-	public void initializeLatLon(){
-		CarteBean cartebean = (CarteBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("carteBean");
+//		typeResult = "Result by area";
+//		urlGraphe = "../images/nographe.png";
+//		drawGraph(null);
+	}
+	
+//	public void initializeLatLon(){
+//		CarteBean cartebean = (CarteBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("carteBean");
 		
-		double lon_zoneAffichee = (cartebean.getCenterLon());
-		double lat_zoneAffichee = (cartebean.getCenterLat());
-		
-		this.setLat(Double.toString(lat_zoneAffichee));
-		this.setLon(Double.toString(lon_zoneAffichee));
-	
-	}
-
-	public void calculateByPeriod(ActionEvent event) throws PersistanceException {
-		controleSession();
-		typeResult = "Result by period";
-		LoggerPerso.log(StatBean.class, LoggerPerso.DEBUG, "calculateByPeriod");
-		getStatistique(genereCritere("period"));
-	}
+//		this.setLat(cartebean.getCenterLat());
+//		this.setLon(cartebean.getCenterLon());
+//	}
+
+//	public void calculateByPeriod(ActionEvent event) throws PersistanceException {
+//		controleSession();
+//		typeResult = "Result by period";
+//		LoggerPerso.log(StatBean.class, LoggerPerso.DEBUG, "calculateByPeriod");
+//		getStatistique(genereCritere("period"));
+//	}
 	
 	public void calculateByArea(ActionEvent event) throws PersistanceException {
 		controleSession();
 		typeResult = "Result by area";
-		LoggerPerso.log(StatBean.class, LoggerPerso.DEBUG, "calculateByArea");
-		getStatistique(genereCritere("area"));
-	}
-	
-	public void drawGraph(ActionEvent event) throws PersistanceException {
-		controleSession();
-		LoggerPerso.log(StatBean.class, LoggerPerso.DEBUG, "calculateByArea");
-		getGraphe(genereCritere("period"));
-	}
-	
-	private Map<String, String> genereCritere(String from) throws PersistanceException {
+//		LoggerPerso.log(StatBean.class, LoggerPerso.DEBUG, "calculateByArea");
+		getStatistique(genereCritere());//"area"));
+	}
+	
+//	public void drawGraph(ActionEvent event) throws PersistanceException {
+//		controleSession();
+//		LoggerPerso.log(StatBean.class, LoggerPerso.DEBUG, "calculateByArea");
+//		if (event == null) {
+//			getGraphe(genereCritere("period_area"));
+//		} else {
+//			getGraphe(genereCritere("period"));
+//		}
+//	}
+	
+	private Map<String, String> genereCritere(/*String from*/) throws PersistanceException {
 		CritereBean critereBean = (CritereBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("critereBean");
 		CarteBean cartebean = (CarteBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("carteBean");
+//		LoggerPerso.log(StatBean.class, LoggerPerso.DEBUG, "cartebean = "+cartebean.getUrl());
+		
 		Map<String, String> critere = new TraducteurCarte().tradCritere2Stat(critereBean, cartebean);
 		id_param = critereBean.getParametre();
 		id_produit = critereBean.getProduit();
-		
-		
-		if (from.equals("area")) {
+		id_secteur = critereBean.getSector();
+		id_rcp = critereBean.getRcp();
+		alt = (critereBean.getAlt()==null?"0":critereBean.getAlt());
+		Parametre parametre = critereBean.getSmp().getParametreById(id_param.intValue());		
+		unite = parametre.getUnite();
+		if (unite.equals("number of fires") || unite.equals("no unit") || unite.equals("code value")) {
+			type = "positive integer";
+		} else {
+			type = "double";
+		}
+		param = parametre.getNom();
+		Produit prod = critereBean.getSmp().getProduitById(id_produit.intValue());
+		produit = prod.getNom();
+//		if (from.equals("area")) {
 			GrilleDAO grilledao = (GrilleDAO) SpringBeanFactory.getXmlFactory().getBean("grilleDAO");
-			date = grilledao.getDateGrille(critereBean.getGrille());
+			date = grilledao.getDateGrille((critereBean.getGrille()==null?0:critereBean.getGrille().longValue()));
 			critere.put("beg-date", date);
 			critere.put("end-date", date);
-			infoSup =  " " + critere.get("lat-max") + "/" + critere.get("lat-min") + ", " +
+			infoSup =  critere.get("lat-max") + "/" + critere.get("lat-min") + ", " +
 						critere.get("lon-max") + "/" + 	critere.get("lon-min") + "" +
 						" on date " + critere.get("beg-date");
-	critere.get("end-date"); 
-		}
-		if (from.equals("period")) {
-			critere.put("lat-max", lat);
-			critere.put("lat-min", lat);
-			critere.put("lon-max", lon);
-			critere.put("lon-min", lon);
-			infoSup = " from " + critere.get("beg-date") + " to " + critere.get("end-date") + " on point " + critere.get("lat-max") + "/" + critere.put("lon-max", lon);
-		}
-		
+//		} else if (from.equals("period")) {
+//			critere.put("lat-max", lat);
+//			critere.put("lat-min", lat);
+//			critere.put("lon-max", lon);
+//			critere.put("lon-min", lon);
+//			infoSup = " from " + critere.get("beg-date") + " to " + critere.get("end-date")+
+//			" on point " + critere.get("lat-max") + "/" + critere.get("lon-max");
+//		} else {
+//			infoSup =  critere.get("lat-max") + "/" + critere.get("lat-min") + ", " +
+//			critere.get("lon-max") + "/" + 	critere.get("lon-min") + "" +
+//			" on date " + critere.get("beg-date");
+//			critere.put("lat-max", lat);
+//			critere.put("lat-min", lat);
+//			critere.put("lon-max", lon);
+//			critere.put("lon-min", lon);
+//		}
 		return critere;
 	}
@@ -104,12 +129,12 @@
 		ServiceStatistique serviceStat = new ServiceStatistique();
 		//serviceStat.getGraphe(getIdUnique(), critere, id_param, id_produit, "getStatistique");
-		result = serviceStat.getStatistique(critere, id_param, id_produit, "getStatistique");
-	}
-	
-	private void getGraphe(Map<String, String> critere) {
-		ServiceStatistique serviceStat = new ServiceStatistique();
-		urlGraphe = ".." + serviceStat.getGraphe(getIdUnique(), critere, id_param, id_produit, "getGraphique");
-		LoggerPerso.log(StatBean.class, LoggerPerso.INFO, "url graphe " + urlGraphe);
-	}
+		result = serviceStat.getStatistique(critere, id_param, id_produit, id_secteur, id_rcp, alt, type, "getStatistique");
+	}
+	
+//	private void getGraphe(Map<String, String> critere) {
+//		ServiceStatistique serviceStat = new ServiceStatistique();
+//		urlGraphe = ".." + serviceStat.getGraphe(getIdUnique(), critere, id_param, id_produit, id_secteur, id_rcp, alt, param, produit, unite, "getGraphique");
+//		LoggerPerso.log(StatBean.class, LoggerPerso.INFO, "url graphe " + urlGraphe);
+//	}
 	
 	public ResultatStat getResult() {
@@ -137,40 +162,27 @@
 	}
 
-	public String getLat() {
-		return lat;
-	}
-
-	public void setLat(String lat) {
-		this.lat = lat;
-	}
-
-	public String getLon() {
-		return lon;
-	}
-
-	public void setLon(String lon) {
-		this.lon = lon;
-	}
-	
-	private String getIdUnique() {
-		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
-		if (session==null)
-			return "";
-		
-		String imageID;
-		
-		
-		imageID = session.getId() + session.getLastAccessedTime() ;
-		
-		return imageID;
-	}
-
-	public String getUrlGraphe() {
-		return urlGraphe;
-	}
-
-	public void setUrlGraphe(String urlGraphe) {
-		this.urlGraphe = urlGraphe;
-	}
+//	public String getLat() {
+//		return lat;
+//	}
+
+//	public void setLat(String lat) {
+//		this.lat = lat;
+//	}
+
+//	public String getLon() {
+//		return lon;
+//	}
+
+//	public void setLon(String lon) {
+//		this.lon = lon;
+//	}
+
+//	public String getUrlGraphe() {
+//		return urlGraphe;
+//	}
+
+//	public void setUrlGraphe(String urlGraphe) {
+//		this.urlGraphe = urlGraphe;
+//	}
 
 	public String getInfoSup() {
@@ -181,4 +193,20 @@
 		this.infoSup = infoSup;
 	}
+
+	public String getParam() {
+		return param;
+	}
+
+	public void setParam(String param) {
+		this.param = param;
+	}
+
+	public String getProduit() {
+		return produit;
+	}
+
+	public void setProduit(String produit) {
+		this.produit = produit;
+	}
 	
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/BurntBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/BurntBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/BurntBean.java	(revision 70)
@@ -15,4 +15,6 @@
 	private String date_debut;
 	private String date_fin;
+	private String date_debutSauv;
+	private String date_finSauv;
 	private UIInput datedebUI;
 	private UIInput datefinUI;
@@ -29,27 +31,31 @@
 	public void init() {
 		List<Produit> liste = emission.getService().getProduitBurntArea();
-		
-		
-		
+
 		List<SelectItem> liste_finale = new LinkedList<SelectItem>();
 		for (Produit prod : liste) {
 			liste_finale.add(new SelectItem(prod.getIdentifiant(), prod.getNom()));
 		}
-		
 		if (liste.size() != 0) {
-			Produit product = new ServiceMetier().getProduitById((liste.get(0).getIdentifiant()));
+			Produit product = new ServiceMetier().getProduitById(new Long(liste.get(0).getIdentifiant()).intValue());
 			burnt.setId_item(product.getIdentifiant());
 			burnt.setHeader_item(product.getHeader());
 			burnt.setName_item(product.getNom());
+			frequence = product.getTemporalres();
 			date_debut = product.getBeginDate().toString();
 			date_fin = product.getEndDate().toString();
-			frequence = product.getTemporalres();
+			date_debutSauv = date_debut;
+			date_finSauv = date_fin;
+			if (datedebUI != null) {
+				datedebUI.setValue(date_debut);
+			}		
+			if (datefinUI != null) {
+				datefinUI.setValue(date_fin);
+			}
 		}
-		
 		burnt.setListe_item(liste_finale);
 	}
 	
 	public void majBurnt(ValueChangeEvent event) {
-		Produit prod = new ServiceMetier().getProduitById((Long)event.getNewValue());
+		Produit prod = new ServiceMetier().getProduitById(((Long)event.getNewValue()).intValue());
 		burnt.setId_item(prod.getIdentifiant());
 		burnt.setHeader_item(prod.getHeader());
@@ -57,9 +63,10 @@
 		date_debut = prod.getBeginDate().toString();
 		date_fin   = prod.getEndDate().toString();
+		date_debutSauv = date_debut;
+		date_finSauv = date_fin;
 		burnt.setName_item(prod.getNom());
 		if (datedebUI != null) {
 			datedebUI.setValue(date_debut);
-		}
-		
+		}		
 		if (datefinUI != null) {
 			datefinUI.setValue(date_fin);
@@ -114,4 +121,19 @@
 		this.frequence = frequence;
 	}
-	
+
+	public String getDate_debutSauv() {
+		return date_debutSauv;
+	}
+
+	public void setDate_debutSauv(String dateDebutSauv) {
+		date_debutSauv = dateDebutSauv;
+	}
+
+	public String getDate_finSauv() {
+		return date_finSauv;
+	}
+
+	public void setDate_finSauv(String dateFinSauv) {
+		date_finSauv = dateFinSauv;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/EmissionBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/EmissionBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/EmissionBean.java	(revision 70)
@@ -2,6 +2,10 @@
 
 
-//import org.medias.eccad.helpers.LoggerPerso;
-import org.medias.eccad.helpers.LoggerPerso;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+
 import org.medias.eccad.metier.emission.ServiceEmission;
 import org.medias.eccad.modele.RequeteFacteurEmission;
@@ -29,5 +33,10 @@
 		return "page_em_landcover";
 	}
-	
+
+	public String prevLandcover() {
+		controleSession();
+		return "page_emission";
+	}
+
 	public String nextBurntArea() {
 		controleSession();
@@ -40,5 +49,10 @@
 		return "page_em_burnt";
 	}
-	
+
+	public String prevBurntArea() {
+		controleSession();
+		return "page_em_landcover";
+	}
+
 	public String processData() {
 		controleSession();
@@ -100,3 +114,82 @@
 	}
 	
+	/**
+	 * Valide la zone de sÃ©lection
+	 * @param contexte
+	 * @param composant
+	 * @param objet
+	 * @throws ValidatorException
+	 */
+	public void validateLatLon(FacesContext contexte, UIComponent composant, Object objet) throws ValidatorException {
+		boolean estValide = true;
+		
+		if ((contexte == null) || (composant == null)) {
+			throw new NullPointerException("composant ou contexte null");
+		}
+		
+		if (!(composant instanceof UIInput))
+			return;
+		if (!(testExiste(facteur.getNorthbcInput()) || testExiste(facteur.getSouthbcInput()) || testExiste(facteur.getEastbcInput()) || testExiste(facteur.getWestbcInput()))) {
+			return;
+		}
+		
+		double north = Double.parseDouble(facteur.getNorthbcInput().getValue().toString());
+		double south = Double.parseDouble(facteur.getSouthbcInput().getValue().toString());
+		double east  = Double.parseDouble(facteur.getEastbcInput().getValue().toString());
+		double west  = Double.parseDouble(facteur.getWestbcInput().getValue().toString());
+		
+		FacesMessage errMsg = null;
+		
+		if (north<south) {
+			estValide = false;
+			errMsg = new FacesMessage("north value must be greater than south value");
+		}
+		
+		if (east<west) {
+			estValide = false;
+			errMsg = new FacesMessage("east value must be greater than west value");
+		}
+			
+		if (!estValide)
+			throw new ValidatorException(errMsg);
+	}
+	
+	public void validateDate(FacesContext contexte, UIComponent composant, Object objet) throws ValidatorException {
+		boolean estValide = true;
+		if ((contexte == null) || (composant == null)) {
+			throw new NullPointerException("composant ou contexte null");
+		}
+		if (!(composant instanceof UIInput))
+			return;
+		
+		if (burnt.getDatedebUI() == null || burnt.getDatefinUI() == null)
+			return;
+	
+		if (burnt.getDatedebUI().getValue() == null || burnt.getDatefinUI().getValue() == null)
+			return;
+		
+		FacesMessage errMsg = null;
+		if (burnt.getDatedebUI().getValue().toString().compareTo(burnt.getDatefinUI().getValue().toString()) > 0) {
+			estValide = false;
+			errMsg = new FacesMessage("Begin date must be lower or equal than End date");
+		}
+		else if (burnt.getDate_debutSauv().compareTo(burnt.getDatedebUI().getValue().toString()) > 0) {
+			estValide = false;
+			errMsg = new FacesMessage("Begin date must be greater or equal than "+burnt.getDate_debutSauv());
+		}
+		else if (burnt.getDatefinUI().getValue().toString().compareTo(burnt.getDate_finSauv()) > 0) {
+			estValide = false;
+			errMsg = new FacesMessage("End date must be lower or equal than "+burnt.getDate_finSauv());
+		}
+		if (!estValide)
+			throw new ValidatorException(errMsg);
+	}
+	
+	private boolean testExiste(UIInput compo) {
+		if (compo == null)
+			return false;
+		if (compo.getValue() == null)
+			return false;
+		return true;
+	}
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/FacteurEmissionBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/FacteurEmissionBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/FacteurEmissionBean.java	(revision 70)
@@ -4,9 +4,8 @@
 import java.util.List;
 
+import javax.faces.component.UIInput;
 import javax.faces.event.ValueChangeEvent;
 import javax.faces.model.SelectItem;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.metier.ServiceMetier;
 import org.medias.eccad.metier.traducteur.TraducteurVisuMultiplan;
@@ -22,4 +21,9 @@
 	private Zone zone;
 	private EmissionBean emissionbean;
+	// binding
+	private UIInput northbcInput;
+	private UIInput southbcInput;
+	private UIInput eastbcInput;
+	private UIInput westbcInput;
 	
 	public FacteurEmissionBean(EmissionBean emissionbean) {
@@ -34,5 +38,5 @@
 	
 	public void majProduit(ValueChangeEvent event) {
-		Produit prod = new ServiceMetier().getProduitById((Long) event.getNewValue());
+		Produit prod = new ServiceMetier().getProduitById(((Long) event.getNewValue()).intValue());
 		produit.setId_item(prod.getIdentifiant());
 		produit.setName_item(prod.getNom());
@@ -63,5 +67,5 @@
 		}
 		
-		List<SelectItem> liste_select = new TraducteurVisuMultiplan().getListGrille(liste_temp);
+		List<SelectItem> liste_select = new TraducteurVisuMultiplan().getListGrille(liste_temp, null, null);
 		gaz.setListe_item(liste_select);
 		
@@ -78,7 +82,5 @@
 		List<Produit> liste_temp = emissionbean.getService().getProduitFacteurEmission();
 		List<SelectItem> liste_select = new LinkedList<SelectItem>();
-		LoggerPerso.log(FacteurEmissionBean.class, LoggerPerso.DEBUG, "liste " + liste_temp);
-		
-		
+//		LoggerPerso.log(FacteurEmissionBean.class, LoggerPerso.DEBUG, "liste " + liste_temp);
 		
 		for (Produit prod : liste_temp) {
@@ -119,14 +121,42 @@
 	}
 
-
 	public Zone getZone() {
 		return zone;
 	}
 
-
 	public void setZone(Zone zone) {
 		this.zone = zone;
 	}
-	
-	
+
+	public UIInput getEastbcInput() {
+		return eastbcInput;
+	}
+
+	public void setEastbcInput(UIInput eastbcInput) {
+		this.eastbcInput = eastbcInput;
+	}
+
+	public UIInput getNorthbcInput() {
+		return northbcInput;
+	}
+
+	public void setNorthbcInput(UIInput northbcInput) {
+		this.northbcInput = northbcInput;
+	}
+
+	public UIInput getSouthbcInput() {
+		return southbcInput;
+	}
+
+	public void setSouthbcInput(UIInput southbcInput) {
+		this.southbcInput = southbcInput;
+	}
+
+	public UIInput getWestbcInput() {
+		return westbcInput;
+	}
+
+	public void setWestbcInput(UIInput westbcInput) {
+		this.westbcInput = westbcInput;
+	}	
 }
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/FacteurResultatBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/FacteurResultatBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/FacteurResultatBean.java	(revision 70)
@@ -20,5 +20,6 @@
 public class FacteurResultatBean extends AbstractVueBean {
 	private String url;
-	private Zone zone_affichee;
+	private Zone zone_demandee;
+	private Zone zone_visible;
 	private int clicX;
 	private int clicY;
@@ -33,4 +34,8 @@
 	private Long colormap_id;
 	private UISelectOne colormapUI;
+	
+	private List<SelectItem> liste_classdis;
+	private Long classdis_id;
+	private UISelectOne classdisUI;
 	
 	private List<SelectItem> liste_grille;
@@ -57,28 +62,35 @@
 	public void initialisation() {
 		// FIXME: virer les colormap exponentielles
-		zone_affichee = new Zone();
+		zone_demandee = new Zone();
 		Zone zone_init = emission.getFacteur().getZone();
-		zone_affichee.setNorthbc(zone_init.getNorthbc());
-		zone_affichee.setSouthbc(zone_init.getSouthbc());
-		zone_affichee.setEastbc(zone_init.getEastbc());
-		zone_affichee.setWestbc(zone_init.getWestbc());
+		zone_demandee.setNorthbc(zone_init.getNorthbc());
+		zone_demandee.setSouthbc(zone_init.getSouthbc());
+		zone_demandee.setEastbc(zone_init.getEastbc());
+		zone_demandee.setWestbc(zone_init.getWestbc());
 		
 		liste_grille = serviceMetier.getListGrille(emission.getBurnt().getBurnt().getId_item(),
 				                                   emission.getBurnt().getDate_debut(), 
-				                                   emission.getBurnt().getDate_fin());
+				                                   emission.getBurnt().getDate_fin(), null);
 		grille_id = (Long) liste_grille.get(0).getValue();
 		if (grilleUI != null)
 			grilleUI.setValue(grille_id);
 
-		liste_colormap = serviceMetier.getListColorDynamique(true);
+//		liste_colormap = serviceMetier.getListColorDynamique(true);
+		liste_colormap = serviceMetier.getListMappingColor();
 		colormap_id = (Long) liste_colormap.get(0).getValue();
 		if (colormapUI != null)
 			colormapUI.setValue(colormap_id);
 		
+		liste_classdis = serviceMetier.getListClassDynamique();
+		classdis_id = (Long) liste_classdis.get(0).getValue();
+		if (classdisUI != null)
+			classdisUI.setValue(classdis_id);
+		
 		requete.setDatedeb(liste_grille.get(0).getLabel());
 		requete.setDatefin(liste_grille.get(0).getLabel());
 		requete.setColormap(colormap_id);
-		
-		majURLCarte();
+		requete.setClassdis(classdis_id);
+		
+		majURLCarte(false,true);
 	}
 	
@@ -89,12 +101,13 @@
 	public void clicOnCarte(ActionEvent event) {
 		service.zoom(clicX, clicY);
-		zone_affichee = service.getzone();
-	
-		majURLCarte();
-	}
-	
-	private void majURLCarte() {
-		url = service.getCarte(requete, zone_affichee, getIdUnique());
-		url_legend = service.getLegend(colormap_id, 5040, url);
+		zone_visible = service.getzone();
+	
+		majURLCarte(true,false);
+	}
+	
+	private void majURLCarte(boolean zoom, boolean firstAff) {
+		url = service.getCarte(requete, zone_demandee, getIdUnique(), zoom, firstAff);
+		url_legend = service.getLegend(colormap_id, classdis_id, 5040, url);
+		zone_visible = service.getzone();
 		////system.out.println(url_legend);
 	}
@@ -113,5 +126,5 @@
 		}
 		
-		majURLCarte();
+		majURLCarte(false,false);
 	}
 	
@@ -122,5 +135,5 @@
 		requete.setColormap(colormap_id);
 		
-		majURLCarte();
+		majURLCarte(false,false);
 	}
 	
@@ -211,12 +224,4 @@
 	public void setWestbc(UIOutput westbc) {
 		this.westbc = westbc;
-	}
-	
-	public Zone getZone_affichee() {
-		return zone_affichee;
-	}
-	
-	public void setZone_affichee(Zone zone_affichee) {
-		this.zone_affichee = zone_affichee;
 	}
 	
@@ -261,5 +266,19 @@
 		this.liste_grille = liste_grille;
 	}
-	
-	
-	}
+
+	public Zone getZone_demandee() {
+		return zone_demandee;
+	}
+
+	public void setZone_demandee(Zone zoneDemandee) {
+		zone_demandee = zoneDemandee;
+	}
+
+	public Zone getZone_visible() {
+		return zone_visible;
+	}
+
+	public void setZone_visible(Zone zoneVisible) {
+		zone_visible = zoneVisible;
+	}
+}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/LandcoverBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/LandcoverBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/LandcoverBean.java	(revision 70)
@@ -7,5 +7,4 @@
 import javax.faces.model.SelectItem;
 
-import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.metier.ServiceMetier;
 import org.medias.eccad.metier.traducteur.TraducteurVisuMultiplan;
@@ -21,12 +20,11 @@
 	private List<String> selectedClass;
 	private String message;
-
 	
 	public LandcoverBean(EmissionBean emission) {
 		controleSession();
 		landproduit = new ProduitBean();
-		this.emissionbean    = emission;
+		this.emissionbean = emission;
 		message = new String();
-		LoggerPerso.log(LandcoverBean.class, LoggerPerso.DEBUG, "constructeur landcover");
+//		LoggerPerso.log(LandcoverBean.class, LoggerPerso.DEBUG, "constructeur landcover");
 	}
 
@@ -36,5 +34,5 @@
 		
 		
-		LoggerPerso.log(FacteurEmissionBean.class, LoggerPerso.DEBUG, "init class landcover " + liste_temp);	
+//		LoggerPerso.log(FacteurEmissionBean.class, LoggerPerso.DEBUG, "init class landcover " + liste_temp);	
 		
 		for (Produit prod : liste_temp) {
@@ -57,5 +55,5 @@
 	
 	public void majLandCover(ValueChangeEvent event) {
-		Produit prod = new ServiceMetier().getProduitById((Long) event.getNewValue());
+		Produit prod = new ServiceMetier().getProduitById(((Long) event.getNewValue()).intValue());
 		landproduit.setId_item(prod.getIdentifiant());
 		landproduit.setHeader_item(prod.getHeader());
@@ -66,5 +64,5 @@
 	private void initClass(Long id_produit) {
 		List<Grille> liste_temp = emissionbean.getService().getClassEmission(id_produit);
-		liste_classe = new TraducteurVisuMultiplan().getListGrille(liste_temp);
+		liste_classe = new TraducteurVisuMultiplan().getListGrille(liste_temp, null, null);
 		selectedClass = new LinkedList<String>();
 		liste_vegetation = new LinkedList<ClasseBean>();
@@ -84,5 +82,5 @@
 		}
 		
-		LoggerPerso.log(FacteurEmissionBean.class, LoggerPerso.DEBUG, "get class landcover >  " + listeId.size() + " :: " + listeId);
+//		LoggerPerso.log(FacteurEmissionBean.class, LoggerPerso.DEBUG, "get class landcover >  " + listeId.size() + " :: " + listeId);
 		
 		return listeId;
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/ProduitBean.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/ProduitBean.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/ProduitBean.java	(revision 70)
@@ -6,6 +6,4 @@
 import javax.faces.model.SelectItem;
 
-
-import org.medias.eccad.helpers.LoggerPerso;
 
 public class ProduitBean {
@@ -22,5 +20,5 @@
 	public ProduitBean() {
 		super();
-		LoggerPerso.log(ProduitBean.class, LoggerPerso.DEBUG, "construction ProduitBean");
+//		LoggerPerso.log(ProduitBean.class, LoggerPerso.DEBUG, "construction ProduitBean");
 	}
 
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/traducteur/TraducteurEmission.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/traducteur/TraducteurEmission.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/bean/emission/traducteur/TraducteurEmission.java	(revision 70)
@@ -18,4 +18,8 @@
 		requete.setParamBurnt(emission.getService().getParamIdBurntArea());
 		requete.setProduitBurnt(burnt.getBurnt().getId_item());
+		requete.setId_rcp(new Long(0));
+		requete.setId_secteur(new Long(0));
+		requete.setAlt("0");
+		requete.setId_mask(new Long(0));
 		
 		requete.setDatedeb(burnt.getDate_debut());
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/composant/ComposantPopup.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/composant/ComposantPopup.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/composant/ComposantPopup.java	(revision 70)
@@ -3,7 +3,5 @@
 import javax.faces.component.*;
 import javax.faces.context.*;
-import java.util.*;
 import java.io.*;
-import javax.faces.event.*;
 
 
@@ -16,7 +14,7 @@
 	
 	private String classe;
-	private String onclick;
+//	private String onclick;
 	private String style;
-	private String value;
+//	private String value;
 	  
 //**************************************//
@@ -43,6 +41,6 @@
 				style=(String)getAttributes().get("style");
 			}
-			if (getAttributes().containsKey("onclick"))
-				onclick=(String)getAttributes().get("onclick");
+//			if (getAttributes().containsKey("onclick"))
+//				onclick=(String)getAttributes().get("onclick");
 			
 			/** ENCODAGE **/				
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/composant/TagDivButton.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/composant/TagDivButton.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/composant/TagDivButton.java	(revision 70)
@@ -45,10 +45,12 @@
 //	**************************************//
 
+	@SuppressWarnings("unchecked")
 	protected void setProperties(UIComponent component){
 		super.setProperties(component);
 		ComposantPopup compo= (ComposantPopup) component;
 
-		if (classe != null)
+		if (classe != null) {
 			compo.getAttributes().put("styleClass", classe);
+		}
 		if (style != null) {
 			//system.out.println("ajout du style :: " + style);
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/listener/PhaseEcouteur.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/listener/PhaseEcouteur.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/listener/PhaseEcouteur.java	(revision 70)
@@ -9,4 +9,9 @@
 
 public class PhaseEcouteur implements PhaseListener{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
 	public void afterPhase(PhaseEvent pe) {
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/traducteur/TraducteurCarte.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/traducteur/TraducteurCarte.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/traducteur/TraducteurCarte.java	(revision 70)
@@ -2,4 +2,6 @@
 
 import java.text.NumberFormat;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.Map;
@@ -15,26 +17,70 @@
 
 	public Map<String, String> tradCritere2Stat(CritereBean critereBean, CarteBean carteBean) {
-	Map<String, String> critere = new HashMap<String, String>();
+		Map<String, String> critere = new HashMap<String, String>();
 	
-	if (critereBean == null) {
-		LoggerPerso.log(TraducteurCarte.class, LoggerPerso.WARN, "criterebean null");
+		if (critereBean == null) {
+			LoggerPerso.log(TraducteurCarte.class, LoggerPerso.WARN, "criterebean null");
+			return critere;
+		}
+	
+		String northbcN =  carteBean.getZone_demandee().getNorthbcN().replace(",",".");
+		String southbcN = carteBean.getZone_demandee().getSouthbcN().replace(",",".");
+		String eastbcN =  carteBean.getZone_demandee().getEastbcN().replace(",",".");
+		String westbcN =  carteBean.getZone_demandee().getWestbcN().replace(",",".");
+	
+		critere.put("lat-max", northbcN);
+		critere.put("lat-min", southbcN);
+		critere.put("lon-max", eastbcN);
+		critere.put("lon-min", westbcN);
+//		critere.put("lat-max", "90");
+//		critere.put("lat-min", "-90");
+//		critere.put("lon-max", "180");
+//		critere.put("lon-min", "-180");
+		critere.put("beg-date", critereBean.getBegDate());
+		critere.put("end-date", critereBean.getEndDate());
+		////system.out.println("TraducteurCarte::" + critere);
 		return critere;
 	}
+
+	public Map<String, String> tradCritere2Total(CritereBean critereBean, CarteBean carteBean) {
+		Map<String, String> critere = new HashMap<String, String>();
 	
-	String northbcN =  carteBean.getZone_affichee().getNorthbcN().replace(",",".");
-	String southbcN = carteBean.getZone_affichee().getSouthbcN().replace(",",".");
-	String eastbcN =  carteBean.getZone_affichee().getEastbcN().replace(",",".");
-	String westbcN =  carteBean.getZone_affichee().getWestbcN().replace(",",".");
+		if (critereBean == null) {
+			LoggerPerso.log(TraducteurCarte.class, LoggerPerso.WARN, "criterebean null");
+			return critere;
+		}
+		String northbcN =  carteBean.getZone_demandee().getNorthbcN().replace(",",".");
+		String southbcN = carteBean.getZone_demandee().getSouthbcN().replace(",",".");
+		String eastbcN =  carteBean.getZone_demandee().getEastbcN().replace(",",".");
+		String westbcN =  carteBean.getZone_demandee().getWestbcN().replace(",",".");
 	
-	critere.put("lat-max", northbcN);
-	critere.put("lat-min", southbcN);
-	critere.put("lon-max", eastbcN);
-	critere.put("lon-min", westbcN);
-	critere.put("beg-date", critereBean.getBegDate());
-	critere.put("end-date", critereBean.getEndDate());
-	////system.out.println("TraducteurCarte::" + critere);
-	return critere;
+		critere.put("lat-max", northbcN);
+		critere.put("lat-min", southbcN);
+		critere.put("lon-max", eastbcN);
+		critere.put("lon-min", westbcN);
+//		critere.put("lat-max", "90");
+//		critere.put("lat-min", "-90");
+//		critere.put("lon-max", "180");
+//		critere.put("lon-min", "-180");
+		String begDate, endDate;
+		if (carteBean.getTotal().equals("totalDay")) {
+			begDate = critereBean.getDay();
+			endDate = critereBean.getDay();
+		} else if (carteBean.getTotal().equals("totalPeriod")) {
+			begDate = critereBean.getBegDate();
+			endDate = critereBean.getEndDate();
+		} else if (carteBean.getTotal().equals("totalYear")) {
+			begDate = critereBean.getYear()+"-01-01";
+			endDate = critereBean.getYear()+"-12-31";
+		} else {
+			begDate = critereBean.getMonth()+"-01";
+			Calendar cal = new GregorianCalendar(critereBean.getYear().intValue(), Integer.parseInt(critereBean.getMonth().substring(5))-1, 1);
+			int jourMax = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
+			endDate = critereBean.getMonth()+"-"+jourMax;
+		}
+		critere.put("beg-date", begDate);
+		critere.put("end-date", endDate);
+		return critere;
 	}
-	
 	
 	public Map<String, String> tradCritere2StatReinit(CritereBean critereBean, CarteBean carteBean) {
@@ -48,5 +94,5 @@
 		numberFormat = NumberFormat.getNumberInstance();
 		numberFormat.setMaximumFractionDigits(2);
-		//LoggerPerso.log(TraducteurCarte.class, LoggerPerso.DEBUG, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!lat-max "+ numberFormat.format(Double.toString(critereBean.getNorthbc())));
+		//LoggerPerso.log(TraducteurCarte.class, LoggerPerso.DEBUG, "!!!!lat-max "+ numberFormat.format(Double.toString(critereBean.getNorthbc())));
 
 		String northbcN = getNorthbcN(critereBean.getNorthbc()).replace(",",".");
@@ -65,5 +111,5 @@
 		critere.put("lon-min", Double.toString(critereBean.getWestbc())) ;*/
 		
-		//LoggerPerso.log(TraducteurCarte.class, LoggerPerso.DEBUG, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!lat-max "+ numberFormat.format(Double.toString(critereBean.getNorthbc())));
+		//LoggerPerso.log(TraducteurCarte.class, LoggerPerso.DEBUG, "!!!!lat-max "+ numberFormat.format(Double.toString(critereBean.getNorthbc())));
 		
 		
@@ -72,5 +118,47 @@
 		////system.out.println("TraducteurCarte::" + critere);
 		return critere;
+	}
+	
+	public Map<String, String> tradCritere2TotalReinit(CritereBean critereBean, CarteBean carteBean) {
+		Map<String, String> critere = new HashMap<String, String>();
+		
+		if (critereBean == null) {
+			LoggerPerso.log(TraducteurCarte.class, LoggerPerso.WARN, "criterebean null");
+			return critere;
 		}
+		
+		numberFormat = NumberFormat.getNumberInstance();
+		numberFormat.setMaximumFractionDigits(2);
+
+		String northbcN = getNorthbcN(critereBean.getNorthbc()).replace(",",".");
+		String southbcN = getSouthbcN(critereBean.getSouthbc()).replace(",",".");
+		String eastbcN =  getEastbcN(critereBean.getEastbc()).replace(",",".");
+		String westbcN =  getWestbcN(critereBean.getWestbc()).replace(",",".");
+		
+		critere.put("lat-max", northbcN) ;
+		critere.put("lat-min", southbcN) ;
+		critere.put("lon-max", eastbcN) ;
+		critere.put("lon-min", westbcN) ;
+		
+		String begDate, endDate;
+		if (carteBean.getTotal().equals("totalDay")) {
+			begDate = critereBean.getDay();
+			endDate = critereBean.getDay();
+		} else if (carteBean.getTotal().equals("totalPeriod")) {
+			begDate = critereBean.getBegDate();
+			endDate = critereBean.getEndDate();
+		} else if (carteBean.getTotal().equals("totalYear")) {
+			begDate = critereBean.getYear()+"-01-01";
+			endDate = critereBean.getYear()+"-12-31";
+		} else {
+			begDate = critereBean.getMonth()+"-01";
+			Calendar cal = new GregorianCalendar(critereBean.getYear().intValue(), Integer.parseInt(critereBean.getMonth().substring(5))-1, 1);
+			int jourMax = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
+			endDate = critereBean.getMonth()+"-"+jourMax;
+		}
+		critere.put("beg-date", begDate);
+		critere.put("end-date", endDate);
+		return critere;
+	}
 	
 	public String getEastbcN(Double eastbc) {
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/validation/DateValidation.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/validation/DateValidation.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/presentation/validation/DateValidation.java	(revision 70)
@@ -10,6 +10,4 @@
 import javax.faces.validator.Validator;
 import javax.faces.validator.ValidatorException;
-
-import org.medias.eccad.helpers.LoggerPerso;
 
 public class DateValidation implements Validator{
@@ -33,10 +31,8 @@
 		
 	    if (estValide) {
-	    	int intYear  = getYear(valeur);
+//	    	int intYear  = getYear(valeur);
 	    	int intMonth = getMonth(valeur);
 	    	int intDay   = getDay(valeur);
 	    	
-	    //	if (intYear < 1900 || intYear > 2200)
-	    //		estValide = false;
 	    	if (intMonth < 1 || intMonth > 12)
 	    		estValide = false;
@@ -53,17 +49,17 @@
 		}
 	}
-	private int getYear(String date){
+//	private int getYear(String date){
 
-		LoggerPerso.log(DateValidation.class, LoggerPerso.DEBUG, "getYear(String date  "+Integer.parseInt(date.substring(0,4)));
-		return Integer.parseInt(date.substring(0,4)); 
-	}
+//		LoggerPerso.log(DateValidation.class, LoggerPerso.DEBUG, "getYear(String date  "+Integer.parseInt(date.substring(0,4)));
+//		return Integer.parseInt(date.substring(0,4)); 
+//	}
 	private int getMonth(String date){
 
-		LoggerPerso.log(DateValidation.class, LoggerPerso.DEBUG, "getMonth(String date)  "+Integer.parseInt(date.substring(5,7)));
+//		LoggerPerso.log(DateValidation.class, LoggerPerso.DEBUG, "getMonth(String date)  "+Integer.parseInt(date.substring(5,7)));
 			return Integer.parseInt(date.substring(5,7)); 
 		}
 	private int getDay(String date){
 
-		LoggerPerso.log(DateValidation.class, LoggerPerso.DEBUG, "getDay(String date)  "+Integer.parseInt(date.substring(8,10)));
+//		LoggerPerso.log(DateValidation.class, LoggerPerso.DEBUG, "getDay(String date)  "+Integer.parseInt(date.substring(8,10)));
 		return Integer.parseInt(date.substring(8,10)); 
 	}
Index: ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/servlet/ServletService.java
===================================================================
--- ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/servlet/ServletService.java	(revision 68)
+++ ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/servlet/ServletService.java	(revision 70)
@@ -10,17 +10,12 @@
 import java.io.PrintWriter;
 
-import javax.faces.context.FacesContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
 
 
 import org.medias.eccad.helpers.LoggerPerso;
 import org.medias.eccad.metier.ServiceMetadata;
-import org.medias.eccad.presentation.bean.CritereBean;
-import org.medias.eccad.presentation.bean.DeconnectionException;
 import org.medias.eccad.presentation.bean.MetadataBean;
-import org.medias.eccad.presentation.bean.SessionBean;
 import org.medias.jni.RasterDAO;
 
@@ -43,9 +38,9 @@
 	
 	
-	private void controleSession() throws DeconnectionException {
-		SessionBean sessionbean = (SessionBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("sessionBean");
-		if (sessionbean == null || sessionbean.getEmail() == null || sessionbean.getEmail() == "")
-			throw new DeconnectionException();
-	}
+//	private void controleSession() throws DeconnectionException {
+//		SessionBean sessionbean = (SessionBean)((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getAttribute("sessionBean");
+//		if (sessionbean == null || sessionbean.getEmail() == null || sessionbean.getEmail() == "")
+//			throw new DeconnectionException();
+//	}
 	
 	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
