com.ejie.r01f.servlet
Class RequestParamParser

java.lang.Object
  extended bycom.ejie.r01f.servlet.RequestParamParser

public class RequestParamParser
extends java.lang.Object

Clase para simplificar el tratamiento de parametros de la request - Obtiene parametros en cualquier tipo primitivo sin necesidad de hacer cast - Lanzar una excepción cuando el parametro no se encuentra - Establece valores por defecto en los parámetros

Ejemplo de utilización:

 RequestParamParser parser = new RequestParamParser(_req);
  
 float ratio = parser.getFloatParameter("ratio", 1.0);
  
 int count = 0;
 try {
      count = parser.getIntParameter("count");
 } catch (NumberFormatException e) {
      handleMalformedCount();
 } catch (ParameterNotFoundException e) {
      handleNoCount();
 }
 
Además se puede buscar qué parametros requeridos no vienen en la request
 RequestParamParser parser = new RequestParamParser(_req);
 String[] required = { "fname", "lname", "account" };
 String[] missing = parser.getMissingParameters(required);
 
El charset por defecto para los paramtros de entrada es ISO-8859-1 (Latin-1). Si los parametros están codificados de otra forma, especificarlo utilizando el metodo setCharacterEncoding() antes de parsear. ATENDIÓN!!! Los nombres de los parámetros sin embargo HAN DE ESTAR en la codificacion Latin-1
 RequestParamParser parser = new RequestParamParser(_req);
 parser.setCharacterEncoding("Shift_JIS");
 String japaneseValue = parser.getStringParameter("latinName");
 
ver com.oreilly.servlet.ParameterNotFoundException

Author:
Jason Hunter, Copyright © 1998, 1999 Modificado por Alex Lara (EJIE)

Constructor Summary
RequestParamParser()
          Constructor vacío
RequestParamParser(javax.servlet.ServletRequest req)
          Constructor a partir de la request
 
Method Summary
 boolean getBooleanParameter(java.lang.String name)
          Devuelve un parametro como boolean, pudiendose indicar los valores como: true = true,on,yes,si (en mayúsculas, minúsculas, etc) false = false,off,no (en mayúsculas, minúsculas, etc)
 boolean getBooleanParameter(java.lang.String name, boolean def)
          Devuelve un parametro como boolean o un valor por defecto si el parametro no está presente
 byte getByteParameter(java.lang.String name)
          Devuelve un parametro como un byte
 byte getByteParameter(java.lang.String name, byte def)
          Devuelve un parametro como byte o su valor por defecto si el parametro no se encuentra.
 char getCharParameter(java.lang.String name)
          Devuelve un parametro como un char
 char getCharParameter(java.lang.String name, char def)
          Devuelve un parametro como char o su valor por defecto si no se encuentra el parametro
 double getDoubleParameter(java.lang.String name)
          Devuelve un parametro como un double
 double getDoubleParameter(java.lang.String name, double def)
          Devuelve un parametro convertido a double o un valor por defecto si el parametro no se encuentra
 float getFloatParameter(java.lang.String name)
          Devuelve un parametro como un float
 float getFloatParameter(java.lang.String name, float def)
          Devuelve un parametro como float o su valor por defecto si el parametro no se encuentra
 int getIntParameter(java.lang.String name)
          Devuelve un parametro como int
 int getIntParameter(java.lang.String name, int def)
          Devuelve un parametro como int o un valor por defecto si el parametro no se encuentra
 long getLongParameter(java.lang.String name)
          Devuelve un parametro como long
 long getLongParameter(java.lang.String name, long def)
          Devuelve un parametro como long o un valor por defecto si el parametro no se encuentra
 java.lang.String[] getMissingParameters(java.lang.String[] required)
          Determina cuales de los parametros requeridos en la request no vienen en ella Devuelve null si están presentes todos los parametros requeridos
 short getShortParameter(java.lang.String name)
          Devuelve un parametro como short
 short getShortParameter(java.lang.String name, short def)
          Devuelve un parametro como short o un valor por defecto si no puede convertirse a short
 java.lang.String getStringParameter(java.lang.String name)
          Devuelve un parametro como cadena
 java.lang.String getStringParameter(java.lang.String name, java.lang.String def)
          Devuelve un parametro y si esta no llega se devuelve un valor por defecto
static java.util.Map parseParameters(byte[] data, java.lang.String encoding)
          Obtener un Map a partir de los parametros de la request NOTA: Se presume que el mapa especificado no es accedido por otro thread con lo que no se hacen sincronizaciones IMPLEMENTATION NOTE: Se realiza una decodificacion de URL individualmente tanto en el nombre como en el valor del parametro en lugar de hacerlo en toda la query string Esto es así para soportar el caso en que el nombre o el valor incluyan el caracter "=" o "&" codificados que de otra forma podrían ser interpretados como delimitadores NOTE: Los datos del byte array de entrada son modificados en este método... cuidadin!
static java.util.Map parseParameters(java.lang.String data, java.lang.String encoding)
          Obtener un Map a partir de los parametros de la request NOTA: Se presume que el mapa especificado no es accedido por otro thread con lo que no se hacen sincronizaciones IMPLEMENTATION NOTE: Se realiza una decodificacion de URL individualmente tanto en el nombre como en el valor del parametro en lugar de hacerlo en toda la query string Esto es así para soportar el caso en que el nombre o el valor incluyan el caracter "=" o "&" codificados que de otra forma podrían ser interpretados como delimitadores NOTE: Los datos del byte array de entrada son modificados en este método... cuidadin!
 void setCharacterEncoding(java.lang.String encoding)
          Establece el juego de caracteres de la request Por defecto se devuelven valores SIN codificar tal y como lo haría el método getParameter() de la request.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RequestParamParser

public RequestParamParser()
Constructor vacío


RequestParamParser

public RequestParamParser(javax.servlet.ServletRequest req)
Constructor a partir de la request

Parameters:
req - the servlet request
Method Detail

setCharacterEncoding

public void setCharacterEncoding(java.lang.String encoding)
                          throws java.io.UnsupportedEncodingException
Establece el juego de caracteres de la request Por defecto se devuelven valores SIN codificar tal y como lo haría el método getParameter() de la request.

Parameters:
encoding - El juego de caracteres
Throws:
java.io.UnsupportedEncodingException - si el juego de caracteres NO está soportado

getStringParameter

public java.lang.String getStringParameter(java.lang.String name)
                                    throws ParameterNotFoundException
Devuelve un parametro como cadena

Parameters:
name - Nombre del parametro
Returns:
El valor del parametro como una cadena
Throws:
ParameterNotFoundException - si el parametro no se encuentra o es una cadena vacía

getStringParameter

public java.lang.String getStringParameter(java.lang.String name,
                                           java.lang.String def)
Devuelve un parametro y si esta no llega se devuelve un valor por defecto

Parameters:
name - Nombre del parametro
def - valor por defecto
Returns:
el valor del parametro como una cadena o su valor por defecto si el parametro no llega

getBooleanParameter

public boolean getBooleanParameter(java.lang.String name)
                            throws ParameterNotFoundException,
                                   java.lang.NumberFormatException
Devuelve un parametro como boolean, pudiendose indicar los valores como: true = true,on,yes,si (en mayúsculas, minúsculas, etc) false = false,off,no (en mayúsculas, minúsculas, etc)

Parameters:
name - Nombre del parametro
Returns:
El valor del parametro como boolean
Throws:
ParameterNotFoundException - Si no se encuentra el parametro
java.lang.NumberFormatException - Si el parametro no puede ser convertido a boolean

getBooleanParameter

public boolean getBooleanParameter(java.lang.String name,
                                   boolean def)
                            throws java.lang.NumberFormatException
Devuelve un parametro como boolean o un valor por defecto si el parametro no está presente

Parameters:
name - Nombre del parámetro
def - Valor por defecto
Returns:
Valor del parametro como boolean o el valor por defecto si no llega el parametro en la request
Throws:
java.lang.NumberFormatException - Si el parametro no puede ser convertido a boolean

getByteParameter

public byte getByteParameter(java.lang.String name)
                      throws ParameterNotFoundException,
                             java.lang.NumberFormatException
Devuelve un parametro como un byte

Parameters:
name - Nombre del parametro
Returns:
valor del parametro como un byte
Throws:
ParameterNotFoundException - si no se encuentra el parametro
java.lang.NumberFormatException - si el parametro no puede ser convertido a byte

getByteParameter

public byte getByteParameter(java.lang.String name,
                             byte def)
                      throws java.lang.NumberFormatException
Devuelve un parametro como byte o su valor por defecto si el parametro no se encuentra.

Parameters:
name - nombre del parametro
def - valor por defecto del parametro
Returns:
valor del parametro como byte o el valor por defecto si el parametro no se encuentra
Throws:
java.lang.NumberFormatException - si el parametro no puede ser convertido a byte

getCharParameter

public char getCharParameter(java.lang.String name)
                      throws ParameterNotFoundException
Devuelve un parametro como un char

Parameters:
name - Nombre del parametro
Returns:
the parameter valor del parametro como un char
Throws:
ParameterNotFoundException - si no se encuentra el parametro

getCharParameter

public char getCharParameter(java.lang.String name,
                             char def)
Devuelve un parametro como char o su valor por defecto si no se encuentra el parametro

Parameters:
name - nombre del parametro
def - valor por defecto del parametro
Returns:
valor como char o el valor por defecto si no se encuentra el parametro

getDoubleParameter

public double getDoubleParameter(java.lang.String name)
                          throws ParameterNotFoundException,
                                 java.lang.NumberFormatException
Devuelve un parametro como un double

Parameters:
name - nombre del parametro
Returns:
valor del parametro como un double
Throws:
ParameterNotFoundException - si el parametro no se encuentra
java.lang.NumberFormatException - si el parametro no puede ser convertido a double

getDoubleParameter

public double getDoubleParameter(java.lang.String name,
                                 double def)
                          throws java.lang.NumberFormatException
Devuelve un parametro convertido a double o un valor por defecto si el parametro no se encuentra

Parameters:
name - nombre del parametro
def - valor por defecto del parametro
Returns:
valor como double o el valor por defecto si el parametro no se encuentra
Throws:
java.lang.NumberFormatException - si el parametro no puede ser convertido a double

getFloatParameter

public float getFloatParameter(java.lang.String name)
                        throws ParameterNotFoundException,
                               java.lang.NumberFormatException
Devuelve un parametro como un float

Parameters:
name - nombre del parametro
Returns:
valor del parametro como un float
Throws:
ParameterNotFoundException - si el parametro no se encuentra
java.lang.NumberFormatException - si el parametro NO puede ser convertido a float

getFloatParameter

public float getFloatParameter(java.lang.String name,
                               float def)
                        throws java.lang.NumberFormatException
Devuelve un parametro como float o su valor por defecto si el parametro no se encuentra

Parameters:
name - nombre del parametro
def - valor por defecto del parametro
Returns:
valor como float o el valor por defecto si el parametro no se encuentra
Throws:
java.lang.NumberFormatException - si el parametro NO puede ser convertido a float

getIntParameter

public int getIntParameter(java.lang.String name)
                    throws ParameterNotFoundException,
                           java.lang.NumberFormatException
Devuelve un parametro como int

Parameters:
name - nombre del parametro
Returns:
el valor del parametro como entero
Throws:
ParameterNotFoundException - si el parametro no se ha podido encontrar
java.lang.NumberFormatException - si el parametro no puede convertirse a int

getIntParameter

public int getIntParameter(java.lang.String name,
                           int def)
Devuelve un parametro como int o un valor por defecto si el parametro no se encuentra

Parameters:
name - nombre del parametro
def - valor por defecto del parametro
Returns:
valor del parametro como int o su valor por defecto si no se encuentra
Throws:
java.lang.NumberFormatException - si el parametro no puede convertirse a int

getLongParameter

public long getLongParameter(java.lang.String name)
                      throws ParameterNotFoundException,
                             java.lang.NumberFormatException
Devuelve un parametro como long

Parameters:
name - nombre del parametro
Returns:
valor del parametro como un long
Throws:
ParameterNotFoundException - si el parametro no se encuentra
java.lang.NumberFormatException - si el parametro no puede convertirse a long

getLongParameter

public long getLongParameter(java.lang.String name,
                             long def)
                      throws java.lang.NumberFormatException
Devuelve un parametro como long o un valor por defecto si el parametro no se encuentra

Parameters:
name - nombre del parametro
def - valor por defecto del parametro
Returns:
el valor del parametro o su valor por defecto si no se encuentra
Throws:
java.lang.NumberFormatException - si el parametro no puede convertirse a long

getShortParameter

public short getShortParameter(java.lang.String name)
                        throws ParameterNotFoundException,
                               java.lang.NumberFormatException
Devuelve un parametro como short

Parameters:
name - nombre del parametro
Returns:
valor del parametro como un short
Throws:
ParameterNotFoundException - si el parametro no se encuentra
java.lang.NumberFormatException - si el parametro no puede ser convertido a short

getShortParameter

public short getShortParameter(java.lang.String name,
                               short def)
                        throws java.lang.NumberFormatException
Devuelve un parametro como short o un valor por defecto si no puede convertirse a short

Parameters:
name - nombre del parametro
def - valor por defecto del parametro
Returns:
valor del parametro o su valor por defecto si no se encuentra
Throws:
java.lang.NumberFormatException - si el parametro no puede convertirse a short

getMissingParameters

public java.lang.String[] getMissingParameters(java.lang.String[] required)
Determina cuales de los parametros requeridos en la request no vienen en ella Devuelve null si están presentes todos los parametros requeridos

Parameters:
required - array de parametros requeridos
Returns:
un array con los parametros requeridos no presentes o null si vienen todos los parametros requeridos

parseParameters

public static java.util.Map parseParameters(java.lang.String data,
                                            java.lang.String encoding)
                                     throws java.io.UnsupportedEncodingException
Obtener un Map a partir de los parametros de la request NOTA: Se presume que el mapa especificado no es accedido por otro thread con lo que no se hacen sincronizaciones

IMPLEMENTATION NOTE: Se realiza una decodificacion de URL individualmente tanto en el nombre como en el valor del parametro en lugar de hacerlo en toda la query string Esto es así para soportar el caso en que el nombre o el valor incluyan el caracter "=" o "&" codificados que de otra forma podrían ser interpretados como delimitadores NOTE: Los datos del byte array de entrada son modificados en este método... cuidadin!

Parameters:
data - Cadena que contiene los parametros
encoding - Encoding utilizado para convertir a Hex
Returns:
El mapa con los parametros. El mapa tiene el formato nombre,array de strings con los valores del parametro *
Throws:
java.io.UnsupportedEncodingException - si los datos están mal formados

parseParameters

public static java.util.Map parseParameters(byte[] data,
                                            java.lang.String encoding)
                                     throws java.io.UnsupportedEncodingException
Obtener un Map a partir de los parametros de la request NOTA: Se presume que el mapa especificado no es accedido por otro thread con lo que no se hacen sincronizaciones

IMPLEMENTATION NOTE: Se realiza una decodificacion de URL individualmente tanto en el nombre como en el valor del parametro en lugar de hacerlo en toda la query string Esto es así para soportar el caso en que el nombre o el valor incluyan el caracter "=" o "&" codificados que de otra forma podrían ser interpretados como delimitadores NOTE: Los datos del byte array de entrada son modificados en este método... cuidadin!

Parameters:
data - Cadena que contiene los parametros
encoding - Encoding utilizado para convertir a Hex
Returns:
El mapa con los parametros. El mapa tiene el formato nombre,array de strings con los valores del parametro
Throws:
java.io.UnsupportedEncodingException - si los datos están mal formados