Class ReportCommand
- All Implemented Interfaces:
Command,Constants,Serializable,Comparable<ItemBean>
ReportCommand.java
Implementa la logica per la generazione di informazioni aggregate
inerenti la mappatura dei rischi corruttivi cui possono essere esposti
i processi organizzativi (ROL).
- Author:
- Giovanroberto Torre
- See Also:
-
Field Summary
FieldsFields 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 ArrayList<ProcessBean> computeIndicators(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) Calcola a runtime i valori degli indicatori di rischio tramite l'invocazione di un metodo che a sua volta richiama una serie di altri metodi, ciascuno implementate l'algoritmo di un diverso indicatore di rischio .voidexecute(javax.servlet.http.HttpServletRequest req) Gestisce il flusso principale.voidRaccoglie i valori dell'oggetto ItemBean e li passa a questa classe command.static voidrefreshIndicators(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti dall'anticorruzione trovati in base a una rilevazione il cui identificativo viene accettato come argomento ed i cui figli già contengono i valori degli indicatori di rischio calcolati, cancella tutti i valori degli indicatori di rischio relativi a tutti i processi censiti dall'anticorruzione eventualmente presenti nella tabella dei risultati e inserisce nella stessa tabella i nuovi valori ricevuti tramite il parametro.static ArrayList<ProcessBean> retrieveIndicators(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, int muffler, DBWrapper db) Seleziona da database i valori degli indicatori di rischio tramite una estrazione dati.static LinkedHashMap<ProcessBean, ArrayList<RiskBean>> retrieveMitigatedRisksByProcess(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono al proprio interno i rischi, restituisce una mappa di rischi associati a ciascun processo, indicizzata per il processo stesso, e in cui il valore del PxI del processo, idealmente estensibile a tutti i rischi del processo stesso, viene mitigato, per ogni rischio, tramite la verifica dell'esistenza di misure di mitigazione previste per la mitigazione del rischio stesso.static LinkedHashMap<ProcessBean, ArrayList<RiskBean>> retrieveMonitoratedRisksByProcess(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono al proprio interno i rischi, restituisce una mappa di rischi associati a ciascun processo, indicizzata per il processo stesso, e in cui il valore del PxI del processo, idealmente estensibile a tutti i rischi del processo stesso, viene mitigato, per ogni rischio, tramite la verifica dell'esistenza di misure di mitigazione applicate al rischio stesso.retrieveRisks(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono al proprio interno i rischi, restituisce una mappa di rischi associati a ciascun processo, indicizzata per identificativo di processo, incapsulato in un Wrapper di tipo primitivo.static LinkedHashMap<ProcessBean, ArrayList<RiskBean>> retrieveRisksByProcess(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono al proprio interno i rischi, restituisce una mappa di rischi associati a ciascun processo, indicizzata per il processo stesso.static HashMap<Integer, ArrayList<DepartmentBean>> retrieveStructures(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi nel contesto di una rilevazione, i cui figli non contengono al proprio interno le fasi (e tantomeno, queste, le strutture che le erogano), restituisce una mappa di strutture associate a ciascun processo tramite le sue fasi, indicizzata per identificativo di processo, incapsulato in un Wrapper di tipo primitivo.static HashMap<Integer, ArrayList<DepartmentBean>> retrieveSubjects(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi nel contesto di una rilevazione, i cui figli non contengono al proprio interno le fasi (e tantomeno, queste, i soggetti contingenti che le sovrintendono), restituisce una mappa di soggetti associati a ciascun processo figlio (quindi processo di livello 2, no macro no sub) tramite le sue fasi; la mappa (Dictionary) è indicizzata per identificativo di processo at, incapsulato in un Wrapper di tipo primitivo.Methods inherited from class it.rol.bean.ItemBean
compareTo, equals, getCod1, getCod2, getCod3, getCod4, getCodice, getExtraInfo, getExtraInfo1, getExtraInfo2, getExtraInfo3, getExtraInfo4, getIcona, getId, getInformativa, getLabelWeb, getLivello, getNome, getNomeClasse, getNomeReale, getOrdinale, getPaginaJsp, getUrl, getValue1, getValue1AsInt, getValue2, getValue2AsInt, getValue3, getValue3AsInt, getValue4, getValue4AsInt, hashCode, isPrivato, isUrlInterno, setCod1, setCod2, setCod3, setCod4, setCodice, setExtraInfo, setExtraInfo1, setExtraInfo2, setExtraInfo3, setExtraInfo4, setIcona, setId, setInformativa, setLabelWeb, setLivello, setNome, setNomeClasse, setNomeReale, setOrdinale, setPaginaJsp, setPrivato, setUrl, setUrlInterno, setValue1, setValue2, setValue3, setValue4, toString
-
Field Details
-
LOG
Log per debug in produzione
-
-
Constructor Details
-
ReportCommand
public ReportCommand()Crea una nuova istanza di questa Command
-
-
Method Details
-
init
Raccoglie i valori dell'oggetto ItemBean e li passa a questa classe command.
- Specified by:
initin interfaceCommand- Parameters:
voceMenu- la VoceMenuBean pari alla Command presente.- Throws:
CommandException- se l'attributo paginaJsp di questa command non e' stato valorizzato.
-
execute
Gestisce il flusso principale.
Prepara i bean.
Passa nella Request i valori che verranno utilizzati dall'applicazione.
- Specified by:
executein interfaceCommand- Parameters:
req- la HttpServletRequest contenente la richiesta del client- Throws:
CommandException- se si verifica un problema, tipicamente nell'accesso a campi non accessibili o in qualche altro tipo di puntamento
-
retrieveIndicators
public static ArrayList<ProcessBean> retrieveIndicators(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, int muffler, DBWrapper db) throws CommandException Seleziona da database i valori degli indicatori di rischio tramite una estrazione dati.
Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono i valori degli indicatori di rischio totalizzati, restituisce una ArrayList di macroprocessi dove ogni macroprocesso contiene internamente i suoi processi e questi gli indicatori di rischio i cui valori vengono recuperati da database, ove sono stati memorizzati in base a un pre-calcolo (caching).
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - privi di indicatori di rischiouser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionemuffler- un intero da sottrarre ai valori effettivi degli indicatori (per non alterare i valori, impostare questo parametro pari a 0)db- WebStorage per l'accesso ai dati- Returns:
ArrayList<ProcessBean>- lista di macroprocessi contenenti i relativi figli e, questi, gli indicatori di rischio- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-
computeIndicators
public static ArrayList<ProcessBean> computeIndicators(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) throws CommandException Calcola a runtime i valori degli indicatori di rischio tramite l'invocazione di un metodo che a sua volta richiama una serie di altri metodi, ciascuno implementate l'algoritmo di un diverso indicatore di rischio .
Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti dall'anticorruzione trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono i valori degli indicatori di rischio totalizzati, restituisce una ArrayList di macroprocessi dove ogni macroprocesso contiene internamente i suoi processi e questi gli indicatori di rischio, i cui valori vengono calcolati a runtime.
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - privi di indicatori di rischiouser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionedb- WebStorage per l'accesso ai dati- Returns:
ArrayList<ProcessBean>- lista di macroprocessi contenenti i loro processi figli e, questi, i valori degli indicatori di rischio- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-
retrieveStructures
public static HashMap<Integer,ArrayList<DepartmentBean>> retrieveStructures(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) throws CommandException Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi nel contesto di una rilevazione, i cui figli non contengono al proprio interno le fasi (e tantomeno, queste, le strutture che le erogano), restituisce una mappa di strutture associate a ciascun processo tramite le sue fasi, indicizzata per identificativo di processo, incapsulato in un Wrapper di tipo primitivo.
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - privi di strutture associateuser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionedb- WebStorage per l'accesso ai dati- Returns:
HashMap<Integer, ArrayList<DepartmentBean>>- lista di strutture collegate al processo_at il cui identificativo e' incapsulato in chiave- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-
retrieveSubjects
public static HashMap<Integer,ArrayList<DepartmentBean>> retrieveSubjects(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) throws CommandException Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi nel contesto di una rilevazione, i cui figli non contengono al proprio interno le fasi (e tantomeno, queste, i soggetti contingenti che le sovrintendono), restituisce una mappa di soggetti associati a ciascun processo figlio (quindi processo di livello 2, no macro no sub) tramite le sue fasi; la mappa (Dictionary) è indicizzata per identificativo di processo at, incapsulato in un Wrapper di tipo primitivo.
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - privi di strutture associateuser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionedb- WebStorage per l'accesso ai dati- Returns:
HashMap<Integer, ArrayList<DepartmentBean>>- lista di soggetti collegati al processo_at il cui identificativo e' incapsulato in chiave- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-
retrieveRisks
public static HashMap<Integer,ArrayList<RiskBean>> retrieveRisks(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) throws CommandException Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono al proprio interno i rischi, restituisce una mappa di rischi associati a ciascun processo, indicizzata per identificativo di processo, incapsulato in un Wrapper di tipo primitivo.
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - privi di strutture associateuser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionedb- WebStorage per l'accesso ai dati- Returns:
HashMap<Integer, ArrayList<DepartmentBean>>- lista di strutture collegate al processo_at il cui identificativo e' incapsulato in chiave- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-
retrieveRisksByProcess
public static LinkedHashMap<ProcessBean,ArrayList<RiskBean>> retrieveRisksByProcess(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) throws CommandException Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono al proprio interno i rischi, restituisce una mappa di rischi associati a ciascun processo, indicizzata per il processo stesso.
Attenzione: nel momento dell'implementazione di questo metodo, non risultano processi con nomi duplicati, però in realtà i processi potrebbero avere nomi uguali persino all'interno della stessa rilevazione (non c'è nessun vincolo sull'unicità del nome del processo nella relativa tabella del db), per cui si è ritenuto opportuno gestire questa potenziale collisione effettuando l'override dei metodi di comparazione nel bean del processo e poi utilizzare direttamente il processo stesso come chiave. Si può valutare, in seguito, di sostituire completamente con il presente metodo con l'altro analogo, che imposta come chiave l'identificativo del processo (quello sí certamente univoco).
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - privi di strutture associateuser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionedb- WebStorage per l'accesso ai dati- Returns:
HashMap<ProcessBean, ArrayList<RiskBean>>- lista di rischi collegati al processo_at incapsulato in chiave- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-
retrieveMitigatedRisksByProcess
public static LinkedHashMap<ProcessBean,ArrayList<RiskBean>> retrieveMitigatedRisksByProcess(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) throws CommandException Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono al proprio interno i rischi, restituisce una mappa di rischi associati a ciascun processo, indicizzata per il processo stesso, e in cui il valore del PxI del processo, idealmente estensibile a tutti i rischi del processo stesso, viene mitigato, per ogni rischio, tramite la verifica dell'esistenza di misure di mitigazione previste per la mitigazione del rischio stesso.
Attenzione: il ProcessBean viene utilizzato qui come chiave grazie all'override, nella classe stessa, dei metodi di comparazione nel bean del processo (che mi sono dovuto scrivere).
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - privi di rischi associatiuser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionedb- WebStorage per l'accesso ai dati- Returns:
HashMap<ProcessBean, ArrayList<RiskBean>>- lista di rischi, con PxI mitigato in funzione delle misure previste, collegati al processo_at incapsulato in chiave- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-
retrieveMonitoratedRisksByProcess
public static LinkedHashMap<ProcessBean,ArrayList<RiskBean>> retrieveMonitoratedRisksByProcess(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) throws CommandException Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti a fini anticorruttivi trovati in base a una rilevazione il cui identificativo viene accettato come argomento, ma i cui figli non contengono al proprio interno i rischi, restituisce una mappa di rischi associati a ciascun processo, indicizzata per il processo stesso, e in cui il valore del PxI del processo, idealmente estensibile a tutti i rischi del processo stesso, viene mitigato, per ogni rischio, tramite la verifica dell'esistenza di misure di mitigazione applicate al rischio stesso.
Nel ProcessBean ho implementato i metodi che permettono di utilizzarlo come chiave nelle mappe.
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - privi di rischi associatiuser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionedb- WebStorage per l'accesso ai dati- Returns:
HashMap<ProcessBean, ArrayList<RiskBean>>- lista di rischi, con PxI mitigato in funzione delle misure applicate, collegati al processo_at incapsulato in chiave- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-
refreshIndicators
public static void refreshIndicators(ArrayList<ProcessBean> mats, PersonBean user, String codeSurvey, DBWrapper db) throws CommandException Ricevuta una ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti dall'anticorruzione trovati in base a una rilevazione il cui identificativo viene accettato come argomento ed i cui figli già contengono i valori degli indicatori di rischio calcolati, cancella tutti i valori degli indicatori di rischio relativi a tutti i processi censiti dall'anticorruzione eventualmente presenti nella tabella dei risultati e inserisce nella stessa tabella i nuovi valori ricevuti tramite il parametro.
Se si verifica un problema nell'inserimento, il risultato sarà una cancellazione, perché le due operazioni di scrittura non sono in transazione; ciò è voluto in quanto, anche se si eliminano i valori e non se ne inseriscono di nuovi, si stanno solo eliminando valori di caching pre-calcolati e, by default, il software non effettua questa operazione di ricalcolo, ma mostra i valori calcolati in precedenza.
Eventualmente, in futuro si potrebbe valutare di rendere atomiche la cancellazione e il successivo inserimento; ciò può essere fatto in diversi modi:- effettuare prima un test sul buon esito dell'inserimento tramite un accodamento delle nuove tuple e poi di effettuare la cancellazione totale e, infine, il nuovo inserimento;
- procedere tramite un aggiornamento delle righe modificate piuttosto che tramite una cancellazione non parametrica (la DELETE non parametrica, usata attualmente nel metodo di eliminazione, va sulla tabella, non sulla riga);
- mettere nella stessa transazione (nel DBWrapper) prima la cancellazione e poi l'inserimento
- Parameters:
mats- struttura contenente tutti i macroprocessi - e relativi processi figli - corredati di indicatori di rischio valorizzatiuser- utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol farecodeSurvey- il codice della rilevazionedb- WebStorage per l'accesso ai dati- Throws:
CommandException- se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
-