Class ProcessCommand

java.lang.Object
it.rol.bean.ItemBean
it.rol.command.ProcessCommand
All Implemented Interfaces:
Command, Constants, Serializable, Comparable<ItemBean>

public class ProcessCommand extends ItemBean implements Command, Constants

ProcessCommand.java
Implementa la logica per la gestione dei processi censiti dall'anticorruzione ai fini della valutazione del rischio corruttivo, on line (ROL).


Implements the logic for managing processes for the purposes of assessing corruption risk online (ROL).

Author:
Giovanroberto Torre
See Also:
  • Field Details

    • LOG

      protected static Logger LOG
      Log
  • Constructor Details

    • ProcessCommand

      public ProcessCommand()
      Crea una nuova istanza di ProcessCommand
  • Method Details

    • init

      public void init(ItemBean voceMenu) throws CommandException

      Raccoglie i valori dell'oggetto ItemBean e li passa a questa classe command.

      Specified by:
      init in interface Command
      Parameters:
      voceMenu - la VoceMenuBean pari alla Command presente.
      Throws:
      CommandException - se l'attributo paginaJsp di questa command non e' stato valorizzato.
    • execute

      public void execute(javax.servlet.http.HttpServletRequest req) throws CommandException
      • Gestisce il flusso principale.
      • Prepara i bean.
      • Passa nella Request i valori che verranno utilizzati dall'applicazione.

      Manages the main flow.

      Prepares the beans.

      Passes the values that will be used by the application to the Request.

      Specified by:
      execute in interface Command
      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 void loadParams(String part, javax.servlet.http.HttpServletRequest req, HashMap<String,LinkedHashMap<String,String>> formParams) throws CommandException, AttributoNonValorizzatoException
      Valorizza per riferimento una mappa contenente tutti i valori parametrici riscontrati sulla richiesta.
      Parameters:
      part - la sezione corrente del sito
      req - la HttpServletRequest contenente la richiesta del client
      formParams - mappa da valorizzare per riferimento (ByRef)
      Throws:
      CommandException - se si verifica un problema nella gestione degli oggetti data o in qualche tipo di puntamento
      AttributoNonValorizzatoException - se si fa riferimento a un attributo obbligatorio di bean che non viene trovato
    • retrieveMacroAtBySurvey

      public static ArrayList<ProcessBean> retrieveMacroAtBySurvey(PersonBean user, String codeSurvey, DBWrapper db) throws CommandException

      Restituisce un ArrayList (albero, vista gerarchica) di tutti macroprocessi censiti dall'anticorruzione trovati in base a una rilevazione il cui identificativo viene accettato come argomento; ogni macroprocesso contiene internamente i suoi processi e questi gli eventuali sottoprocessi.

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      codeSurvey - il codice della rilevazione
      db - WebStorage per l'accesso ai dati
      Returns:
      ArrayList<ProcessBean> - lista di macroprocessi recuperati
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveProcessAtBySurvey

      public static ArrayList<ProcessBean> retrieveProcessAtBySurvey(PersonBean user, String codeSurvey, DBWrapper db) throws CommandException

      Restituisce un ArrayList (albero, vista gerarchica) di tutti processi figli di macroprocessi censiti dall'anticorruzione nel contesto di una data rilevazione il cui identificativo viene accettato come argomento; ogni processo contiene internamente gli estremi del padre, dei figli e degli indicatori di rischio, se è stato oggetto di indagine (intervista).

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      codeSurvey - il codice della rilevazione
      db - WebStorage per l'accesso ai dati
      Returns:
      ArrayList<ProcessBean> - lista di macroprocessi recuperati
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveInputs

      public static ArrayList<ItemBean> retrieveInputs(PersonBean user, int id, int level, String codeSurvey, DBWrapper db) throws CommandException

      Restituisce un ArrayList di tutti gli input trovati in base all' identificativo di un processo o un sottoprocesso anticorruttivo e a quello di una rilevazione (per le regole di business implementate gli input possono essere collegati direttamente solo al processo anticorruttivo o al sottoprocesso anticorruttivo, non al macroprocesso anticorruttivo, i cui input sono costituiti dall'unione di tutti gli input collegati ai suoi discendenti).

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      id - identificativo del processo o del sottoprocesso (si capisce dal livello)
      level - valore specificante la tabella in cui cercare l'identificativo (2 = processo_at | 3 = sottoprocesso_at)
      codeSurvey - il codice della rilevazione
      db - istanza di WebStorage per l'accesso ai dati
      Returns:
      ArrayList<ItemBean> - lista di input recuperati
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveActivities

      public static ArrayList<ActivityBean> retrieveActivities(PersonBean user, int id, int level, String codeSurvey, DBWrapper db) throws CommandException

      Restituisce un ArrayList di tutte le fasi di un processo (o sottoprocesso) anticorruttivo nel contesto di una rilevazione.

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      id - identificativo del processo o del sottoprocesso (si capisce dal livello)
      level - valore specificante la tabella in cui cercare l'identificativo (2 = processo_at | 3 = sottoprocesso_at)
      codeSurvey - il codice della rilevazione
      db - istanza di WebStorage per l'accesso ai dati
      Returns:
      ArrayList<ActivityBean> - lista di fasi recuperate
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveOutputs

      public static ArrayList<ItemBean> retrieveOutputs(PersonBean user, int id, int level, String codeSurvey, DBWrapper db) throws CommandException

      Restituisce un ArrayList di tutti gli output trovati in base all' identificativo di un processo o un sottoprocesso anticorruttivo e a quello di una rilevazione.

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      id - identificativo del processo o del sottoprocesso (si capisce dal livello)
      level - valore specificante la tabella in cui cercare l'identificativo (2 = processo_at | 3 = sottoprocesso_at)
      codeSurvey - il codice della rilevazione
      db - istanza di WebStorage per l'accesso ai dati
      Returns:
      ArrayList<ItemBean> - lista di output recuperati
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveRisks

      public static ArrayList<RiskBean> retrieveRisks(PersonBean user, int id, int level, String codeSurvey, DBWrapper db) throws CommandException

      Restituisce un ArrayList di tutti i rischi trovati in base all' identificativo di un processo o un sottoprocesso anticorruttivo e a quello di una rilevazione.

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      id - identificativo del processo o del sottoprocesso (si capisce dal livello)
      level - valore specificante la tabella in cui cercare l'identificativo (2 = processo_at | 3 = sottoprocesso_at)
      codeSurvey - il codice della rilevazione
      db - istanza di WebStorage per l'accesso ai dati
      Returns:
      ArrayList<RiskBean> - lista di rischi recuperati
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveInterviews

      public static ArrayList<InterviewBean> retrieveInterviews(PersonBean user, int id, int level, String codeSurvey, DBWrapper db) throws CommandException

      Restituisce un ArrayList di tutte le interviste che hanno fatto riferimento al processo di cui viene passato l'identificativo ed il livello, nel contesto di una data rilevazione.
      Per ogni intervista rivolta al processo di dato id, calcola e aggiunge gli indicatori all'intervista stessa.

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      id - identificativo del processo o del sottoprocesso (si capisce dal livello)
      level - valore specificante la tabella in cui cercare l'identificativo (2 = processo_at | 3 = sottoprocesso_at)
      codeSurvey - il codice della rilevazione
      db - istanza di WebStorage per l'accesso ai dati
      Returns:
      ArrayList<InterviewBean> - lista di interviste recuperate
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveIndicators

      public static HashMap<String,InterviewBean> retrieveIndicators(PersonBean user, HashMap<String,InterviewBean> indicators, int id, int level, String codeSurvey, DBWrapper db) throws CommandException

      Prende in input un HashMap di tutti gli indicatori, con i valori calcolati in riferimento al processo censito dall'anticorruzione di cui viene passato l'identificativo ed il livello, nel contesto di una data rilevazione, recupera le note al giudizio sintetico del PxI e le aggiunge al relativo indicatore, aggiornando poi la mappa.
      Il valore del PxI è uno solo anche nel caso in cui il processo di dato id sia stato esaminato nel contesto di piú di un'intervista, producendo quindi valori molteplici, perché la mappa che accetta come argomento contiene già il valore individuato tramite l'applicazione dell'algoritmo "In dubio pro peior", che sceglie sempre il valore peggiore (ovvero il rischio piú alto) per ogni serie di valori contrastanti.

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      indicators - mappa di indicatori calcolati a runtime
      id - identificativo del processo o del sottoprocesso (si capisce dal livello)
      level - valore specificante la tabella in cui cercare l'identificativo (2 = processo_at | 3 = sottoprocesso_at)
      codeSurvey - il codice della rilevazione
      db - istanza di WebStorage per l'accesso ai dati
      Returns:
      HashMap<String, InterviewBean> - lista di indicatori recuperati per il processo, con il PxI corredato di note
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveProcess

      public static HashMap<String,InterviewBean> retrieveProcess(PersonBean user, int idP, int liv, ConcurrentHashMap<String,ArrayList<?>> processElements, String codeSur, DBWrapper db) throws CommandException

      In rispetto del paradigma DRY (Don't Repeat Yourself), centralizza il codice che effettua il recupero di tutte le liste e le informazioni necessarie per costruire la pagina dei dettagli di un processo.

      Inoltre, il recupero delle informazioni viene svolto non in modo sequenziale ma parallelo, attraverso l'avviamento di threads separati, dedicati ciascuno al recupero di informazioni omogenee, al fine di velocizzare i tempi di computazione.

      Parameters:
      user - utente loggato; viene passato ai metodi del DBWrapper per controllare che abbia i diritti di fare quello che vuol fare
      idP - identificativo del processo o del sottoprocesso (si capisce dal livello)
      liv - valore specificante la tabella in cui cercare l'identificativo (2 = processo_at | 3 = sottoprocesso_at)
      processElements - generica mappa in cui devono essere valorizzate, per riferimento, le liste di items afferenti al processo
      codeSur - il codice della rilevazione
      db - istanza di WebStorage per l'accesso ai dati
      Returns:
      HashMap<String, InterviewBean> - lista di indicatori recuperati per il processo, con il PxI corredato di note
      Throws:
      CommandException - se si verifica un problema nell'estrazione dei dati, o in qualche tipo di puntamento
    • retrieveProcess

      public static void retrieveProcess(PersonBean user, ArrayList<ItemBean> listaInput, ArrayList<ActivityBean> listaFasi, ArrayList<ItemBean> listaOutput, ArrayList<RiskBean> listaRischi, ArrayList<InterviewBean> listaInterviste, ConcurrentHashMap<String,ArrayList<?>> processElements, CodeBean survey) throws CommandException
      Valorizza per riferimento una mappa sincronizzata contenente tutti gli elementi appartenenti ad uno stesso processo.
      Parameters:
      user - Utente corrente
      listaInput - Elenco input di processo
      listaFasi - Elenco fasi in cui e' strutturato il processo
      listaOutput - Elenco output di processo
      listaRischi - Elenco rischi cui il processo e' esposto
      listaInterviste - Elenco interviste in cui il processo e' stato oggetto di indagine
      processElements - Dictionary da valorizzare ByRef
      survey - Oggetto rilevazione
      Throws:
      CommandException - se si verifica un puntamento a null
    • decant

      public static LinkedHashMap<Integer,ProcessBean> decant(Vector<ProcessBean> processes) throws CommandException

      Travasa un Vector di ProcessBean in una corrispondente struttura di tipo Dictionary, LinkedHashMap, in cui le chiavi sono rappresentate da oggetti Wrapper di tipi primitivi interi (Integer) e i valori sono rappresentati dai corrispettivi elementi del Vector.

      È utile per un accesso piú diretto agli oggetti memorizzati nella struttura rispetto a quanto garantito dai Vector.

      Parameters:
      processes - Vector di ProcessBean da travasare in HashMap
      Returns:
      LinkedHashMap<Integer, ProcessBean> - Struttura di tipo Dictionary, o Mappa ordinata, avente per chiave un Wrapper dell'identificativo dell'oggetto, e per valore quest'ultimo
      Throws:
      CommandException - se si verifica un problema nell'accesso all'id di un oggetto, nello scorrimento di liste o in qualche altro tipo di puntamento
    • decant

      Travasa una struttura vettoriale di aree di rischio in una corrispondente struttura LinkedHashMap di tipo Dictionary, in cui le chiavi sono rappresentate dalle aree stesse e i valori sono rappresentati dai macroprocessi aggregati da ciascuna di esse.

      È utile per un accesso piú diretto agli oggetti memorizzati nella struttura rispetto a quanto garantito dalla struttura vettoriale (in cui bisogna, per ogni area, scorrere tutti i macroprocessi in essa contenuti).

      Parameters:
      areas - ArrayList di ProcessBean (aree) contenenti ciascuna una struttura vettoriale di altri ProcessBean (macroprocessi) da travasare in HashMap
      Returns:
      LinkedHashMap<ProcessBean, ArrayList<ProcessBean>> - Struttura di tipo Mappa ordinata avente per chiave un oggetto rappresentante l'area e per valore l'elenco dei suoi macroprocessi
      Throws:
      CommandException - se si verifica un problema nell'accesso all'id di un oggetto, nello scorrimento di liste o in qualche altro tipo di puntamento
    • decant

      public static RiskBean decant(AbstractList<RiskBean> risks, int riskId) throws CommandException

      Estrae da una struttura di rischi, uno di essi, identificato a partire da un identificativo, passato come parametro, oppure null, se il rischio non è stato identificato.

      Parameters:
      risks - struttura vettoriale di RiskBean in cui individuare l'oggetto di interesse
      riskId - identificativo del rischio corruttivo cercato
      Returns:
      RiskBean - Rischio cercato, oppure null (se non e' stato trovato)
      Throws:
      CommandException - se si verifica un problema nell'accesso all'id di un oggetto, nello scorrimento di liste o in qualche altro tipo di puntamento
    • decantOutputs

      public static ArrayList<ItemBean> decantOutputs(ArrayList<ProcessBean> outputs) throws CommandException

      Travasa una struttura vettoriale ordinata di output, incapsulati sotto forma di processi (ProcessBean), in una struttura vettoriale ordinata di output, rappresentati come oggetti generici (ItemBean).

      È utile per un accesso piú generale agli oggetti memorizzati nella struttura rispetto a quanto garantito da oggetti specifici come i ProcessBean.

      Parameters:
      outputs - Struttura vettoriale di ProcessBean da travasare in ItemBean
      Returns:
      ArrayList<ItemBean> - Struttura di ItemBean in cui sono stati travasati i valori dei ProcessBean
      Throws:
      CommandException - se si verifica un problema nell'accesso all'id di un oggetto, nello scorrimento di liste o in qualche altro tipo di puntamento
    • filter

      public static ArrayList<ItemBean> filter(ArrayList<ItemBean> allObjects, ArrayList<ItemBean> someObject)
      Dato un elenco complessivo di oggetti e un elenco dato di oggetti, scarta dall'elenco complessivo gli oggetti presenti nell'elento dato.
      Parameters:
      allObjects - elenco complessivo di oggetti
      someObject - elenco specifico di oggetti
      Returns:
      ArrayList<ItemBean> - lista vettoriale ottenuta scartando dall'elenco maggiore gli elementi dell'elenco minore
    • printJson

      public static void printJson(javax.servlet.http.HttpServletRequest req, AbstractList<ProcessBean> proc, String filename, ItemBean options) throws CommandException

      Gestisce la creazione di un file JSON formattato per la libreria orgchart.js (versione 1.0.5) contenente le informazioni relative alla gerarchia dei macroprocessi censiti dall'anticorruzione.

      Parameters:
      req - HttpServletRequest per recuperare la path assoluta della web application
      proc - lista gerarchica dei processi da rappresentare
      filename - nome del file json da generare, parametrizzato
      options - opzioni di formattazione aggiuntive
      Throws:
      CommandException - se si verifica un puntamento a null o in genere nei casi in cui nella gestione del flusso informativo di questo metodo si verifica un problema