Package it.rol.util

Class DataUrl

java.lang.Object
it.rol.util.DataUrl
All Implemented Interfaces:
Constants, Serializable

public class DataUrl extends Object implements Constants

DataUrl.java è una classe di servizio.

Permette di costruire in modo semplice un url relativo o assoluto (comprensivo di context path) o la parte 'dati' di un url sostituendo i caratteri speciali come ' ' e '&' con caratteri equivalenti adatti per URL.

Questa classe si basa sull'idea di una tabella, o mappa, in cui sono memorizzati tutti i parametri possibili presenti sulla query string.
Mette a disposizione metodi per inserire, aggiornare o eliminare tali parametri, nonché costruttori che inizializzano tale tabella, da zero oppure proprio a partire da una query string presente in una richiesta GET.
Dispone, inoltre, di metodi che permettono di generare URL http 'puliti', cioè conformi alle regole di codifica degli URI e depurati di eventuali caratteri erronei in taluni contesti (come la context root '/' dove già presente).
Infine – ma non ultimo – costruire gli URL con i metodi forniti da questa classe permette di ottenere sui valori degli href tutti gli eventuali parametri aggiuntivi opzionali presenti in query string (in primis, la eventuale lingua, che, nelle applicazioni multilingua, è esplicitata facoltativamente - se non esplicitata viene solitamente ricavata dalla lingua del sistema operativo, dalla localizzazione del client o da un valore di default).


DataUrl generates correctly formatted URLs for the Italian servlet application. Supports root paths and relative paths with mandatory parameters (entToken, commandName, survey code, 'p' parameter) plus optional additional parameters. All constructors validate input parameters and build query strings according to app conventions. Example usage:

 DataUrl url1 = new DataUrl("server");                    // /server/appname/
 DataUrl url2 = new DataUrl("ENT1", "LIST", survey);     // /entToken=ENT1invalid input: '&cmd'=LISTinvalid input: '&r'=123
 DataUrl url3 = new DataUrl("ENT1", "LIST", "part1", survey); // /entToken=ENT1invalid input: '&cmd'=LISTinvalid input: '&p'=part1invalid input: '&r'=123
 

Created on Thu 27 Feb 2025 12:45:24 PM CET 2025

Author:
Giovanroberto Torre
See Also:
  • Constructor Details

    • DataUrl

      public DataUrl()

      Costruttore senza argomenti.

      • Istanzia la mappa che conterrà i parametri della query string
    • DataUrl

      public DataUrl(String param, String value)
      Costruttore parametro/valore:
      Inserisci il parametro 'parametro' con il valore 'valore' nel formato parametro '&parametro=valore'
      • Istanzia la mappa che conterrà i parametri della query string
      • Inizializza la lingua a stringa vuota
      Se il parametro è significativo (diverso dalla lingua), viene aggiunto nella mappa dei parametri della query string; altrimenti, valorizza la lingua stessa, cioè dereferenzia la stringa vuota e valorizza questo parametro con il valore passato come secondo argomento.
      Parameters:
      param - il nome del parametro di cui deve essere valutato il valore ai fini del parsing
      value - il valore da impostare come valore del parametro
    • DataUrl

      public DataUrl(String root)
      Constructor 3: Root path only Generates: server/appname/
      Parameters:
      root - Server name (e.g., "localhost", "server01")
      Throws:
      IllegalArgumentException - if root is invalid
    • DataUrl

      public DataUrl(String entToken, String commandName, DataUrl.CodeBean survey)
      Constructor 4: Relative path with entToken, commandName, survey Generates: /entToken=XXXinvalid input: '&cmd'=YYYinvalid input: '&r'=ZZZ
      Parameters:
      entToken - Entity token (3-10 uppercase alphanum)
      commandName - Command name (uppercase letters/underscores)
      survey - Survey bean containing code
      Throws:
      IllegalArgumentException - if any parameter invalid
    • DataUrl

      public DataUrl(String entToken, String commandName, String part, DataUrl.CodeBean survey)
      Constructor 5: Relative path with entToken, commandName, part, survey Generates: /entToken=XXXinvalid input: '&cmd'=YYYinvalid input: '&p'=ZZZinvalid input: '&r'=WWW
      Parameters:
      entToken - Entity token
      commandName - Command name
      part - Part identifier
      survey - Survey bean
    • DataUrl

      public DataUrl(String entToken, String commandName, String part, String extraParam, String extraValue, DataUrl.CodeBean survey)
      Constructor 6: Relative path with entToken, commandName, part, extra param, survey Generates: /entToken=XXXinvalid input: '&cmd'=YYYinvalid input: '&p'=ZZZinvalid input: '&extra'=AAAinvalid input: '&r'=WWW
      Parameters:
      entToken - Entity token
      commandName - Command name
      part - Part identifier
      extraParam -
      extraValue -
      survey - Survey bean
      extra - Additional parameter name
    • DataUrl

      public DataUrl(String entToken, String commandName, String part, String extra1, String extra1Value, String extra2, String extra2Value, DataUrl.CodeBean survey)
      Constructor 7: Relative path with entToken, commandName, part, two extra params, survey Generates: /entToken=XXXinvalid input: '&cmd'=YYYinvalid input: '&p'=ZZZinvalid input: '&extra1'=AAAinvalid input: '&extra2'=BBBinvalid input: '&r'=WWW
      Parameters:
      entToken -
      commandName -
      part -
      extra1 -
      extra1Value -
      extra2 -
      extra2Value -
      survey -
  • Method Details

    • getUrl

      public String getUrl()
    • getUrl

      public String getUrl(String rootPath)
      Generates the complete URL path string
      Returns:
      Formatted URL (absolute or relative based on constructor used)
    • add

      public void add(String param, String value)
      Adds an additional parameter to existing URL
      Parameters:
      param - Parameter name (must match PART_PATTERN)
      value - Parameter value (non-null)
      Throws:
      IllegalArgumentException - if parameters invalid
    • remove

      public DataUrl remove(String parametro)

      Rimuove il parametro 'parametro' se esiste, nulla altrimenti.

      Parameters:
      parametro - il parametro che deve essere eliminato
      Returns:
      DataUrl - dataUrl depurato del parametro indicato
    • clearAdditionalParams

      public void clearAdditionalParams()
      Clears all additional parameters
    • getServletToken

      public static String getServletToken()

      Getter per il token usato per rappresentare la Main servlet

      Returns:
      String - nome della servlet nel context path
    • setServletToken

      public static void setServletToken(String servletToken)

      Setter per il token usato per rappresentare la Main servlet.

      Gli url prodotti da DataUrl sono formati da:
      'context path' + servletToken + ...
      • 'context path' si definisce con setContextPath(String).
      • Se 'context path' == '' e servletToken == '', si otterrà sempre un indirizzo relativo.
      Parameters:
      servletToken - nome da dare alla servlet centrale del server web se diverso da 'main'
    • setContextPath

      public static void setContextPath(String contextPath)

      Setter per il context path da usare nel DataUrl.

      Solitamente è sufficiente inizializzare la classe, chiamando questo metodo come DataUrl.setContextPath(getServletContext().getContextPath());

      ServletContext.getContextPath() restituisce il context path dell'applicazione web.

      Il context path è la porzione dell'URI richiesto che è usata per selezionare il contesto della richiesta. Il context path è sempre la prima parte nella richiesta di un URI. Il path inizia con un carattere di slash "/" ma non finisce con uno slash. Per le servlet che si trovano nel contesto di default (root), questo metodo restituisce stringa vuota ("").

      È possibile che in un servlet container uno stesso contesto possa corrispondere a piú di un context path. In tal caso, il metodo HttpServletRequest.getContextPath() restituirà l'attuale context path utilizzato dalla richiesta, e questo potrebbe differire dal path restituito dal metodo in questione. Il context path restituito da questo metodo dovrebbe essere considerato come il context path preferito dell'applicazione web.

      Di default il suo valore è stringa vuota ("").

      vedi anche: http://docs.oracle.com/javaee/1.3/api/javax/servlet/http/HttpServletRequest.html

      Parameters:
      contextPath - valore da dare al context path
    • encodeURL

      public static String encodeURL(String s)

      Metodo statico per convertire i caratteri IS0-8859-1 nel formato adatto per gli URL.

      Parameters:
      s - Stringa da convertire
      Returns:
      Stringa - la string input codificata correttamente per essere usata in un URL
    • encodeHTML

      public static String encodeHTML(String input, boolean tutti)
      Restituisce la stringa 'input' codificata in modo tale da poter inserire la stringa all'interno di un documento html evitando l'interpretazione dei caratteri speciali. Rimpiazza tutti i seguenti caratteri speciali html con le loro entità:
      • & diventa &
      • " diventa "
      • ' diventa '
      • \n diventa <br />
      Se il parametro 'tutti' è true, allora anche i caratteri < e > vengono tradotti. In questo modo la funzione converte eventuali tag html presenti in input che vengono resi caratteri nella stringa restituita.
      Parameters:
      input - stringa da codificare
      tutti - i caratteri < e > vengono tradotti come entità html
      Returns:
      String - la string input codificata in html
    • encodeHTML

      public static String encodeHTML(String input)
      Overloading di encodeHTML(s,b) con b=true
      Parameters:
      input - stringa da codificare
      Returns:
      stringa con i caratteri speciali HTML codificati come entità HTML
      See Also:
    • put

      public DataUrl put(String parametro, String valore)

      Inserisce la coppia

      'parametro'='valore'
      sostituendo eventualmente il valore del parametro, se già presente.

      Parameters:
      parametro - il parametro il cui valore deve essere inserito
      valore - il valore da inserire nel parametro indicato
      Returns:
      DataUrl - dataUrl modificato nel valore del parametro indicato
    • put

      public DataUrl put(String parametro, int valore)

      Inserisce la coppia

      'parametro'='valore numerico'
      sostituendo eventualmente il valore numerico del parametro, se già presente.

      Quantunque l'argomento passato come valore del parametro sia un numero, esso viene inserito nella tabella dei parametri sotto forma di String.

      Parameters:
      parametro - il parametro il cui valore deve essere inserito
      valore - il valore da inserire nel parametro indicato
      Returns:
      DataUrl - dataUrl modificato nel valore del parametro indicato
    • add

      public DataUrl add(String parametro, int valore)

      Aggiunge la coppia

      'parametro'='valore'
      dove 'valore' è un numero.

      Quantunque l'argomento passato come valore del parametro sia un numero, esso alla fine verrà inserito nella tabella dei parametri sotto forma di String.

      Facade di put(String, int)

      Parameters:
      parametro - il parametro il cui valore deve essere aggiunto
      valore - il valore da inserire nel parametro indicato
      Returns:
      DataUrl - dataUrl modificato nel valore del parametro indicato
    • set

      public DataUrl set(String parametro, String valore)

      Imposta il parametro 'parametro' al valore 'valore'

      Parameters:
      parametro - il parametro il cui valore deve essere aggiornato
      valore - il valore da inserire nel parametro indicato
      Returns:
      DataUrl - dataUrl modificato nel valore del parametro indicato
    • set

      public DataUrl set(String parametro, int valore)

      Imposta il parametro 'parametro' al valore 'valore' dove 'valore' è un numero.

      Quantunque l'argomento passato come valore del parametro sia un numero, esso alla fine verrà inserito nella tabella dei parametri sotto forma di String.

      Parameters:
      parametro - il parametro il cui valore deve essere aggiornato
      valore - il valore da inserire nel parametro indicato
      Returns:
      DataUrl - dataUrl modificato nel valore del parametro indicato
    • merge

      public DataUrl merge(DataUrl dataU)

      merge(DataUrl d) restituisce un DataUrl dato dall'unione del DataUrl 'd' con i valori presenti nel data url attuale.

      Lo stato interno sia di this sia di 'd' non vengono modificati.

      Parameters:
      dataU - dataUrl in ingresso
      Returns:
      DataUrl - DataUrl modificato
    • parseScheme

      public static String parseScheme(String scheme) throws IllegalArgumentException
      Parameters:
      scheme -
      Returns:
      Throws:
      IllegalArgumentException