Class Data
- All Implemented Interfaces:
Constants,Serializable,javax.servlet.Servlet,javax.servlet.ServletConfig
Data è la servlet della web-application ROL
che può essere utilizzata in piú contesti:
- su una richiesta sincrona: per produrre output con contentType differenti da 'text/html'
- su una richiesta asincrona: per ottenere tuple da mostrare asincronamente nelle pagine
- Nel primo caso, questa servlet fa a meno, legittimamente, del design (View), in quanto l'output prodotto consiste in pure tuple prive di presentazione (potenzialmente: fileset CSV, formati XML, dati con o senza metadati, serialization formats, JSON, and so on), oppure in output già autoformattati (p.es. testo formattato Rich Text Format).
- Nel secondo caso, la servlet specifica una pagina di output, contenente la formattazione, che però verrà invocata asincronamente.
Questa servlet estrae l'azione dall'URL, ne verifica la
correttezza, quindi in base al valore del parametro 'entToken'
ricevuto, richiama le varie Command che devono eseguire i comandi specifici.
Infine, recupera l'output dai metodi delle Command stesse richiamati
e li restituisce a sua volta al cliente sotto forma non necessariamente di outputstream
'text/html' (come nel funzionamento standard delle applicazioni web),
quanto sotto forma di file nel formato richiesto (.csv, .xml, ecc.),
oppure passando il nome di una risorsa da richiamare in modo asincrono
per mostrare le tuple estratte, e passate in Request.
In caso di richieste di output non di tipo text/html,
elabora anche un nome univoco per ogni file generato, basandosi sul
timestamp dell'estrazione/richiesta.
La classe che realizza l'azione deve implementare l'interfaccia Command e, dopo aver eseguito le azioni necessarie, restituire un set di risultati che dovrà essere utilizzato per visualizzare i dati all'interno dei files serviti, ai quali sarĂ fatto un forward.
Altre modalità di generazione di output differenti da 'text/html' (chiamate a pagine .jsp che incorporano la logica di preparazione del CSV, chiamate a pagine .jsp che si occupano di presentare il metadato...) sono deprecate da tempo e vanno assolutamente evitate in favore dell'uso di questa servlet.
- Author:
- Giovanroberto Torre
- See Also:
-
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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic LinkedList<String> Getter su variabile di classestatic StringgetHighlight(String riskLevel) Calcola il colore di highlight in Rich Text Format.static StringgetStructureJsonNode(String tipo, String codice, String codicePadre, String nome, String descr, String lbl1, String txt1, String lbl2, String txt2, String bgColor, String icona, int livello) Genera il nodo JSONvoidinit(javax.servlet.ServletConfig config) Inizializza (staticamente) le variabili globali e i parametri di inizializzazione.static StringmakeDescrJsonNode(ArrayList<?> list, int livello) Genera la descrizione del nodo JSONprotected voidservice(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, serviceMethods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
-
Constructor Details
-
Data
public Data()
-
-
Method Details
-
init
public void init(javax.servlet.ServletConfig config) throws javax.servlet.ServletException Inizializza (staticamente) le variabili globali e i parametri di inizializzazione.- Specified by:
initin interfacejavax.servlet.Servlet- Overrides:
initin classjavax.servlet.GenericServlet- Parameters:
config- la configurazione usata dal servlet container per passare informazioni alla servlet durante l'inizializzazione- Throws:
javax.servlet.ServletException- una eccezione che puo' essere sollevata quando la servlet incontra difficolta'
-
service
protected void service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) throws javax.servlet.ServletException, IOException - Overrides:
servicein classjavax.servlet.http.HttpServlet- Throws:
javax.servlet.ServletExceptionIOException
-
getAllowedCSVCommand
Getter su variabile di classe- Returns:
LinkedList<String>- Elenco delle Command abilitate a generare output CSV
-
getHighlight
Calcola il colore di highlight in Rich Text Format.
Purtroppo, questo formato, sviluppato da Microsoft, non implementa in modo efficace tutti gli attributi di formattazione ed è molto dipendente dall'editor utilizzato per la visualizzazione e dal sistema operativo che lo ospita, per cui le codifiche degli highlight, che, almeno sulla carta, dovevano essere ben definite (v. p.es.), non si comportano come atteso (oppure, l'implementazione richiederebbe maggiore approfondimento).
In ogni caso, questo formato, che pure sembrava un ottimo compromesso fra human readibility, formattazione ricca (appunto) e ampia fruibilitè e portabilità, si rivela in realtà rigido, tutt'altro che "ricco", ormai obsoleto e poco profittevole in termini di investimento di tempo di sviluppo.
Preferibile, pertanto, puntare oggi direttamente su un formato estremamente preciso, come PDF, oppure direttamente su librerie per la generazione in formati piú attuali, proprietari (e.g. .docx) o aperti (e.g. ODF).- Parameters:
riskLevel- livello di rischio da evidenziare- Returns:
- valore di highlight da stampare nel documento
-
getStructureJsonNode
public static String getStructureJsonNode(String tipo, String codice, String codicePadre, String nome, String descr, String lbl1, String txt1, String lbl2, String txt2, String bgColor, String icona, int livello) Genera il nodo JSON
- Parameters:
tipo- valore che serve a differenziare tra tipi diversi di nodi per poter applicare formattazioni o attributi diversicodice- codice del nodo correntecodicePadre- codice del nodo padre del nodo correntenome- etichetta del nododescr- descrizione del nodolbl1- label aggiuntivatxt1- testo relativo alla labellbl2- label aggiuntivatxt2- testo relativo alla labelbgColor- parametro opzionale specificante il colore dei box/nodi in formato esadecimaleicona- parametro opzionale specificante il nome del file da mostrare come stereotipolivello- livello gerarchico del nodo- Returns:
String- il nodo in formato String
-
makeDescrJsonNode
public static String makeDescrJsonNode(ArrayList<?> list, int livello) throws AttributoNonValorizzatoException Genera la descrizione del nodo JSON
- Parameters:
list- struttura vettoriale contenente informazionilivello- livello gerarchico del nodo- Returns:
String- il nodo in formato String- Throws:
AttributoNonValorizzatoException- eccezione che viene propagata se si tenta di accedere a un dato obbligatorio non valorizzato del bean
-