Index: ether_ndacc/trunk/common/implementation/com/ether/EtherException.java
===================================================================
--- ether_ndacc/trunk/common/implementation/com/ether/EtherException.java	(revision 204)
+++ ether_ndacc/trunk/common/implementation/com/ether/EtherException.java	(revision 204)
@@ -0,0 +1,40 @@
+package com.ether;
+
+/**
+ * @author vmipsl
+ * @date 02 feb 2011
+ */
+public class EtherException
+        extends FormattedException
+{
+    public EtherException( final Enum<? extends Code> code )
+    {
+        super( code );
+    }
+
+    public EtherException( final Enum<? extends Code> code, final Throwable cause, final Object... parameters )
+    {
+        this( code, cause.getMessage(), cause, parameters );
+    }
+
+    protected EtherException( final Enum<? extends Code> code, final String message, final Throwable cause, final Object... parameters )
+    {
+        super( prefix( code, message ), cause, parameters );
+    }
+
+    public EtherException( final Throwable cause )
+    {
+        super( cause );
+    }
+
+    public EtherException( final Enum<? extends Code> code, final String string )
+    {
+        super( code, string );
+    }
+
+    public static enum EtherCode
+            implements Code
+    {
+        IO_EXCEPTION_ERROR_TO_GET_OUTPUTSTREAM,
+    }
+}
Index: ether_ndacc/trunk/common/implementation/com/ether/MethodDescription.java
===================================================================
--- ether_ndacc/trunk/common/implementation/com/ether/MethodDescription.java	(revision 204)
+++ ether_ndacc/trunk/common/implementation/com/ether/MethodDescription.java	(revision 204)
@@ -0,0 +1,73 @@
+package com.ether;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import com.ether.annotation.ControllerMethod;
+
+public class MethodDescription
+{
+    MethodDescription( @NotNull final Method method, @NotNull final ControllerMethod annotation )
+    {
+        _method = method;
+        _view = annotation.view();
+        _isJsonResult = annotation.jsonResult();
+        _params = new ArrayList<ParamDescription>();
+    }
+
+    public void addNullParam()
+    {
+        _params.add( null );
+    }
+
+    public void addParam( @NotNull final String paramName, @NotNull final Class<?> paramType, final boolean mandatory, final boolean usingJSON )
+    {
+        _params.add( new ParamDescription( paramName, paramType, mandatory, usingJSON ) );
+    }
+
+    @NotNull
+    public String getView()
+    {
+        return _view;
+    }
+
+    @NotNull
+    public Method getMethod()
+    {
+        return _method;
+    }
+
+    public Boolean isJsonResult()
+    {
+        return _isJsonResult;
+    }
+
+    @Nullable
+    public List<ParamDescription> getParams()
+    {
+        return _params;
+    }
+
+    public String getName()
+    {
+        return _method.getName();
+    }
+
+    @Override
+    public String toString()
+    {
+        return _method.toString();
+    }
+
+    @NotNull
+    private Method _method;
+    @NotNull
+    private String _view;
+    private Boolean _isJsonResult;
+    @Nullable
+    private List<ParamDescription> _params;
+}
Index: ether_ndacc/trunk/common/implementation/com/ether/ParamDescription.java
===================================================================
--- ether_ndacc/trunk/common/implementation/com/ether/ParamDescription.java	(revision 204)
+++ ether_ndacc/trunk/common/implementation/com/ether/ParamDescription.java	(revision 204)
@@ -0,0 +1,69 @@
+package com.ether;
+
+import org.jetbrains.annotations.NotNull;
+
+
+public class ParamDescription
+{
+    ParamDescription( @NotNull final String name, @NotNull final Class<?> type, final boolean mandatory, final boolean usingJSON )
+    {
+        _usingJSON = usingJSON;
+        _name = name;
+        _type = type;
+        _mandatory = mandatory;
+    }
+
+    @NotNull
+    public String getName()
+    {
+        return _name;
+    }
+
+    public void setName( @NotNull final String name )
+    {
+        _name = name;
+    }
+
+    @NotNull
+    public Class<?> getType()
+    {
+        return _type;
+    }
+
+    public void setType( @NotNull final Class<?> type )
+    {
+        _type = type;
+    }
+
+    public boolean isMandatory()
+    {
+        return _mandatory;
+    }
+
+    public void setMandatory( final boolean mandatory )
+    {
+        _mandatory = mandatory;
+    }
+
+    public boolean isUsingJSON()
+    {
+        return _usingJSON;
+    }
+
+    public void setUsingJSON( final boolean usingJSON )
+    {
+        _usingJSON = usingJSON;
+    }
+
+    public boolean isPrimitive()
+    {
+        return _type.isPrimitive();
+    }
+
+    @NotNull
+    private String _name;
+    @NotNull
+    private Class<?> _type;
+    private boolean _mandatory;
+    private boolean _usingJSON;
+}
Index: ether_ndacc/trunk/common/implementation/com/ether/UTF8Charset.java
===================================================================
--- ether_ndacc/trunk/common/implementation/com/ether/UTF8Charset.java	(revision 204)
+++ ether_ndacc/trunk/common/implementation/com/ether/UTF8Charset.java	(revision 204)
@@ -0,0 +1,19 @@
+package com.ether;
+
+import java.nio.charset.Charset;
+
+public class UTF8Charset
+{
+    public static Charset getCharset()
+    {
+        return CHARSET;
+    }
+
+    public static String getEncoding()
+    {
+        return ENCODING;
+    }
+
+    private static final String ENCODING = "UTF-8";
+    private static final Charset CHARSET = Charset.forName( ENCODING );
+}
Index: ether_ndacc/trunk/common/implementation/com/ether/WebHelper.java
===================================================================
--- ether_ndacc/trunk/common/implementation/com/ether/WebHelper.java	(revision 204)
+++ ether_ndacc/trunk/common/implementation/com/ether/WebHelper.java	(revision 204)
@@ -0,0 +1,105 @@
+package com.ether;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.security.InvalidParameterException;
+
+public final class WebHelper
+{
+    private WebHelper()
+    {
+    }
+
+    @NotNull
+    public static String getRequestParameter(@NotNull final HttpServletRequest httpServletRequest, @Nullable final String parameterName, @Nullable final String defaultParameterValue, final boolean canBeNull )
+    	throws InvalidParameterException
+    {
+    	String parameterValue;
+    	if(null == parameterName)
+    		parameterValue = defaultParameterValue;
+    	
+        parameterValue = httpServletRequest.getParameter( parameterName );
+
+        if( parameterValue == null )
+            parameterValue = defaultParameterValue;
+
+        if( !canBeNull && parameterValue == null )
+            throw new InvalidParameterException( parameterName );
+
+        return parameterValue;
+    }
+
+    public static void writeJsonToResponse( @NotNull final HttpServletResponse httpServletResponse, @NotNull final String data )
+            throws IOException
+    {
+        httpServletResponse.setCharacterEncoding( UTF8Charset.getEncoding() );
+        httpServletResponse.setContentType( CONTENT_TYPE_TEXT_JSON );
+
+        final PrintWriter writer = httpServletResponse.getWriter();
+
+        writer.write( JSON_TAG_BEGIN );
+        writer.write( data );
+        writer.write( JSON_TAG_END );
+    }
+
+    public static void displayError( @NotNull final HttpServletResponse response, @Nullable final String methodName )
+    	throws EtherException
+    {		
+    	try {
+    		response.setStatus(HttpServletResponse.SC_NOT_IMPLEMENTED);
+    		response.setCharacterEncoding(UTF8Charset.getEncoding());
+    		response.setContentType("text/plain;charset="+ UTF8Charset.getEncoding());
+    		final ServletOutputStream outputStream = response.getOutputStream();
+    		outputStream.print("error.method_not_implemented : " + methodName+ " is not implemented.");
+    		outputStream.flush();
+    		outputStream.close();
+    	} catch (IOException e) {
+    		throw new EtherException( EtherException.EtherCode.IO_EXCEPTION_ERROR_TO_GET_OUTPUTSTREAM, e);
+    	}
+    }
+
+    /**
+     * This method returns the part of URL after the servlet without the part "language"
+     *
+     * @param request
+     * @return
+     */
+    @NotNull
+    public static String getUrlToRecall( @Nullable final HttpServletRequest request )
+    {
+        if( null == request )
+            return "";
+        else
+        {
+            // TODO : rÃ©cupÃ©rer cette chaine directement Ã  partir du bean localeChangeInterceptor du servlet-context.xml
+            final String localeChangeInterceptorParam = "language";
+
+            final String queryString = request.getQueryString();
+            if( !queryString.contains( localeChangeInterceptorParam ) )
+                return queryString;
+            else
+            {
+                final String[] strings = queryString.split( '&' + localeChangeInterceptorParam );
+                final int indexNextParam = strings[1].indexOf( "&" );
+                if( -1 != indexNextParam )
+                    return strings[0] + strings[1].substring( indexNextParam );
+                else
+                    return strings[0];
+            }
+        }
+    }
+
+    private static final Log LOGGER = LogFactory.getLog( WebHelper.class );
+    
+    private static final String CONTENT_TYPE_TEXT_JSON = "text/javascript;charset=" + UTF8Charset.getEncoding();
+    private static final char JSON_TAG_BEGIN = ' ' ;  // '(';
+    private static final char JSON_TAG_END = ' ';     // ')';
+}
Index: ether_ndacc/trunk/common/interface/com/ether/JSONHelper.java
===================================================================
--- ether_ndacc/trunk/common/interface/com/ether/JSONHelper.java	(revision 204)
+++ ether_ndacc/trunk/common/interface/com/ether/JSONHelper.java	(revision 204)
@@ -0,0 +1,26 @@
+package com.ether;
+
+import net.sf.json.JSON;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Collection;
+
+public interface JSONHelper
+{
+    @NotNull
+    JSON toJSON( @NotNull final Object object );
+
+    @NotNull
+    JSONObject toJSONObject( @NotNull final Object object );
+
+    JSONArray toJSON( @Nullable final Object[] collection );
+
+    @NotNull
+    JSONArray toJSON( @Nullable final Collection collection );
+
+    @Nullable
+    <T> T fromJSON( @NotNull final JSON json, @NotNull final Class<T> beanClass );
+}
Index: ether_ndacc/trunk/web/WEB-INF/servlet-context.xml
===================================================================
--- ether_ndacc/trunk/web/WEB-INF/servlet-context.xml	(revision 203)
+++ ether_ndacc/trunk/web/WEB-INF/servlet-context.xml	(revision 204)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?com.medias.xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
-	xsi:schemaLocation="
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
+       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
 
-	<!-- i18n -->
+    <!-- i18n -->
     <!--<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>-->
     <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
-        <property name="defaultLocale" value="fr"/>
+        <property name="defaultLocale" value="en"/>
     </bean>
 
@@ -29,31 +29,40 @@
 
     <!-- Mappings -->
-	<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
-		<property name="mappings">
-			<props>
-				<prop key="/station">etherController</prop>
-				<prop key="/instrument">etherController</prop>
-			</props>
-		</property>
-	</bean>
+    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
+        <property name="interceptors">
+            <list>
+                <ref bean="localeChangeInterceptor"/>
+            </list>
+        </property>
 
-	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
-		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
-		<property name="prefix" value="/" />
-		<property name="suffix" value=".jsp" />
-	</bean>
+        <property name="mappings">
+            <props>
+                <prop key="/station">controller</prop>
+                <prop key="/instrument">controller</prop>
+            </props>
+        </property>
+    </bean>
 
-	<bean id="myMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
-		<property name="defaultMethodName" value="home"/>
-		<property name="paramName" value="methodName"/>
-	</bean>
+    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
+        <property name="prefix" value="/"/>
+        <property name="suffix" value=".jsp"/>
+    </bean>
 
-	<bean id="etherController" class="com.ether.Controller">
-		<property name="methodNameResolver" ref="myMethodNameResolver" />
-		<property name="stationService" ref="stationService" />
-		<property name="instrumentService" ref="instrumentService" />
-		<property name="serviceTools" ref="serviceTools" />
-		<property name="plotService" ref="plotService" />
-	</bean>
+    <bean id="myMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
+        <property name="defaultMethodName" value="home"/>
+        <property name="paramName" value="methodName"/>
+    </bean>
+
+    <bean id="controllerEther" class="com.ether.ControllerEther">
+        <property name="methodNameResolver" ref="myMethodNameResolver"/>
+    </bean>
+
+    <bean id="controller" class="com.ether.Controller" parent="controllerEther">
+        <property name="stationService" ref="stationService"/>
+        <property name="instrumentService" ref="instrumentService"/>
+        <property name="serviceTools" ref="serviceTools"/>
+        <property name="plotService" ref="plotService"/>
+    </bean>
 
 </beans>
Index: ether_ndacc/trunk/web/WEB-INF/web.xml
===================================================================
--- ether_ndacc/trunk/web/WEB-INF/web.xml	(revision 203)
+++ ether_ndacc/trunk/web/WEB-INF/web.xml	(revision 204)
@@ -1,59 +1,87 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+<?com.medias.xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+        "http://java.sun.com/dtd/web-app_2_3.dtd">
 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+
+    <display-name>NDACC</display-name>
+
+    <welcome-file-list>Â Â 
+        <welcome-file>index.jsp</welcome-file>Â Â 
+    </welcome-file-list>
+    Â Â 
+    <context-param>
+        <param-name>contextConfigLocation</param-name>
+        <param-value>
+            /WEB-INF/classes/dao-context.xml,
+            /WEB-INF/classes/service-context.xml,
+            /WEB-INF/classes/hibernate.cfg.xml
+        </param-value>
+    </context-param>
+
+    <listener>
+        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+    </listener>
+
+    <!-- TAGLIBS -->
+    <!--<taglib>-->
+    <!--<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>-->
+    <!--<taglib-location>/WEB-INF/tags/htmlJsp.tag</taglib-location>-->
+    <!--</taglib>-->
+
+    <!--<taglib>-->
+    <!--<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>-->
+    <!--<taglib-location>/WEB-INF/tags/htmlResourceJsp.tag</taglib-location>-->
+    <!--</taglib>-->
+
+    <!--<taglib>-->
+    <!--<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>-->
+    <!--<taglib-location>/WEB-INF/tags/htmlCss.tag</taglib-location>-->
+    <!--</taglib>-->
+
+    <!--<taglib>-->
+    <!--<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>-->
+    <!--<taglib-location>/WEB-INF/tags/htmlJs.tag</taglib-location>-->
+    <!--</taglib>-->
+
+    <!--SERVLETS -->
+    <servlet>
+        <servlet-name>instrument</servlet-name>
+        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+        <init-param>
+            <param-name>contextConfigLocation</param-name>
+            <param-value>
+                /WEB-INF/servlet-context.xml
+            </param-value>
+        </init-param>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>instrument</servlet-name>
+        <url-pattern>/instrument</url-pattern>
+    </servlet-mapping>
 
 
+    <servlet>
+        <servlet-name>station</servlet-name>
+        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+        <init-param>
+            <param-name>contextConfigLocation</param-name>
+            <param-value>
+                /WEB-INF/servlet-context.xml
+            </param-value>
+        </init-param>
+    </servlet>
 
-	<display-name>NDACC</display-name>
+    <servlet-mapping>
+        <servlet-name>station</servlet-name>
+        <url-pattern>/station</url-pattern>
+    </servlet-mapping>
 
-	<context-param>
-		<param-name>contextConfigLocation</param-name>
-		<param-value>
-			classpath:dao-context.xml,
-			classpath:service-context.xml,
-			classpath:hibernate.cfg.xml
-		</param-value>
-	</context-param>
-
-	<listener>
-		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-	</listener>
-
-
-    <!--SERVLETS -->
-        <servlet>
-            <servlet-name>instrument</servlet-name>
-            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-            <init-param>
-                <param-name>contextConfigLocation</param-name>
-                <param-value>
-                    /WEB-INF/servlet-context.xml
-                </param-value>
-            </init-param>
-        </servlet>
-
-
-	<servlet-mapping>
-		<servlet-name>instrument</servlet-name>
-		<url-pattern>/instrument</url-pattern>
-	</servlet-mapping>
-
-	<servlet>
-		<servlet-name>station</servlet-name>
-		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-		<init-param>
-			<param-name>contextConfigLocation</param-name>
-			<param-value>
-				/WEB-INF/servlet-context.xml
-            </param-value>
-		</init-param>
-	</servlet>
-
-	<servlet-mapping>
-		<servlet-name>station</servlet-name>
-		<url-pattern>/station</url-pattern>
-	</servlet-mapping>
+    <session-config>
+        <session-timeout>60</session-timeout>
+        <!-- minute -->
+    </session-config>
 
 </web-app>
Index: ether_ndacc/trunk/web/data_ohp.jsp
===================================================================
--- ether_ndacc/trunk/web/data_ohp.jsp	(revision 203)
+++ ether_ndacc/trunk/web/data_ohp.jsp	(revision 204)
@@ -101,5 +101,5 @@
 <tr>
 <td class="blanc1" rowspan=2 width="15%">INSTRUMENT</td>
-<td class="blanc1" rowspan=2 width="15%"><spring:message code="mesure" htmlEscape="true"></td>
+<td class="blanc1" rowspan=2 width="15%"><spring:message code="mesure" htmlEscape="true"/></td>
 
 <td class="blanc1" rowspan=2 width="15%">PI</td>
@@ -226,5 +226,5 @@
 <br><i>pattern files : oh[yy][mm][dd].b*</i></td>
 
-<td class="orange" nowrap align=center>
+<td class="orange" nowrap align=center> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 <a href="" title="Results" onclick="OuvrirFeuilleDynW ('instrument?methodName=selectEcc&instrument=ECC&dateinf=19700101&station=OHP#','700','650')">
 <img border=1 src="resources/images/results.jpg" width="60px"></img>
Index: ether_ndacc/trunk/web/index.jsp
===================================================================
--- ether_ndacc/trunk/web/index.jsp	(revision 203)
+++ ether_ndacc/trunk/web/index.jsp	(revision 204)
@@ -1,255 +1,2 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html><head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" type="text/css" href="resources/css/ndacc.css">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<META NAME="keywords" CONTENT="NDACC, NDACC FRANCE">
-
-
-<link rel="stylesheet" type="text/css" href="resources/css/etherTypo.css" />
-<title>NDACC-France / Home</title>
-<meta name="generator" content="TYPO3 4.1 CMS" />
-
-</head>
-<body onload="preload_im();majMenu('0');">
-
-<SCRIPT LANGUAGE="JavaScript">
-
-var isIE = document.all;
-var mouseX = 0;
-var mouseY = 0;
-
-function preload_im() {
-	if (navigator.appVersion.substring(0,1) >= 3) {
-		i1=new Image;
-		i1.src='resources/images/pl_st_ndacc_f_symp.png';
-		i2=new Image;
-		i2.src='resources/images/pl_st_ndacc_f_lidar_symp.png';
-		i3=new Image;
-		i3.src='resources/images/pl_st_ndacc_f_saoz_symp.png';
-		i4=new Image;
-		i4.src='resources/images/pl_st_ndacc_f_dobson_symp.png';
-		i5=new Image;
-		i5.src='resources/images/pl_st_ndacc_f_spectro_symp.png';
-		i6=new Image;
-		i6.src='resources/images/pl_st_ndacc_f_o3sonde_symp.png';
-		i7=new Image;
-		i7.src='resources/images/pl_st_ndacc_f_ftir_symp.png';
-	}
-
-    return tooltipInit();
-}
-
-
-function getMouseXY(e) {
-
-if (!e) e = window.event;
-
-if (e) {
-	mouseX = isIE ? (e.clientX + document.body.scrollLeft) : e.pageX;
-	mouseY = isIE ? (e.clientY + document.body.scrollTop) : e.pageY;
-}
-
-}
-
-document.onmousemove = getMouseXY;
-
-function tooltipShow(msg,im) {
-	//
-	document.getElementById("tooltip").style.visibility ="visible";
-	document.getElementById("tooltip").style.left = mouseX-70 +"px";
-  	document.getElementById("tooltip").style.top = mouseY-110 +"px";
-	document.getElementById("texts").style.visibility ="visible";
-	document.getElementById("texts").style.left = mouseX-60 +"px";
-
-  	if (im == '' || im == null) {
-  		document.getElementById("texts").style.top = mouseY-30+"px";
-  		document.getElementById("tooltip").style.visibility ="hidden";
-  		document.getElementById("ims").src = "";
-        document.getElementById("ims").style.width="110px";
-        //document.getElementById("ims").height="70px";
-
-  	}
-  	else {
-  		document.getElementById("texts").style.top = mouseY -30 +"px";
-  		document.getElementById("ims").src = "resources/images/"+im;
-        document.getElementById("ims").style.width="110px";
-        //document.getElementById("ims").height="70px";
-  	}
-
-  	document.getElementById("texts").innerHTML=msg;
-
-
-}
-
-
-function tooltipHide() {
-	document.getElementById("tooltip").style.visibility ="hidden";
-	document.getElementById("texts").style.visibility ="hidden";
-    //document.getElementById("ims").style.visibility ="hidden";
-}
-
-function tooltipInit() {
-    //document.getElementById("tooltip").style.visibility ="hidden";
-    //document.getElementById("tooltip").style.left = -70 +"px";
-  	//document.getElementById("tooltip").style.top = -110 +"px";
-    //mouseX=200;
-    tooltipShow('','');
-    //document.getElementById("tooltip").getElementById("ims").style.width="300px";
-}
-
-function showMap(page) {
-	document.getElementById("immap").src="resources/images/"+page;
-	//alert(page);
-
-}
-
-</SCRIPT>
-
-<div align=center>
-<div style="margin-top: -10px; width: 1230px ;" class="menu1"><!-- dÃ©but de la boite contenant les onglets -->
-
-<jsp:include page="template_haut.jsp" />
-</div>
-    <div id="tooltip" style="position:absolute;visibility: hidden;">
-        <img id="ims" border=0 alt="" src="">
-    </div>
-    <div id="texts" style="position:absolute;color:#62f545;"></div>
-
-
-<div style="width: 1230px ; text-align: left;">
-
-<img id="immap" border=1 class="cielb" alt="" src="resources/images/pl_st_ndacc_f_symp.png" usemap="#Map">
-
-<MAP NAME="Map" >
-
-	<AREA SHAPE="rect"
-		   HREF="#"
-		   COORDS="20,60,490,140"
-		   onmouseover="" onmouseout="" onclick="window.open ('http://ndacc2011.univ-reunion.fr/', 'Symposium 2011', 'resizable=yes,scrollbars=yes,toolbar=yes,left=100,top=100,width=1000,height=600');">
-
-	<AREA SHAPE="rect"
-		   HREF="#"
-		   COORDS="80,460,120,470"
-		   onmouseover="showMap('pl_st_ndacc_f_saoz_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_saoz_symp.png');">
-
-    <AREA SHAPE="rect"
-		   HREF="#"
-		   COORDS="80,446,120,456"
-		   onmouseover="showMap('pl_st_ndacc_f_lidar_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_lidar_symp.png');">
-
-    <AREA SHAPE="rect"
-		   HREF="#"
-		   COORDS="80,480,145,490"
-		   onmouseover="showMap('pl_st_ndacc_f_o3sonde_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_o3sonde_symp.png');">
-
-	<AREA SHAPE="rect"
-		   HREF="#"
-		   COORDS="80,498,140,508"
-		   onmouseover="showMap('pl_st_ndacc_f_dobson_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_dobson_symp.png');">
-
-	<AREA SHAPE="rect"
-		   HREF="#"
-		   COORDS="80,511,220,521"
-		   onmouseover="showMap('pl_st_ndacc_f_spectro_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_spectro_symp.png');">
-
-	<AREA SHAPE="rect"
-		   HREF="#"
-		   COORDS="80,530,110,540"
-		   onmouseover="showMap('pl_st_ndacc_f_ftir_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_ftir_symp.png');">
-
-	<AREA SHAPE="rect"
-		   HREF="data_opar.jsp"
-		   COORDS="790,370,810,390"
-		   onmouseover="tooltipShow('&nbsp;La R&eacute;union','reu.jpg');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_kerguelen.jsp"
-		   COORDS="845,464,865,484"
-		   onmouseover="tooltipShow('&nbsp;Kerguelen','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="instrument?methodName=thisCall&language=en&target=data_ohp.jsp"
-		   COORDS="160,360,180,380"
-		   onmouseover="tooltipShow('&nbsp;OHP','ohp.jpg');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_villeneuve.jsp"
-		   COORDS="132,258,152,278"
-		   onmouseover="tooltipShow('&nbsp;Villeneuve d\'Ascq','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_concordia.jsp"
-		   COORDS="1019,567,1039,587"
-		   onmouseover="tooltipShow('&nbsp;Concordia','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_ddu.jsp"
-		   COORDS="1082,540,1102,560"
-		   onmouseover="tooltipShow('&nbsp;Dumont d\'Urville','ddu.jpg');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_tarawa.jsp"
-		   COORDS="1204,282,1224,302"
-		   onmouseover="tooltipShow('&nbsp;Tarawa','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_salekhard.jsp"
-		   COORDS="842,70,862,90"
-		   onmouseover="tooltipShow('&nbsp;Salekhard','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_zhigansk.jsp"
-		   COORDS="1002,80,1022,100"
-		   onmouseover="tooltipShow('&nbsp;Zhigansk','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-
-	<AREA SHAPE="rect"
-		   HREF="data_sodankyla.jsp"
-		   COORDS="695,75,715,95"
-		   onmouseover="tooltipShow('&nbsp;Sodankyla','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_scorebysund.jsp"
-		   COORDS="525,60,545,80"
-		   onmouseover="tooltipShow('&nbsp;Scorebysund','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_bauru.jsp"
-		   COORDS="440,390,460,410"
-		   onmouseover="tooltipShow('&nbsp;Bauru','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_andoya.jsp"
-		   COORDS="660,70,680,90"
-		   onmouseover="tooltipShow('&nbsp;Andoya','alomar.jpg');" onmouseout="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_riogallegos.jsp"
-		   COORDS="370,470,390,490"
-		   onmouseover="tooltipShow('&nbsp;Rio Gallegos','');" onmouseout="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_bordeaux.jsp"
-		   COORDS="90,355,110,375"
-		   onmouseover="tooltipShow('&nbsp;Bordeaux','');" onmouseout="tooltipHide();">
-
-	<AREA SHAPE="rect"
-		   HREF="data_lannemezan.jsp"
-		   COORDS="102,372,122,392"
-		   onmouseover="tooltipShow('&nbsp;OMP','omp.jpg');" onmouseout="tooltipHide();">
-
-</MAP>
-
-
-
-
-</div>
-
-
-</div>
-
-<jsp:include page="template_bas.jsp" />
-</body>
-</html>
+<%--This redirect is used to allow messages sources in the index page--%>
+<jsp:forward page="station?methodName=home"/>
Index: ether_ndacc/trunk/web/init.jsp
===================================================================
--- ether_ndacc/trunk/web/init.jsp	(revision 204)
+++ ether_ndacc/trunk/web/init.jsp	(revision 204)
@@ -0,0 +1,260 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" type="text/css" href="resources/css/ndacc.css">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<META NAME="keywords" CONTENT="NDACC, NDACC FRANCE">
+
+
+<link rel="stylesheet" type="text/css" href="resources/css/etherTypo.css" />
+<title>NDACC-France / Home</title>
+<meta name="generator" content="TYPO3 4.1 CMS" />
+
+</head>
+<body onload="preload_im();majMenu('0');">
+
+<SCRIPT LANGUAGE="JavaScript">
+
+var isIE = document.all;
+var mouseX = 0;
+var mouseY = 0;
+
+function preload_im() {
+	if (navigator.appVersion.substring(0,1) >= 3) {
+		i1=new Image;
+		i1.src='resources/images/pl_st_ndacc_f_symp.png';
+		i2=new Image;
+		i2.src='resources/images/pl_st_ndacc_f_lidar_symp.png';
+		i3=new Image;
+		i3.src='resources/images/pl_st_ndacc_f_saoz_symp.png';
+		i4=new Image;
+		i4.src='resources/images/pl_st_ndacc_f_dobson_symp.png';
+		i5=new Image;
+		i5.src='resources/images/pl_st_ndacc_f_spectro_symp.png';
+		i6=new Image;
+		i6.src='resources/images/pl_st_ndacc_f_o3sonde_symp.png';
+		i7=new Image;
+		i7.src='resources/images/pl_st_ndacc_f_ftir_symp.png';
+	}
+
+    return tooltipInit();
+}
+
+
+function getMouseXY(e) {
+
+if (!e) e = window.event;
+
+if (e) {
+	mouseX = isIE ? (e.clientX + document.body.scrollLeft) : e.pageX;
+	mouseY = isIE ? (e.clientY + document.body.scrollTop) : e.pageY;
+}
+
+}
+
+document.onmousemove = getMouseXY;
+
+function tooltipShow(msg,im) {
+	//
+	document.getElementById("tooltip").style.visibility ="visible";
+	document.getElementById("tooltip").style.left = mouseX-70 +"px";
+  	document.getElementById("tooltip").style.top = mouseY-110 +"px";
+	document.getElementById("texts").style.visibility ="visible";
+	document.getElementById("texts").style.left = mouseX-60 +"px";
+
+  	if (im == '' || im == null) {
+  		document.getElementById("texts").style.top = mouseY-30+"px";
+  		document.getElementById("tooltip").style.visibility ="hidden";
+  		document.getElementById("ims").src = "";
+        document.getElementById("ims").style.width="110px";
+        //document.getElementById("ims").height="70px";
+
+  	}
+  	else {
+  		document.getElementById("texts").style.top = mouseY -30 +"px";
+  		document.getElementById("ims").src = "resources/images/"+im;
+        document.getElementById("ims").style.width="110px";
+        //document.getElementById("ims").height="70px";
+  	}
+
+  	document.getElementById("texts").innerHTML=msg;
+
+
+}
+
+
+function tooltipHide() {
+	document.getElementById("tooltip").style.visibility ="hidden";
+	document.getElementById("texts").style.visibility ="hidden";
+    //document.getElementById("ims").style.visibility ="hidden";
+}
+
+function tooltipInit() {
+    //document.getElementById("tooltip").style.visibility ="hidden";
+    //document.getElementById("tooltip").style.left = -70 +"px";
+  	//document.getElementById("tooltip").style.top = -110 +"px";
+    //mouseX=200;
+    tooltipShow('','');
+    //document.getElementById("tooltip").getElementById("ims").style.width="300px";
+}
+
+function showMap(page) {
+	document.getElementById("immap").src="resources/images/"+page;
+	//alert(page);
+
+}
+
+</SCRIPT>
+
+<div align=center>
+<div style="margin-top: -10px; width: 1230px ;" class="menu1"><!-- dÃ©but de la boite contenant les onglets -->
+
+<jsp:include page="template_haut.jsp" />
+</div>
+    <div id="tooltip" style="position:absolute;visibility: hidden;">
+        <img id="ims" border=0 alt="" src="">
+    </div>
+    <div id="texts" style="position:absolute;color:#62f545;"></div>
+
+
+<div style="width: 1230px ; text-align: left;">
+
+<img id="immap" border=1 class="cielb" alt="" src="resources/images/pl_st_ndacc_f_symp.png" usemap="#Map">
+
+<MAP NAME="Map" >
+
+	<AREA SHAPE="rect"
+		   HREF="#"
+		   COORDS="20,60,490,140"
+		   onmouseover="" onmouseout="" onclick="window.open ('http://ndacc2011.univ-reunion.fr/', 'Symposium 2011', 'resizable=yes,scrollbars=yes,toolbar=yes,left=100,top=100,width=1000,height=600');">
+
+	<AREA SHAPE="rect"
+		   HREF="#"
+		   COORDS="80,460,120,470"
+		   onmouseover="showMap('pl_st_ndacc_f_saoz_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_saoz_symp.png');">
+
+    <AREA SHAPE="rect"
+		   HREF="#"
+		   COORDS="80,446,120,456"
+		   onmouseover="showMap('pl_st_ndacc_f_lidar_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_lidar_symp.png');">
+
+    <AREA SHAPE="rect"
+		   HREF="#"
+		   COORDS="80,480,145,490"
+		   onmouseover="showMap('pl_st_ndacc_f_o3sonde_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_o3sonde_symp.png');">
+
+	<AREA SHAPE="rect"
+		   HREF="#"
+		   COORDS="80,498,140,508"
+		   onmouseover="showMap('pl_st_ndacc_f_dobson_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_dobson_symp.png');">
+
+	<AREA SHAPE="rect"
+		   HREF="#"
+		   COORDS="80,511,220,521"
+		   onmouseover="showMap('pl_st_ndacc_f_spectro_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_spectro_symp.png');">
+
+	<AREA SHAPE="rect"
+		   HREF="#"
+		   COORDS="80,530,110,540"
+		   onmouseover="showMap('pl_st_ndacc_f_ftir_symp.png');" onmouseout="showMap('pl_st_ndacc_f_symp.png');" onclick="showMap('pl_st_ndacc_f_ftir_symp.png');">
+
+	<AREA SHAPE="rect"
+		   HREF="data_opar.jsp"
+		   COORDS="790,370,810,390"
+		   onmouseover="tooltipShow('&nbsp;La R&eacute;union','reu.jpg');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_kerguelen.jsp"
+		   COORDS="845,464,865,484"
+		   onmouseover="tooltipShow('&nbsp;Kerguelen','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<%--<AREA SHAPE="rect"--%>
+		   <%--HREF="instrument?methodName=thisCall&language=en&target=data_ohp.jsp"--%>
+		   <%--COORDS="160,360,180,380"--%>
+		   <%--onmouseover="tooltipShow('&nbsp;OHP','ohp.jpg');" onmouseout="tooltipHide();" onclick="tooltipHide();">--%>
+
+    <AREA SHAPE="rect"
+               HREF="instrument?methodName=viewDataOhp"
+               COORDS="160,360,180,380"
+               onmouseover="tooltipShow('&nbsp;OHP','ohp.jpg');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_villeneuve.jsp"
+		   COORDS="132,258,152,278"
+		   onmouseover="tooltipShow('&nbsp;Villeneuve d\'Ascq','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_concordia.jsp"
+		   COORDS="1019,567,1039,587"
+		   onmouseover="tooltipShow('&nbsp;Concordia','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_ddu.jsp"
+		   COORDS="1082,540,1102,560"
+		   onmouseover="tooltipShow('&nbsp;Dumont d\'Urville','ddu.jpg');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_tarawa.jsp"
+		   COORDS="1204,282,1224,302"
+		   onmouseover="tooltipShow('&nbsp;Tarawa','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_salekhard.jsp"
+		   COORDS="842,70,862,90"
+		   onmouseover="tooltipShow('&nbsp;Salekhard','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_zhigansk.jsp"
+		   COORDS="1002,80,1022,100"
+		   onmouseover="tooltipShow('&nbsp;Zhigansk','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+
+	<AREA SHAPE="rect"
+		   HREF="data_sodankyla.jsp"
+		   COORDS="695,75,715,95"
+		   onmouseover="tooltipShow('&nbsp;Sodankyla','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_scorebysund.jsp"
+		   COORDS="525,60,545,80"
+		   onmouseover="tooltipShow('&nbsp;Scorebysund','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_bauru.jsp"
+		   COORDS="440,390,460,410"
+		   onmouseover="tooltipShow('&nbsp;Bauru','');" onmouseout="tooltipHide();" onclick="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_andoya.jsp"
+		   COORDS="660,70,680,90"
+		   onmouseover="tooltipShow('&nbsp;Andoya','alomar.jpg');" onmouseout="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_riogallegos.jsp"
+		   COORDS="370,470,390,490"
+		   onmouseover="tooltipShow('&nbsp;Rio Gallegos','');" onmouseout="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_bordeaux.jsp"
+		   COORDS="90,355,110,375"
+		   onmouseover="tooltipShow('&nbsp;Bordeaux','');" onmouseout="tooltipHide();">
+
+	<AREA SHAPE="rect"
+		   HREF="data_lannemezan.jsp"
+		   COORDS="102,372,122,392"
+		   onmouseover="tooltipShow('&nbsp;OMP','omp.jpg');" onmouseout="tooltipHide();">
+
+</MAP>
+
+
+
+
+</div>
+
+
+</div>
+
+<jsp:include page="template_bas.jsp" />
+</body>
+</html>
Index: ether_ndacc/trunk/web/src/com/ether/Controller.java
===================================================================
--- ether_ndacc/trunk/web/src/com/ether/Controller.java	(revision 203)
+++ ether_ndacc/trunk/web/src/com/ether/Controller.java	(revision 204)
@@ -1,505 +1,559 @@
 package com.ether;
 
-import java.util.List;
+import com.ether.annotation.ControllerMethod;
+import com.ether.annotation.ParamName;
+import com.ether.instrument.Instrument;
+import com.ether.station.Station;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
-
-import com.ether.instrument.Instrument;
-import com.ether.station.Station;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author vmipsl
- * @date 02 feb 2011
+ * @date 17 feb 2011
  */
-public class Controller extends MultiActionController
+public class Controller
+        extends ControllerEther
 {
-    // Default view if methodName is unknown
-    public ModelAndView home(final HttpServletRequest request, final HttpServletResponse response) throws WebException
-    {
-        //okok
-    	return new ModelAndView("index");
-    }
-
-    
-    public ModelAndView thisCall(final HttpServletRequest request, final HttpServletResponse response)
-    	throws WebException
-    {
-
-        String pageCourante = request.getParameter("target");
-
-        String pagePref = pageCourante.substring( 1, pageCourante.lastIndexOf('.'));
-
-
-        final ModelAndView modelAndView = new ModelAndView(pagePref);
-
-		return modelAndView;
-
-    }
-
-
-    public ModelAndView viewLidarO3s(final HttpServletRequest request, final HttpServletResponse response)
-    	throws WebException
-    {
-		try {
-			final List<String> listeDates = _serviceTools.getListeDates();
-
-			final ModelAndView modelAndView = new ModelAndView(VIEW_LIDAR_O3S);
-			modelAndView.addObject("listeDates", listeDates);
-			
-			return modelAndView;
-
-		} catch (ServiceException e) {
-			throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-		}
-    }
-    
-    
-    public ModelAndView selectEcc(final HttpServletRequest request, final HttpServletResponse response) 
-	throws WebException
-	{
-	try {
-		String dateinf = request.getParameter("dateinf");
-		String station = request.getParameter("station");
-		
-		final String instrument = request.getParameter("instrument");
-
-		List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation(instrument, dateinf,"yyyyMMdd",station);
-		 
-		//dateinf="02021980";
-		//List<String> ListDates = _plotService.getLastDate(instrument);
-		final List<String> listeDates = _serviceTools.getListeDates();
-		String rep="";
-		String year = dateinf.substring(0, 4);
-		
-		if (station.compareTo("OHP")==0 || station.compareTo("ohp")==0 ) {
-			rep="./resources/visu/ohp/ecc";
-			station="OHP";
-			if (year.compareTo("1970") == 0) year="2007";
-		}
-		else if (station.compareTo("LA REUNION")==0 || station.compareTo("reunion")==0 ) {
-			rep="./resources/visu/reu/ecc";
-			//rep="./resources/visu/ohp/lidar/o3_strato";
-			station="LA REUNION";
-			if (year.compareTo("1970") == 0) year="2006";
-			//year="2006";
-		}
-		else if (station.compareTo("DDU")==0 || station.compareTo("ddu")==0 ) {
-			rep="./resources/visu/ddu/ecc";
-			//rep="./resources/visu/ohp/lidar/o3_strato";
-			station="DDU";
-			if (year.compareTo("1970") == 0) year="1991";
-			//year="2006";
-		}
-		
-		
-		final ModelAndView modelAndView = new ModelAndView(VIEW_ECC);
-		//plotsList=null;
-		modelAndView.addObject("plotsList", plotsList);
-		
-		modelAndView.addObject("listeDates", listeDates);
-		modelAndView.addObject("firstDate", dateinf);			
-		
-		String month = dateinf.substring(4,6);
-		modelAndView.addObject("month", month);
-		modelAndView.addObject("year", year);
-		modelAndView.addObject("station", station);
-		modelAndView.addObject("rep", rep);
-		
-		return modelAndView;
-
-	} catch (ServiceException e) {
-		throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-	}
-}
-
-    
-    public ModelAndView selectLidarO3s(final HttpServletRequest request, final HttpServletResponse response) 
-    	throws WebException
-    {
-		try {
-			String dateinf = request.getParameter("dateinf");
-			String station = request.getParameter("station");
-			
-			final String instrument = request.getParameter("instrument");
-
-			List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation(instrument, dateinf,"yyyyMMdd",station);
-			 
-			//dateinf="02021980";
-			//List<String> ListDates = _plotService.getLastDate(instrument);
-			final List<String> listeDates = _serviceTools.getListeDates();
-			String rep="";
-			String year = dateinf.substring(0, 4);
-			String month = dateinf.substring(4,6);
-			
-			if (station.compareTo("OHP")==0 || station.compareTo("ohp")==0 ) {
-				rep="./resources/visu/ohp/lidar/o3_strato";
-				station="OHP";
-				if (year.compareTo("1970") == 0) {
-					
-					year="1991";
-				}
-			}
-			else if (station.compareTo("REU")==0 || station.compareTo("reu")==0 || station.compareTo("LA REUNION")==0 || station.compareTo("REUNION")==0) {
-				rep="./resources/visu/reu/lidar/o3_strato";
-				station="LA REUNION";
-				if (year.compareTo("1970") == 0) year="2006";
-				//year="2006";
-			}
-			
-			else {
-				rep="./resources/visu/ddu/lidar/o3_strato";
-				station="DDU";
-				if (year.compareTo("1970") == 0) {
-						year="1991";
-						//month="04";				
-				}
-				//year="2006";
-			}
-			
-			final ModelAndView modelAndView = new ModelAndView(VIEW_LIDAR_O3S);
-			//plotsList=null;
-			modelAndView.addObject("plotsList", plotsList);
-			
-			modelAndView.addObject("listeDates", listeDates);
-			modelAndView.addObject("firstDate", dateinf);			
-			
-			
-			modelAndView.addObject("month", month);
-			modelAndView.addObject("year", year);
-			modelAndView.addObject("station", station);
-			modelAndView.addObject("rep", rep);
-			
-			return modelAndView;
-
-		} catch (ServiceException e) {
-			throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-		}
-    }
-    
-    public ModelAndView selectLidarO3t(final HttpServletRequest request, final HttpServletResponse response) 
-	throws WebException
-{
-	try {
-		String dateinf = request.getParameter("dateinf");
-		String station = request.getParameter("station");
-		
-		final String instrument = request.getParameter("instrument");
-
-		List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation(instrument, dateinf,"yyyyMMdd",station);
-		 
-		//dateinf="02021980";
-		//List<String> ListDates = _plotService.getLastDate(instrument);
-		final List<String> listeDates = _serviceTools.getListeDates();
-		String rep="";
-		String year = dateinf.substring(0, 4);
-		String month = dateinf.substring(4, 6);
-		
-		if (station.compareTo("OHP")==0 || station.compareTo("ohp")==0 ) {
-			rep="./resources/visu/ohp/lidar/o3_tropo";
-			station="OHP";
-			if (year.compareTo("1970") == 0) {
-					year="2007";
-					month="05";
-					dateinf=year+month+"01";
-			}
-		}
-		//else if (station.compareTo("reunion")==0) {
-		else {
-			rep="./resources/visu/reu/lidar/o3_tropo";
-			//rep="./resources/visu/ohp/lidar/o3_strato";
-			station="LA REUNION";
-			if (year.compareTo("1970") == 0) {
-					year="2006";
-					
-			}
-			//year="2006";
-		}
-		
-		
-		final ModelAndView modelAndView = new ModelAndView(VIEW_LIDAR_O3T);
-		//plotsList=null;
-		modelAndView.addObject("plotsList", plotsList);
-		
-		modelAndView.addObject("listeDates", listeDates);
-		modelAndView.addObject("firstDate", dateinf);			
-		
-		//String month = dateinf.substring(4,6);
-		modelAndView.addObject("month", month);
-		modelAndView.addObject("year", year);
-		modelAndView.addObject("station", station);
-		modelAndView.addObject("rep", rep);
-		
-		return modelAndView;
-
-	} catch (ServiceException e) {
-		throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-	}
-}
-
-    public ModelAndView selectLidarTemp(final HttpServletRequest request, final HttpServletResponse response) 
-	throws WebException
-{
-	try {
-		String dateinf = request.getParameter("dateinf");
-		String station = request.getParameter("station");
-		
-		final String instrument = request.getParameter("instrument");
-
-		List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation(instrument, dateinf,"yyyyMMdd",station);
-		 
-		//dateinf="02021980";
-		//List<String> ListDates = _plotService.getLastDate(instrument);
-		final List<String> listeDates = _serviceTools.getListeDates();
-		String rep="";
-		String year = dateinf.substring(0, 4);
-		String month = dateinf.substring(4, 6);
-		
-		if (station.compareTo("OHP")==0 || station.compareTo("ohp")==0 ) {
-			rep="./resources/visu/ohp/lidar/temp";
-			station="OHP";
-			if (year.compareTo("1970") == 0) {
-					year="2009";
-					month="01";
-			}
-		}
-		
-		if (station.compareTo("REU")==0 || station.compareTo("reu")==0 ) {
-			rep="./resources/visu/reu/lidar/temp";
-			station="REU";
-			if (year.compareTo("1970") == 0) {
-					year="1994";
-					month="05";
-			}
-		}
-		
-		final ModelAndView modelAndView = new ModelAndView(VIEW_LIDAR_TEMP);
-		//plotsList=null;
-		modelAndView.addObject("plotsList", plotsList);
-		
-		modelAndView.addObject("listeDates", listeDates);
-		modelAndView.addObject("firstDate", dateinf);			
-		
-		//String month = dateinf.substring(4,6);
-		modelAndView.addObject("month", month);
-		modelAndView.addObject("year", year);
-		modelAndView.addObject("station", station);
-		modelAndView.addObject("rep", rep);
-		
-		return modelAndView;
-
-	} catch (ServiceException e) {
-		throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-	}
-}
-
-    
-    public ModelAndView selectLidarAerosols(final HttpServletRequest request, final HttpServletResponse response) 
-	throws WebException
-{
-	try {
-		String dateinf = request.getParameter("dateinf");
-		String station = request.getParameter("station");
-		
-		final String instrument = request.getParameter("instrument");
-
-		List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation(instrument, dateinf,"yyyyMMdd",station);
-		 
-		//dateinf="02021980";
-		//List<String> ListDates = _plotService.getLastDate(instrument);
-		final List<String> listeDates = _serviceTools.getListeDates();
-		String rep="";
-		String year = dateinf.substring(0, 4);
-		String month = dateinf.substring(4, 6);
-		
-		if (station.compareTo("OHP")==0 || station.compareTo("ohp")==0 ) {
-			rep="./resources/visu/ohp/lidar/aerosols";
-			station="OHP";
-			if (year.compareTo("1970") == 0) {
-					year="2009";
-					month="01";
-			}
-		}
-		
-		if (station.compareTo("DDU")==0 || station.compareTo("ddu")==0 ) {
-			rep="./resources/visu/ddu/lidar/aerosols";
-			station="DDU";
-			if (year.compareTo("1970") == 0) {
-					year="2010";
-					month="01";
-			}
-		}
-		
-		final ModelAndView modelAndView = new ModelAndView(VIEW_LIDAR_AEROSOLS);
-		//plotsList=null;
-		modelAndView.addObject("plotsList", plotsList);
-		
-		modelAndView.addObject("listeDates", listeDates);
-		modelAndView.addObject("firstDate", dateinf);			
-		
-		//String month = dateinf.substring(4,6);
-		modelAndView.addObject("month", month);
-		modelAndView.addObject("year", year);
-		modelAndView.addObject("station", station);
-		modelAndView.addObject("rep", rep);
-		
-		return modelAndView;
-
-	} catch (ServiceException e) {
-		throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-	}
-}
-
-    public ModelAndView viewSpectroUV(final HttpServletRequest request, final HttpServletResponse response) throws WebException 
-	{
-    	try {
-    		String dateinf = request.getParameter("dateinf");
-    		//List<String> m = new ArrayList<String>(12);
-    		
-    		String m[];
-    		m = new String[12];
-    		String fname, iname, year;    		
-    		    		
-    		final String instrument = request.getParameter("instrument");
-    		String especes = request.getParameter("especes");
-    		
-    		if (especes.equals("nan")) {
-    			especes="uvauvb";
-    		}
-    		
-    		if (dateinf.equals("nan")) {
-    			year = "2008";
-    			dateinf="2008";
-    			
-    		}
-
-    		List<String> plotsList = _plotService.getPlotsByDateByInstrument(instrument, dateinf,"yyyy");		 
-    		final List<String> listeDates = _serviceTools.getListeDates();
-		
-    		final ModelAndView modelAndView = new ModelAndView(VIEW_SPECTRO_UV);
-    		modelAndView.addObject("plotsList", plotsList);
-		
-    		modelAndView.addObject("listeDates", listeDates);
-    		modelAndView.addObject("firstDate", dateinf);
-    		modelAndView.addObject("especes", especes);
-    		year = dateinf.substring(0, 4);
-    		
-    		modelAndView.addObject("year", year);
-    		modelAndView.addObject("m", m);
-    		
-    		fname="vasp_";
-    		fname=fname.concat(especes);
-    		fname=fname.concat("_");
-    		fname=fname.concat(year);
-    		
-    		iname=fname.concat("01_plot1.jpg");
-    		if (plotsList.contains(iname)) m[0]=iname;
-    		else m[0]="no";
-
-    		iname=fname.concat("02_plot1.jpg");
-    		if (plotsList.contains(iname)) m[1]=iname;
-    		else m[1]="no";
-    		
-    		iname=fname.concat("03_plot1.jpg");
-    		if (plotsList.contains(iname)) m[2]=iname;
-    		else m[2]="no";
-
-    		iname=fname.concat("04_plot1.jpg");
-    		if (plotsList.contains(iname)) m[3]=iname;
-    		else m[3]="no";
-
-    		iname=fname.concat("05_plot1.jpg");
-    		if (plotsList.contains(iname)) m[4]=iname;
-    		else m[4]="no";
-    		
-    		iname=fname.concat("06_plot1.jpg");
-    		if (plotsList.contains(iname)) m[5]=iname;
-    		else m[5]="no";
-    		
-    		iname=fname.concat("07_plot1.jpg");
-    		if (plotsList.contains(iname)) m[6]=iname;
-    		else m[6]="no";
-
-    		iname=fname.concat("08_plot1.jpg");
-    		if (plotsList.contains(iname)) m[7]=iname;
-    		else m[7]="no";
-    		
-    		iname=fname.concat("09_plot1.jpg");
-    		if (plotsList.contains(iname)) m[8]=iname;
-    		else m[8]="no";
-    		    		
-    		iname=fname.concat("10_plot1.jpg");
-    		if (plotsList.contains(iname)) m[9]=iname;
-    		else m[9]="no";
-
-    		iname=fname.concat("11_plot1.jpg");
-    		if (plotsList.contains(iname)) m[10]=iname;
-    		else m[10]="no";
-    		
-    		iname=fname.concat("12_plot1.jpg");
-    		if (plotsList.contains(iname)) m[11]=iname;
-    		else m[11]="no";
-
-    		return modelAndView;
-
-    	} catch (ServiceException e) {
-    		throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-    	}
-	}
-
- 
-    
-    public ModelAndView viewInstruments(final HttpServletRequest request, final HttpServletResponse response) 
-    	throws WebException
-    {
-		try {
-			final List<Instrument> instruments = _instrumentService.getAllInstruments();
-
-			final ModelAndView modelAndView = new ModelAndView(VIEW_INSTRUMENT);
-			modelAndView.addObject("instruments", instruments);
-			return modelAndView;
-
-		} catch (ServiceException e) {
-			throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-		}
-    }
-
-    public ModelAndView viewStation(final HttpServletRequest request, final HttpServletResponse response) throws WebException
-    {
-		try {
-			final Long stationId = Long.valueOf(request.getParameter("stationId"));
-			final Station station = _stationService.getStationById(stationId);
-
-			final ModelAndView modelAndView = new ModelAndView(VIEW_STATION);
-			modelAndView.addObject("station", station);
-			return modelAndView;
-
-		} catch (ServiceException e) {
-			throw new WebException(WebException.WebCode.SERVICE_PROBLEM, e);
-		}
-    }
-
-    public void setStationService(final StationService stationService)
-    {
-    	_stationService = stationService;
-    }
-
-    public void setInstrumentService(final InstrumentService instrumentService)
-    {
-    	_instrumentService = instrumentService;
-    }
-    
-    public void setServiceTools(final ServiceTools serviceTools)
-    {
-    	_serviceTools=serviceTools;
-    }
-    
-    public void setPlotService(final PlotService plotService)
-    {
-    	_plotService=plotService;
-    }
+    /** *********************************************************** **/
+    /** *********************** VIEWS ***************************** **/
+    /** *********************************************************** **/
+
+    /**
+     * Default view if url's methodName is unknown
+     *
+     * @return
+     * @throws WebException
+     */
+    @ControllerMethod(view = VIEW_INIT)
+    public Map<String, Object> home()
+            throws WebException
+    {
+        return new HashMap<String, Object>();
+    }
+
+    @ControllerMethod(view = VIEW_DATA_OHP)
+    public Map<String, Object> viewDataOhp()
+            throws WebException
+    {
+        return new HashMap<String, Object>();
+    }
+
+
+    @ControllerMethod(view = VIEW_ECC)
+    public Map<String, Object> selectEcc( @ParamName("dateinf") final String dateinf,
+                                          @ParamName("station") String station,
+                                          @ParamName("instrument") final String instrument )
+            throws WebException
+    {
+        try
+        {
+            final List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation( instrument, dateinf, "yyyyMMdd", station );
+
+            //dateinf="02021980";
+            //List<String> ListDates = _plotService.getLastDate(instrument);
+            final List<String> listeDates = _serviceTools.getListeDates();
+            String rep = "";
+            String year = dateinf.substring( 0, 4 );
+
+            if( station.compareTo( "OHP" ) == 0 || station.compareTo( "ohp" ) == 0 )
+            {
+                rep = "./resources/visu/ohp/ecc";
+                station = "OHP";
+                if( year.compareTo( "1970" ) == 0 ) year = "2007";
+            }
+            else if( station.compareTo( "LA REUNION" ) == 0 || station.compareTo( "reunion" ) == 0 )
+            {
+                rep = "./resources/visu/reu/ecc";
+                //rep="./resources/visu/ohp/lidar/o3_strato";
+                station = "LA REUNION";
+                if( year.compareTo( "1970" ) == 0 ) year = "2006";
+                //year="2006";
+            }
+            else if( station.compareTo( "DDU" ) == 0 || station.compareTo( "ddu" ) == 0 )
+            {
+                rep = "./resources/visu/ddu/ecc";
+                //rep="./resources/visu/ohp/lidar/o3_strato";
+                station = "DDU";
+                if( year.compareTo( "1970" ) == 0 ) year = "1991";
+                //year="2006";
+            }
+
+            final Map<String, Object> model = new HashMap<String, Object>();
+            model.put( "plotsList", plotsList );
+            model.put( "listeDates", listeDates );
+            model.put( "firstDate", dateinf );
+            final String month = dateinf.substring( 4, 6 );
+            model.put( "month", month );
+            model.put( "year", year );
+            model.put( "station", station );
+            model.put( "rep", rep );
+            return model;
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+    public ModelAndView viewLidarO3s( final HttpServletRequest request, final HttpServletResponse response )
+            throws WebException
+    {
+        try
+        {
+            final List<String> listeDates = _serviceTools.getListeDates();
+
+            final ModelAndView modelAndView = new ModelAndView( VIEW_LIDAR_O3S );
+            modelAndView.addObject( "listeDates", listeDates );
+
+            return modelAndView;
+
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+    public ModelAndView selectLidarO3s( final HttpServletRequest request, final HttpServletResponse response )
+            throws WebException
+    {
+        try
+        {
+            String dateinf = request.getParameter( "dateinf" );
+            String station = request.getParameter( "station" );
+
+            final String instrument = request.getParameter( "instrument" );
+
+            List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation( instrument, dateinf, "yyyyMMdd", station );
+
+            //dateinf="02021980";
+            //List<String> ListDates = _plotService.getLastDate(instrument);
+            final List<String> listeDates = _serviceTools.getListeDates();
+            String rep = "";
+            String year = dateinf.substring( 0, 4 );
+            String month = dateinf.substring( 4, 6 );
+
+            if( station.compareTo( "OHP" ) == 0 || station.compareTo( "ohp" ) == 0 )
+            {
+                rep = "./resources/visu/ohp/lidar/o3_strato";
+                station = "OHP";
+                if( year.compareTo( "1970" ) == 0 )
+                {
+
+                    year = "1991";
+                }
+            }
+            else if( station.compareTo( "REU" ) == 0 || station.compareTo( "reu" ) == 0 || station.compareTo( "LA REUNION" ) == 0 || station.compareTo( "REUNION" ) == 0 )
+            {
+                rep = "./resources/visu/reu/lidar/o3_strato";
+                station = "LA REUNION";
+                if( year.compareTo( "1970" ) == 0 ) year = "2006";
+                //year="2006";
+            }
+
+            else
+            {
+                rep = "./resources/visu/ddu/lidar/o3_strato";
+                station = "DDU";
+                if( year.compareTo( "1970" ) == 0 )
+                {
+                    year = "1991";
+                    //month="04";
+                }
+                //year="2006";
+            }
+
+            final ModelAndView modelAndView = new ModelAndView( VIEW_LIDAR_O3S );
+            //plotsList=null;
+            modelAndView.addObject( "plotsList", plotsList );
+
+            modelAndView.addObject( "listeDates", listeDates );
+            modelAndView.addObject( "firstDate", dateinf );
+
+
+            modelAndView.addObject( "month", month );
+            modelAndView.addObject( "year", year );
+            modelAndView.addObject( "station", station );
+            modelAndView.addObject( "rep", rep );
+
+            return modelAndView;
+
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+    public ModelAndView selectLidarO3t( final HttpServletRequest request, final HttpServletResponse response )
+            throws WebException
+    {
+        try
+        {
+            String dateinf = request.getParameter( "dateinf" );
+            String station = request.getParameter( "station" );
+
+            final String instrument = request.getParameter( "instrument" );
+
+            List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation( instrument, dateinf, "yyyyMMdd", station );
+
+            //dateinf="02021980";
+            //List<String> ListDates = _plotService.getLastDate(instrument);
+            final List<String> listeDates = _serviceTools.getListeDates();
+            String rep = "";
+            String year = dateinf.substring( 0, 4 );
+            String month = dateinf.substring( 4, 6 );
+
+            if( station.compareTo( "OHP" ) == 0 || station.compareTo( "ohp" ) == 0 )
+            {
+                rep = "./resources/visu/ohp/lidar/o3_tropo";
+                station = "OHP";
+                if( year.compareTo( "1970" ) == 0 )
+                {
+                    year = "2007";
+                    month = "05";
+                    dateinf = year + month + "01";
+                }
+            }
+            //else if (station.compareTo("reunion")==0) {
+            else
+            {
+                rep = "./resources/visu/reu/lidar/o3_tropo";
+                //rep="./resources/visu/ohp/lidar/o3_strato";
+                station = "LA REUNION";
+                if( year.compareTo( "1970" ) == 0 )
+                {
+                    year = "2006";
+
+                }
+                //year="2006";
+            }
+
+
+            final ModelAndView modelAndView = new ModelAndView( VIEW_LIDAR_O3T );
+            //plotsList=null;
+            modelAndView.addObject( "plotsList", plotsList );
+
+            modelAndView.addObject( "listeDates", listeDates );
+            modelAndView.addObject( "firstDate", dateinf );
+
+            //String month = dateinf.substring(4,6);
+            modelAndView.addObject( "month", month );
+            modelAndView.addObject( "year", year );
+            modelAndView.addObject( "station", station );
+            modelAndView.addObject( "rep", rep );
+
+            return modelAndView;
+
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+    public ModelAndView selectLidarTemp( final HttpServletRequest request, final HttpServletResponse response )
+            throws WebException
+    {
+        try
+        {
+            String dateinf = request.getParameter( "dateinf" );
+            String station = request.getParameter( "station" );
+
+            final String instrument = request.getParameter( "instrument" );
+
+            List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation( instrument, dateinf, "yyyyMMdd", station );
+
+            //dateinf="02021980";
+            //List<String> ListDates = _plotService.getLastDate(instrument);
+            final List<String> listeDates = _serviceTools.getListeDates();
+            String rep = "";
+            String year = dateinf.substring( 0, 4 );
+            String month = dateinf.substring( 4, 6 );
+
+            if( station.compareTo( "OHP" ) == 0 || station.compareTo( "ohp" ) == 0 )
+            {
+                rep = "./resources/visu/ohp/lidar/temp";
+                station = "OHP";
+                if( year.compareTo( "1970" ) == 0 )
+                {
+                    year = "2009";
+                    month = "01";
+                }
+            }
+
+            if( station.compareTo( "REU" ) == 0 || station.compareTo( "reu" ) == 0 )
+            {
+                rep = "./resources/visu/reu/lidar/temp";
+                station = "REU";
+                if( year.compareTo( "1970" ) == 0 )
+                {
+                    year = "1994";
+                    month = "05";
+                }
+            }
+
+            final ModelAndView modelAndView = new ModelAndView( VIEW_LIDAR_TEMP );
+            //plotsList=null;
+            modelAndView.addObject( "plotsList", plotsList );
+
+            modelAndView.addObject( "listeDates", listeDates );
+            modelAndView.addObject( "firstDate", dateinf );
+
+            //String month = dateinf.substring(4,6);
+            modelAndView.addObject( "month", month );
+            modelAndView.addObject( "year", year );
+            modelAndView.addObject( "station", station );
+            modelAndView.addObject( "rep", rep );
+
+            return modelAndView;
+
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+
+    public ModelAndView selectLidarAerosols( final HttpServletRequest request, final HttpServletResponse response )
+            throws WebException
+    {
+        try
+        {
+            String dateinf = request.getParameter( "dateinf" );
+            String station = request.getParameter( "station" );
+
+            final String instrument = request.getParameter( "instrument" );
+
+            List<String> plotsList = _plotService.getPlotsByDateByInstrumentByStation( instrument, dateinf, "yyyyMMdd", station );
+
+            //dateinf="02021980";
+            //List<String> ListDates = _plotService.getLastDate(instrument);
+            final List<String> listeDates = _serviceTools.getListeDates();
+            String rep = "";
+            String year = dateinf.substring( 0, 4 );
+            String month = dateinf.substring( 4, 6 );
+
+            if( station.compareTo( "OHP" ) == 0 || station.compareTo( "ohp" ) == 0 )
+            {
+                rep = "./resources/visu/ohp/lidar/aerosols";
+                station = "OHP";
+                if( year.compareTo( "1970" ) == 0 )
+                {
+                    year = "2009";
+                    month = "01";
+                }
+            }
+
+            if( station.compareTo( "DDU" ) == 0 || station.compareTo( "ddu" ) == 0 )
+            {
+                rep = "./resources/visu/ddu/lidar/aerosols";
+                station = "DDU";
+                if( year.compareTo( "1970" ) == 0 )
+                {
+                    year = "2010";
+                    month = "01";
+                }
+            }
+
+            final ModelAndView modelAndView = new ModelAndView( VIEW_LIDAR_AEROSOLS );
+            //plotsList=null;
+            modelAndView.addObject( "plotsList", plotsList );
+
+            modelAndView.addObject( "listeDates", listeDates );
+            modelAndView.addObject( "firstDate", dateinf );
+
+            //String month = dateinf.substring(4,6);
+            modelAndView.addObject( "month", month );
+            modelAndView.addObject( "year", year );
+            modelAndView.addObject( "station", station );
+            modelAndView.addObject( "rep", rep );
+
+            return modelAndView;
+
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+    public ModelAndView viewSpectroUV( final HttpServletRequest request, final HttpServletResponse response )
+            throws WebException
+    {
+        try
+        {
+            String dateinf = request.getParameter( "dateinf" );
+            //List<String> m = new ArrayList<String>(12);
+
+            String m[];
+            m = new String[12];
+            String fname, iname, year;
+
+            final String instrument = request.getParameter( "instrument" );
+            String especes = request.getParameter( "especes" );
+
+            if( especes.equals( "nan" ) )
+            {
+                especes = "uvauvb";
+            }
+
+            if( dateinf.equals( "nan" ) )
+            {
+                year = "2008";
+                dateinf = "2008";
+
+            }
+
+            List<String> plotsList = _plotService.getPlotsByDateByInstrument( instrument, dateinf, "yyyy" );
+            final List<String> listeDates = _serviceTools.getListeDates();
+
+            final ModelAndView modelAndView = new ModelAndView( VIEW_SPECTRO_UV );
+            modelAndView.addObject( "plotsList", plotsList );
+
+            modelAndView.addObject( "listeDates", listeDates );
+            modelAndView.addObject( "firstDate", dateinf );
+            modelAndView.addObject( "especes", especes );
+            year = dateinf.substring( 0, 4 );
+
+            modelAndView.addObject( "year", year );
+            modelAndView.addObject( "m", m );
+
+            fname = "vasp_";
+            fname = fname.concat( especes );
+            fname = fname.concat( "_" );
+            fname = fname.concat( year );
+
+            iname = fname.concat( "01_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[0] = iname;
+            else m[0] = "no";
+
+            iname = fname.concat( "02_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[1] = iname;
+            else m[1] = "no";
+
+            iname = fname.concat( "03_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[2] = iname;
+            else m[2] = "no";
+
+            iname = fname.concat( "04_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[3] = iname;
+            else m[3] = "no";
+
+            iname = fname.concat( "05_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[4] = iname;
+            else m[4] = "no";
+
+            iname = fname.concat( "06_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[5] = iname;
+            else m[5] = "no";
+
+            iname = fname.concat( "07_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[6] = iname;
+            else m[6] = "no";
+
+            iname = fname.concat( "08_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[7] = iname;
+            else m[7] = "no";
+
+            iname = fname.concat( "09_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[8] = iname;
+            else m[8] = "no";
+
+            iname = fname.concat( "10_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[9] = iname;
+            else m[9] = "no";
+
+            iname = fname.concat( "11_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[10] = iname;
+            else m[10] = "no";
+
+            iname = fname.concat( "12_plot1.jpg" );
+            if( plotsList.contains( iname ) ) m[11] = iname;
+            else m[11] = "no";
+
+            return modelAndView;
+
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+
+    public ModelAndView viewInstruments( final HttpServletRequest request, final HttpServletResponse response )
+            throws WebException
+    {
+        try
+        {
+            final List<Instrument> instruments = _instrumentService.getAllInstruments();
+
+            final ModelAndView modelAndView = new ModelAndView( VIEW_INSTRUMENT );
+            modelAndView.addObject( "instruments", instruments );
+            return modelAndView;
+
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+    public ModelAndView viewStation( final HttpServletRequest request, final HttpServletResponse response )
+            throws WebException
+    {
+        try
+        {
+            final Long stationId = Long.valueOf( request.getParameter( "stationId" ) );
+            final Station station = _stationService.getStationById( stationId );
+
+            final ModelAndView modelAndView = new ModelAndView( VIEW_STATION );
+            modelAndView.addObject( "station", station );
+            return modelAndView;
+
+        }
+        catch( ServiceException e )
+        {
+            throw new WebException( WebException.WebCode.SERVICE_PROBLEM, e );
+        }
+    }
+
+    @Required
+    public void setStationService( final StationService stationService )
+    {
+        _stationService = stationService;
+    }
+
+    @Required
+    public void setInstrumentService( final InstrumentService instrumentService )
+    {
+        _instrumentService = instrumentService;
+    }
+
+    @Required
+    public void setServiceTools( final ServiceTools serviceTools )
+    {
+        _serviceTools = serviceTools;
+    }
+
+    @Required
+    public void setPlotService( final PlotService plotService )
+    {
+        _plotService = plotService;
+    }
+
+    private static final Log LOGGER = LogFactory.getLog( Controller.class );
+
+    private static final String VIEW_INIT = "init";
 
     private static final String VIEW_INSTRUMENT = "instrument";
@@ -511,4 +565,5 @@
     private static final String VIEW_LIDAR_TEMP = "visus_lidar_temp";
     private static final String VIEW_LIDAR_AEROSOLS = "visus_lidar_aerosols";
+    private static final String VIEW_DATA_OHP = "data_ohp";
 
     //services que le controller peut utiliser
Index: ether_ndacc/trunk/web/src/com/ether/ControllerEther.java
===================================================================
--- ether_ndacc/trunk/web/src/com/ether/ControllerEther.java	(revision 204)
+++ ether_ndacc/trunk/web/src/com/ether/ControllerEther.java	(revision 204)
@@ -0,0 +1,246 @@
+package com.ether;
+
+import java.io.UnsupportedEncodingException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.security.InvalidParameterException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSON;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONNull;
+import net.sf.json.JSONObject;
+import net.sf.json.util.JSONUtils;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.AbstractController;
+import org.springframework.web.servlet.mvc.multiaction.MethodNameResolver;
+import org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException;
+
+import com.ether.annotation.ControllerMethod;
+import com.ether.annotation.Mandatory;
+import com.ether.annotation.ParamName;
+import com.ether.annotation.UseJSON;
+
+public class ControllerEther extends AbstractController
+{
+	@Override
+	@Nullable
+	protected ModelAndView handleRequestInternal(@NotNull final HttpServletRequest request, @NotNull final HttpServletResponse response)
+            throws WebException, EtherException
+    {
+		try {
+			if (!_initialized)
+				initialize();
+
+
+			request.setCharacterEncoding(UTF8Charset.getEncoding());
+
+			final String methodName = _methodNameResolver.getHandlerMethodName(request);
+
+			final MethodDescription methodDescription = _methods.get(methodName);
+			if (null == methodDescription) {
+				WebHelper.displayError( response, methodName );
+				return null;
+			}
+
+			return invokeMethod(methodDescription, request, response);
+		} catch (UnsupportedEncodingException e) {
+			throw new WebException(WebException.WebCode.ERROR_UNSUPPORTED_UTF8_ENCODING, e);
+		} catch (NoSuchRequestHandlingMethodException e) {
+			throw new WebException(WebException.WebCode.ERROR_NO_REQUEST_HANDLING_METHOD, e);
+		}
+	}
+
+	@Nullable
+	private ModelAndView invokeMethod( @NotNull final MethodDescription methodDescription, @NotNull final HttpServletRequest request, @NotNull final HttpServletResponse response)
+		throws WebException
+	{
+		try {
+			// Parse parameters
+			final Object[] params = buildParams(methodDescription, request);
+
+			// Invoke method (go to controller)
+			final Object result = methodDescription.getMethod().invoke(this, params);
+
+			if (!methodDescription.getView().isEmpty()) {
+				response.setStatus(HttpServletResponse.SC_OK);
+				if (result instanceof Map)
+					return new ModelAndView(methodDescription.getView(), (Map) result);
+				else
+					return new ModelAndView(methodDescription.getView(), "result", result);
+
+			} else if (methodDescription.isJsonResult()) {
+				response.setStatus(HttpServletResponse.SC_OK);
+				final String jsonResult = convertToJson(result);
+				WebHelper.writeJsonToResponse(response, jsonResult);
+				return null;
+			} else {
+				response.setStatus(HttpServletResponse.SC_NO_CONTENT);
+				return null;
+			}
+		} catch (Throwable e) {
+			throw new WebException(e);
+		}
+	}
+
+	@NotNull
+	private String convertToJson( @Nullable final Object object )
+    {
+        if( null == object)
+            return JSONNull.getInstance().toString();
+        if( object instanceof JSON )
+            return object.toString();
+        if( object instanceof Collection )
+            return _jsonHelper.toJSON( (Collection) object ).toString();
+        if( object.getClass().isArray() )
+            return _jsonHelper.toJSON( object ).toString();
+        if( object instanceof Number || object instanceof Boolean || object instanceof String )
+            return JSONUtils.valueToString( object );
+        return _jsonHelper.toJSON( object ).toString();
+    }
+
+	@NotNull
+	private Object[] buildParams(@NotNull final MethodDescription methodDescription, @NotNull final HttpServletRequest request)
+		throws InvalidParameterException
+	{
+		final List<Object> params = new ArrayList<Object>();
+		for (final ParamDescription paramDescription : methodDescription.getParams()) {
+			if (null == paramDescription) {
+				params.add(null);
+				continue;
+			}
+			final boolean canBeNull = !paramDescription.isPrimitive() && !paramDescription.isMandatory();
+			final String paramValue = WebHelper.getRequestParameter(request, paramDescription.getName(), null, canBeNull);
+			final boolean useJSON = paramDescription.isUsingJSON();
+			params.add(convertParameter(paramDescription.getType(), paramValue, useJSON));
+		}
+		return params.toArray(new Object[params.size()]);
+	}
+
+	@Nullable
+	private Object convertParameter( @NotNull final Class paramType, @Nullable final String paramValue, final boolean useJSON )
+    {
+        if( null == paramValue )
+            return null;
+        if( useJSON )
+            return _jsonHelper.fromJSON( _jsonHelper.toJSON( paramValue ), paramType );
+        if( JSONObject.class.equals( paramType ) )
+            return _jsonHelper.toJSON( paramValue );
+        if( JSONArray.class.equals( paramType ) )
+            return _jsonHelper.toJSON( paramValue );
+        if( String.class .equals( paramType ) )
+            return paramValue;
+        if( Boolean.TYPE.equals( paramType ) || Boolean.class.equals( paramType ) )
+            return Boolean.valueOf( paramValue );
+        if( Integer.TYPE.equals( paramType ) || Integer.class.equals( paramType ) )
+            return Integer.valueOf( paramValue );
+        if( Long.TYPE.equals( paramType ) || Long.class.equals( paramType ) )
+            return Long.valueOf( paramValue );
+        if( Float.TYPE.equals( paramType ) || Float.class.equals( paramType ) )
+            return Float.valueOf( paramValue );
+        if( Double.TYPE.equals( paramType ) || Double.class.equals( paramType ) )
+            return Double.valueOf( paramValue );
+        if( Date.class.isAssignableFrom( paramType ) )
+            return new Date( Long.valueOf( paramValue ) );
+        if( paramType.isEnum() )
+            return Enum.valueOf( paramType, paramValue );
+        if( Map.class.isAssignableFrom( paramType ) )
+            return JSONObject.fromObject( paramValue );
+
+        throw new UnsupportedOperationException( "Unsupported: cast parameter to " + paramType.getName() );
+    }
+
+    private void initialize()
+    	throws WebException
+    {
+        for( final Method method : getClass().getMethods() )
+        {
+            final ControllerMethod annotation = method.getAnnotation( ControllerMethod.class );
+            if( null != annotation )
+            {
+            	final MethodDescription methodDescription = new MethodDescription( method, annotation );
+            	fillMethodDescription( method, methodDescription );
+            	_methods.put( method.getName(), methodDescription );
+            }
+        }
+
+        _initialized = true;
+    }
+
+    private void fillMethodDescription( @NotNull final Method method, @NotNull final MethodDescription methodDescription )
+    	throws WebException
+    {
+        final Class<?>[] paramTypes = method.getParameterTypes();
+        final Annotation[][] paramAnnotations = method.getParameterAnnotations();
+
+        if(paramTypes.length != paramAnnotations.length)
+        	throw new WebException(WebException.WebCode.ERROR_NUMBER_OF_PARAM_TYPES_NOT_EQUAL_TO_PARAM_ANNOTATIONS, paramTypes.length+" "+paramAnnotations.length);
+
+        for( int i = 0; i < paramTypes.length; ++i )
+        {
+            ParamName paramNameAnnotation = null;
+            Mandatory mandatoryAnnotation = null;
+            UseJSON useJSONAnnotation = null;
+            for( final Annotation paramAnnotation : paramAnnotations[i] )
+            {
+                if( paramAnnotation instanceof ParamName )
+                    paramNameAnnotation = (ParamName) paramAnnotation;
+                if( paramAnnotation instanceof Mandatory )
+                    mandatoryAnnotation = (Mandatory) paramAnnotation;
+                if( paramAnnotation instanceof UseJSON )
+                    useJSONAnnotation = (UseJSON) paramAnnotation;
+            }
+            if( null == paramNameAnnotation )
+                methodDescription.addNullParam();
+            else
+            {
+                final boolean mandatory = ( null != mandatoryAnnotation );
+                final boolean useJSON = ( null != useJSONAnnotation );
+                methodDescription.addParam( paramNameAnnotation.value(), paramTypes[i], mandatory, useJSON );
+            }
+        }
+    }
+
+    @Required
+    public void setMethodNameResolver( final MethodNameResolver methodNameResolver )
+    {
+        _methodNameResolver = methodNameResolver;
+    }
+
+    protected JSONHelper getJsonHelper()
+    {
+        return _jsonHelper;
+    }
+
+    @Required
+    public void setJsonHelper( final JSONHelper jsonHelper )
+    {
+    	_jsonHelper = jsonHelper;
+    }
+
+    protected Map<String, MethodDescription> getMethods()
+    {
+        return _methods;
+    }
+
+    private static final Log LOGGER = LogFactory.getLog( ControllerEther.class );
+
+    private JSONHelper _jsonHelper;
+    private MethodNameResolver _methodNameResolver;
+    private Map<String, MethodDescription> _methods = new HashMap<String, MethodDescription>();
+    private boolean _initialized; /*=false*/
+}
Index: ether_ndacc/trunk/web/src/com/ether/WebException.java
===================================================================
--- ether_ndacc/trunk/web/src/com/ether/WebException.java	(revision 203)
+++ ether_ndacc/trunk/web/src/com/ether/WebException.java	(revision 204)
@@ -3,23 +3,42 @@
 /**
  * @author vmipsl
- * @date 02 feb 2011 
+ * @date 02 feb 2011
  */
 @SuppressWarnings("serial")
-public class WebException 
-	extends FormattedException
+public class WebException
+        extends FormattedException
 {
-    public WebException(final Enum<? extends Code> code, final Throwable cause, final Object... parameters) {
-	this(code, cause.getMessage(), cause, parameters);
+    public WebException(final Enum<? extends Code> code) {
+    	super(code);
+	}
+
+	public WebException(final Throwable cause) {
+		super(cause);
+	}
+
+	public WebException( final Enum<? extends Code> code, final String string) {
+		super(code, string);
+	}
+
+    public WebException( final Enum<? extends Code> code, final Throwable cause, final Object... parameters )
+    {
+        this( code, cause.getMessage(), cause, parameters );
     }
 
-    protected WebException(final Enum<? extends Code> code, final String message, final Throwable cause, final Object... parameters) {
-	super(prefix(code, message), cause, parameters);
+    protected WebException( final Enum<? extends Code> code, final String message, final Throwable cause, final Object... parameters )
+    {
+        super( prefix( code, message ), cause, parameters );
     }
 
-    public static enum WebCode implements Code 
+    public static enum WebCode
+            implements Code
     {
-	UNKNOWN, 
-	PERSISTENCE, 
-	SERVICE_PROBLEM, 
+        UNKNOWN,
+        PERSISTENCE,
+        SERVICE_PROBLEM,
+        IO_EXCEPTION_ERROR_TO_GET_OUTPUTSTREAM,
+        ERROR_UNSUPPORTED_UTF8_ENCODING,
+        ERROR_NO_REQUEST_HANDLING_METHOD,
+        ERROR_NUMBER_OF_PARAM_TYPES_NOT_EQUAL_TO_PARAM_ANNOTATIONS,
     }
 }
Index: ether_ndacc/trunk/web/template_haut.jsp
===================================================================
--- ether_ndacc/trunk/web/template_haut.jsp	(revision 203)
+++ ether_ndacc/trunk/web/template_haut.jsp	(revision 204)
@@ -1,3 +1,6 @@
+<%@ page import="com.ether.WebHelper" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
+
 <!--Bandeau du haut-->
 <script type="text/javascript" src="<c:url value="./resources/css/etherTypo.js"/>"></script>
@@ -23,16 +26,16 @@
 <tr><td height=30></td> </tr>
       <tr>
-      <td><img src="resources/images/fr.jpg" alt="French version" border=0></td>
+      <td><a href="?<%=WebHelper.getUrlToRecall( request )%>&language=fr"><img src="resources/images/fr.jpg" alt="French version" border=0></a></td>
       <td>&nbsp;&nbsp;</td>
-      <td><img src="resources/images/en.jpg" alt="English version" border=0></td>
-      <td align="center" width="20%"><a id="menu0" class="menuon" onmouseout="changeMenu('menu0','out');" onmouseover="changeMenu('menu0','over');" href="index.jsp">Home</a></td>
+      <td><a href="?<%=WebHelper.getUrlToRecall( request )%>&language=en"><img src="resources/images/en.jpg" alt="English version" border=0></a></td>
+      <td align="center" width="20%"><a id="menu0" class="menuon" onmouseout="changeMenu('menu0','out');" onmouseover="changeMenu('menu0','over');" href="index.jsp"><spring:message code="home"/></a></td>
       <td align="center">&nbsp;</td>
 
       <td align="center" width="20%" height="40%">
-      <a id="menu1" class="menuon" onmouseout="changeMenu('menu1','out');" onmouseover="changeMenu('menu1','over');" href="about.jsp">About us</a>
+      <a id="menu1" class="menuon" onmouseout="changeMenu('menu1','out');" onmouseover="changeMenu('menu1','over');" href="about.jsp"><spring:message code="about"/></a>
       </td>
       <td align="center"><font color="#CDECFF;">&nbsp;</font></td>
 
-      <td  align="center"  width="20%"><a href="data_ohp.jsp" id="menu2" class="menuon" onmouseout="changeMenu('menu2','on');" onmouseover="changeMenu('menu2','over');">Stations</a></td>
+      <td  align="center"  width="20%"><a href="data_ohp.jsp" id="menu2" class="menuon" onmouseout="changeMenu('menu2','on');" onmouseover="changeMenu('menu2','over');"><spring:message code="stations"/></a></td>
       <td align="center"><font color="#CDECFF;" >&nbsp;</font></td>
 
