Package it.rol.command
Class MeasureCommand
java.lang.Object
it.rol.bean.ItemBean
it.rol.command.MeasureCommand
- All Implemented Interfaces:
Command,Constants,Serializable,Comparable<ItemBean>
MeasureCommand.java (ms)
Implementa la logica per la gestione delle misure di mitigazione
dei rischi corruttivi (ROL).
Created on Tue Mar 5 12:27:01 CET 2024
- 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 InterviewBeancomputePIMitigated(String PIN, ArrayList<RiskBean> mitigatingRisks) Implementa l'algoritmo di ricalcolo del PxI complessivo a partire dai valori dei PxI dei rischi, calmierati e arrotondati.voidexecute(javax.servlet.http.HttpServletRequest req) Gestisce il flusso principale.static ArrayList<MeasureBean> filter(ArrayList<MeasureBean> measures) Dato un elenco complessivo di misure, restituisce solo quelle che hanno inseriti i dettagli del monitoraggio, ovvero solo le misure monitorate.voidRaccoglie i valori dell'oggetto ItemBean e li passa a questa classe command.static StringloadParams(String part, javax.servlet.http.HttpServletRequest req, HashMap<String, LinkedHashMap<String, String>> formParams) Valorizza per riferimento una mappa contenente tutti i valori parametrici riscontrati sulla richiesta.static InterviewBeanmitigate(InterviewBean indicator, ArrayList<MeasureBean> measures) Implementa l'algoritmo di mitigazione in funzione delle misure applicate.static ArrayList<MeasureBean> monitor(PersonBean user, CodeBean survey, DBWrapper db, ArrayList<MeasureBean> measures) Implementa l'algoritmo di valutazione dell'applicazione delle misure in funzione del monitoraggio.static MeasureBeanretrieveMeasure(PersonBean user, String code, CodeBean survey, DBWrapper db) Estrae i dettagli di una misura (compresi i dettagli necessari al monitoraggio) dato il codice e la rilevazione.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
-
MeasureCommand
public MeasureCommand()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
-
loadParams
public static String loadParams(String part, javax.servlet.http.HttpServletRequest req, HashMap<String, LinkedHashMap<String, throws CommandException, AttributoNonValorizzatoExceptionString>> formParams) Valorizza per riferimento una mappa contenente tutti i valori parametrici riscontrati sulla richiesta. Nel caso si stia gestendo i parametri della misura, la Capofila1 Livello1 resta obbligatoria; qualora però la Capofila1 Livello2 sia vuota, l'utente sta comunicando che vuole che la misura di cui ha valorizzato gli estremi venga ricreata per tutte le strutture Livello2 sottostanti alla Capofila1 Livello1 stessa. In tal caso, il metodo restituisce l'id della Capofila1 Livello1 (nel formato thruId.id-codice) in modo che, a valle del richiamo, avvenga l'opportuna duplicazione delle occorrenze delle misure; se invece la misura deve essere associata a una Capofila1 Livello2 specifica (e singola) il metodo restituisce -1.- Parameters:
part- la sezione corrente del sitoreq- la HttpServletRequest contenente la richiesta del clientformParams- mappa da valorizzare per riferimento (ByRef)- Returns:
String- il valore dell'ID della Capofila1 Liv1 (se Liv2 e' vuota) oppure -1 se C1 Liv2 e' valorizzata- Throws:
CommandException- se si verifica un problema nella gestione degli oggetti data o in qualche tipo di puntamentoAttributoNonValorizzatoException- se si fa riferimento a un attributo obbligatorio di bean che non viene trovato
-
retrieveMeasure
public static MeasureBean retrieveMeasure(PersonBean user, String code, CodeBean survey, DBWrapper db) throws WebStorageException, CommandException Estrae i dettagli di una misura (compresi i dettagli necessari al monitoraggio) dato il codice e la rilevazione.
- Parameters:
user- utente loggatocode- codice della misura cercatasurvey- oggetto rilevazionedb- databound gia' istanziato- Returns:
MeasureBean- misura, da registro, desiderata- Throws:
WebStorageException- se si verifica un problema a livello di query o di estrazioneCommandException- se si verifica un problema nel recupero di valori o in qualche altro tipo di puntamento
-
filter
Dato un elenco complessivo di misure, restituisce solo quelle che hanno inseriti i dettagli del monitoraggio, ovvero solo le misure monitorate.- Parameters:
measures- elenco complessivo di misure di prevenzione- Returns:
- lista vettoriale ottenuta scartando dall'elenco le misure non monitorate
-
mitigate
public static InterviewBean mitigate(InterviewBean indicator, ArrayList<MeasureBean> measures) throws CommandException Implementa l'algoritmo di mitigazione in funzione delle misure applicate. Ricevuto un indicatore contenente il valore del PxI di un rischio ed una lista di misure applicate al rischio stesso, ricalcola il valore del PxI sottraendo una quantità predefinita per ogni misura trovata, in funzione del carattere della misura stessa. L'operazione è possibile data una funzione di trasformazione che associa ad ogni possibile valore del PxI un numero intero. La differenza tra il valore numerico del PxI trasformato e la somma delle misure può essere sufficiente a determinare un decremento del valore del PxI originario, oppure no. Ciò dipende dal fatto che sia stato raggiunto o meno l'intero inferiore rispetto a quello del PxI originale trasformato in numero. Esempio: se il PxI originale è MEDIO, esso in base alla funzione di trasformazione vale 2; se a seguito dell'applicazione delle misure si ottiene una somma algebrica di 1.5 o 1.0 allora il rischio è stato ridotto, passando a MEDIO a BASSO; altrimenti, se la parte intera non è strettamente minore di 2, il rischio resta MEDIO. Sulla base di questo esempio si evince che l'algoritmo considera sempre la parte intera, mai la parte decimale.- Parameters:
indicator- oggetto contenente il valore del PxI assegnato al rischiomeasures- lista di misure applicate al rischio- Returns:
InterviewBean- oggetto contenente il valore del PxI del rischio, eventualmente mitigato- Throws:
CommandException- se si verifica un problema nel recupero di un attributo del bean o in qualche operazione o puntamento
-
computePIMitigated
public static InterviewBean computePIMitigated(String PIN, ArrayList<RiskBean> mitigatingRisks) throws CommandException Implementa l'algoritmo di ricalcolo del PxI complessivo a partire dai valori dei PxI dei rischi, calmierati e arrotondati. Dato in input un elenco di rischi, ciascuno che deve contenere un valore di PxI del rischio mitigato in funzione delle misure applicate, ottiene un valore unico del PxI per il processo cui i rischi calmierati sono collegati; il metodo può essere applicato alla fase della stima o a quella del monitoraggio, in quanto l'algoritmo di ricalcolo resta il medesimo e il nome del PxI (stima o monitoraggio) viene passato come parametro.- Parameters:
PIN- il nome dell'indicatore (PxI stima o PxI effettivo)mitigatingRisks- elenco di rischi cui sono state applicate le misure di mitigazione- Returns:
InterviewBean- oggetto contenente il livello di rischio dell'indice PxI, calcolato dall'algoritmo in base ai valori dei PxI calmierati ricevuti- Throws:
CommandException- se si verifica un problema nel recupero di un attributo di un bean o un puntamento erroneo
-
monitor
public static ArrayList<MeasureBean> monitor(PersonBean user, CodeBean survey, DBWrapper db, ArrayList<MeasureBean> measures) throws CommandException Implementa l'algoritmo di valutazione dell'applicazione delle misure in funzione del monitoraggio. L'algoritmo funziona nel seguente modo:Cicla sulle misure |_Per ogni misura... |_Verifica se la misura ha fasi |_Se ha fasi... |_Verifica se le fasi hanno indicatori |_Se hanno indicatori... |_Verifica che ci sia uno e un solo indicatore master |_Se c'è uno e un solo indicatore master... |_Verifica se ci sono misurazioni associate |_Se ci sono misurazioni associate... |_Considera l'ultima misurazione |_Se l'ultima misurazione ha raggiunto il target dell'indicatore master... |-Allora la misura è applicata |-Altrimenti la misura non è applicataRegole di business. Per poter valutare l'applicazione della misura:- deve esistere un indicatore master applicato a una fase della misura
- non possono esistere piú indicatori master su una sola misura
- non può esistere una misura senza un indicatore master
- deve esistere almeno una misurazione sull'indicatore master
- il valore dell'ultima misurazione deve coincidere con (o superare) il target dell'indicatore master
- Parameters:
user- utente loggatosurvey- estremi della rilevazione di interessedb- istanza di DataBoundmeasures- lista di misure applicate al rischio- Returns:
ArrayList<MeasureBean>-- Throws:
CommandException- se si verifica un problema nel recupero di un attributo del bean o in qualche operazione o puntamento
-