Class DataUrl
- All Implemented Interfaces:
Constants,Serializable
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classRequired CodeBean interface/class for survey codes -
Field Summary
Fields inherited from interface it.rol.Constants
AMPERSAND, APOSTROPHE, BEAN_DEFAULT_FLOAT, BEAN_DEFAULT_ID, BLANK_SPACE, COLON, COMMA, COMMAND_AUDIT, COMMAND_HOME, COMMAND_INDICATOR, COMMAND_MEASURE, COMMAND_PROCESS, COMMAND_REPORT, COMMAND_RISK, COMMAND_STRUCTURES, CP1, CP2, CP3, CSV, DASH, DATA_FORMAT, DATA_GENERAL_PATTERN, DATA_SQL_PATTERN, DEFAULT_ID, DELETE, DOT, ELEMENT_LEV_1, ELEMENT_LEV_2, ELEMENT_LEV_3, ELEMENT_LEV_4, ENGLISH_DOUBLE_QUOTE_CLOSE, ENGLISH_DOUBLE_QUOTE_OPEN, ENGLISH_SINGLE_QUOTE, EQ, ERR, GR, HTML, HYPHEN, I, I1, I2, I3, I4, IF_EXISTS_DONOT_CREATE_NEW, INTERVIEW, INTERVIEWS, JSON, JSP_EXT, LIVELLI_RISCHIO, LIVELLI_RISCHIO_AS_LIST, LOG_IND, MAIN_MENU, MDASH, MESSAGE, MIME_TYPE_HTML, MIME_TYPE_TEXT, ND, NDASH, NOTHING, P, P1, P2, P3, P4, P5, P6, P7, PARAM_SURVEY, PART_CONFIRM_QST, PART_CREDITS, PART_FACTORS, PART_GRAPHICS, PART_INDICATOR, PART_INPUT, PART_INSERT_ACT_STRUCTS, PART_INSERT_ACTIVITY, PART_INSERT_F_R_P, PART_INSERT_INDICATOR, PART_INSERT_INPUT, PART_INSERT_M_R_P, PART_INSERT_MEASURE, PART_INSERT_MEASUREMENT, PART_INSERT_MONITOR_DATA, PART_INSERT_OUTPUT, PART_INSERT_PROCESS, PART_INSERT_PROCESS_RISK, PART_INSERT_RISK, PART_INSERT_RISK_PROCESS, PART_INSERT_SUBJECT, PART_MACROPROCESS, PART_MEASURES, PART_MONITOR, PART_OUTPUT, PART_PI_NOTE, PART_PROCESS, PART_RESUME_QST, PART_RISKS, PART_SEARCH, PART_SELECT_MEASUREMENT, PART_SELECT_MONITOR_DATA, PART_SELECT_QSS, PART_SELECT_QST, PART_SELECT_STR, PART_UPDATE_ACTIVITY, PART_UPDATE_MEASURE, PART_USR, PER_CENT, PI, PIM, PIR, PRO_PFX, PROCESS, QM, QUOTE, REFERRAL, REPORT_MDM, REPORT_MDM_MES, RISKS, ROOT_QM, RTF, SEMICOLON, SEPARATOR, SLASH, STATI_STRUTTURA, STATI_STRUTTURA_AS_LIST, STR_PFX, STRUCTURES, SUB_MENU, THE_END_OF_TIME, TIME_SQL_PATTERN, TIPI_LISTE, TWELWE_HOUR_FORMAT, UNDERSCORE, UNIX_EPOCH, UPDATE, VOID_SQL_STRING, VOID_STRING, WEIGHT_GENERIC, WEIGHT_SPECIFIC, YEAR_SHIFT -
Constructor Summary
ConstructorsConstructorDescriptionDataUrl()Costruttore senza argomenti.Constructor 3: Root path only Generates: server/appname/Costruttore parametro/valore:
Inserisci il parametro'parametro'con il valore'valore'nel formato parametro '¶metro=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.DataUrl(String entToken, String commandName, DataUrl.CodeBean survey) Constructor 4: Relative path with entToken, commandName, survey Generates: /entToken=XXXinvalid input: '&cmd'=YYYinvalid input: '&r'=ZZZDataUrl(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'=WWWDataUrl(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'=WWWDataUrl(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 -
Method Summary
Modifier and TypeMethodDescriptionAggiunge la coppiavoidAdds an additional parameter to existing URLvoidClears all additional parametersstatic StringencodeHTML(String input) Overloading di encodeHTML(s,b) con b=truestatic StringencodeHTML(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.static StringMetodo statico per convertire i caratteri IS0-8859-1 nel formato adatto per gli URL.static StringGetter per il token usato per rappresentare la Main servletgetUrl()Generates the complete URL path stringmerge(DataUrl d) restituisce un DataUrl dato dall'unione del DataUrl 'd' con i valori presenti nel data url attuale.static StringparseScheme(String scheme) Inserisce la coppiaInserisce la coppiaRimuove il parametro'parametro'se esiste, nulla altrimenti.Imposta il parametro'parametro'al valore'valore'dove'valore'è un numero.Imposta il parametro'parametro'al valore'valore'static voidsetContextPath(String contextPath) Setter per il context path da usare nel DataUrl.static voidsetServletToken(String servletToken) Setter per il token usato per rappresentare la Main servlet.
-
Constructor Details
-
DataUrl
public DataUrl()Costruttore senza argomenti.
- Istanzia la mappa che conterrà i parametri della query string
-
DataUrl
Costruttore parametro/valore:
Inserisci il parametro'parametro'con il valore'valore'nel formato parametro '¶metro=valore'- Istanzia la mappa che conterrà i parametri della query string
- Inizializza la lingua a stringa vuota
- Parameters:
param- il nome del parametro di cui deve essere valutato il valore ai fini del parsingvalue- il valore da impostare come valore del parametro
-
DataUrl
Constructor 3: Root path only Generates: server/appname/- Parameters:
root- Server name (e.g., "localhost", "server01")- Throws:
IllegalArgumentException- if root is invalid
-
DataUrl
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
Constructor 5: Relative path with entToken, commandName, part, survey Generates: /entToken=XXXinvalid input: '&cmd'=YYYinvalid input: '&p'=ZZZinvalid input: '&r'=WWW- Parameters:
entToken- Entity tokencommandName- Command namepart- Part identifiersurvey- 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 tokencommandName- Command namepart- Part identifierextraParam-extraValue-survey- Survey beanextra- 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
-
getUrl
Generates the complete URL path string- Returns:
- Formatted URL (absolute or relative based on constructor used)
-
add
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
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
Getter per il token usato per rappresentare la Main servlet
- Returns:
String- nome della servlet nel context path
-
setServletToken
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 consetContextPath(String). -
Se
'context path' == ''eservletToken == '', si otterrà sempre un indirizzo relativo.
- Parameters:
servletToken- nome da dare alla servlet centrale del server web se diverso da 'main'
-
-
setContextPath
Setter per il context path da usare nel DataUrl.
Solitamente è sufficiente inizializzare la classe, chiamando questo metodo comeDataUrl.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
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
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 />
- Parameters:
input- stringa da codificaretutti- i caratteri < e > vengono tradotti come entità html- Returns:
String- la string input codificata in html
-
encodeHTML
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
Inserisce la coppia
'parametro'='valore'
sostituendo eventualmente il valore del parametro, se già presente.- Parameters:
parametro- il parametro il cui valore deve essere inseritovalore- il valore da inserire nel parametro indicato- Returns:
DataUrl- dataUrl modificato nel valore del parametro indicato
-
put
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 inseritovalore- il valore da inserire nel parametro indicato- Returns:
DataUrl- dataUrl modificato nel valore del parametro indicato
-
add
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 aggiuntovalore- il valore da inserire nel parametro indicato- Returns:
DataUrl- dataUrl modificato nel valore del parametro indicato
-
set
Imposta il parametro
'parametro'al valore'valore'- Parameters:
parametro- il parametro il cui valore deve essere aggiornatovalore- il valore da inserire nel parametro indicato- Returns:
DataUrl- dataUrl modificato nel valore del parametro indicato
-
set
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 aggiornatovalore- il valore da inserire nel parametro indicato- Returns:
DataUrl- dataUrl modificato nel valore del parametro indicato
-
merge
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
thissia di'd'non vengono modificati.- Parameters:
dataU- dataUrl in ingresso- Returns:
DataUrl- DataUrl modificato
-
parseScheme
- Parameters:
scheme-- Returns:
- Throws:
IllegalArgumentException
-