Package it.rol.db

Class DBWrapper

All Implemented Interfaces:
Constants, Query, Serializable

public class DBWrapper extends QueryImpl

DBWrapper.java è la classe che:

  • implementa l'accesso al database utilizzato dall'applicazione Risk Mapping Software (ROL-RMS) nonché
  • l'esecuzione delle query di selezione e la gestione dei risultati restituiti, che impacchetta in oggetti di tipo JavaBean e restituisce al chiamante.
  • Gestisce anche l'esecuzione delle query di scrittura (inserimento, aggiornamento, eliminazione) che effettua su valori ricevuti in input in strutture di tipo Map-Dictionary.

Author:
Giovanroberto Torre
See Also:
  • Field Details

    • LOG

      protected static Logger LOG

      Logger della classe per scrivere i messaggi di errore. All logging goes through this logger.

      Non è privata ma Default (friendly) per essere visibile negli oggetti ovverride implementati da questa classe.

    • rol_manager

      protected static DataSource rol_manager

      Connessione db postgres di pol.

  • Constructor Details

    • DBWrapper

      public DBWrapper() throws WebStorageException

      Costruttore. Prepara le connessioni.

      Viene usata l'interfaccia DataSource per ottenere le connessioni.

      Usa il pattern Singleton per evitare di aprire connessioni inutili in caso di connessioni già aperte.

      Throws:
      WebStorageException - in caso di mancata connessione al database per errore password o dbms down
      See Also:
  • Method Details

    • getSurvey

      public CodeBean getSurvey(int idSurvey, int getAll) throws WebStorageException

      Seleziona i dati della rilevazione.

      A seconda del valore dei parameri ricevuti, assume i seguenti comportamenti:

      se viene passato l'id rilevazione sul primo e secondo parametro
      restituisce i dati della specifica rilevazione, avente tale valore come identificativo,
      se viene passato un valore qualunque sul primo parametro e -1 sul secondo parametro
      restituisce i dati dell'ultima rilevazione che ha trovato, in base all'ordine di data_rilevazione

      Ritorna un CodeBean rappresentante la rilevazione desiderata, oppure quella che si trova in testa alla lista di rilevazioni ordinate per data rilevazione discendente.

      Parameters:
      idSurvey - intero rappresentante l'identificativo dell rilevazione desiderato (oppure un valore qualunque se non si cerca una specifica rilevazione)
      getAll - intero rappresentante il valore convenzionale -1 se si desidera ottenere l'ultima rilevazione (o un valore qualunque se si cerca una specifica rilevazione)
      Returns:
      CodeBean - CodeBean rappresentante la rilevazione rispondente ai criteri di selezione
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nell'accesso al db o in qualche tipo di puntamento
    • getSurveys

      public ArrayList<CodeBean> getSurveys(int idSurvey, int getAll) throws WebStorageException

      Seleziona i dati di una o piú rilevazioni.

      A seconda del valore dei parameri ricevuti, assume i seguenti comportamenti:

      se viene passato l'id rilevazione sul primo e secondo parametro
      restituisce una struttura vettoriale contenente un oggetto valorizzato con i dati della specifica rilevazione, avente tale valore come identificativo,
      se viene passato un valore qualunque sul primo parametro e -1 sul secondo parametro
      restituisce una struttura vettoriale contenente un oggetto valorizzato per ogni rilevazione che ha trovato, in base all'ordine specificato nella query

      Ritorna un ArrayList di CodeBean rappresentante la rilevazione desiderata, oppure tutte le rilevazioni trovate, ordinate per ordine specificato nella query.

      Parameters:
      idSurvey - intero rappresentante l'identificativo dell rilevazione desiderato (oppure un valore qualunque se non si cerca una specifica rilevazione)
      getAll - intero rappresentante il valore convenzionale -1 se si desidera ottenere l'ultima rilevazione (o un valore qualunque se si cerca una specifica rilevazione)
      Returns:
      ArrayList<CodeBean> - ArrayList di CodeBean rappresentante la/le rilevazione/i rispondente/i ai criteri di selezione
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nell'accesso al db o in qualche tipo di puntamento
    • getAree

      public ArrayList<ProcessBean> getAree(PersonBean user, CodeBean survey) throws WebStorageException

      Seleziona la lista delle aree di rischio collegate alla rilevazione passata come parametro, corredate di macroprocessi ad esse aggregati.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione rispetto a cui si vogliono recuperare le strutture
      Returns:
      ArrayList<ProcessBean> - ArrayList rappresentante l'elenco delle aree di rischio trovate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nell'accesso al db o in qualche tipo di puntamento
    • getStructures

      public ArrayList<DepartmentBean> getStructures(PersonBean user, CodeBean survey) throws WebStorageException

      Data una rilevazione, restituisce la lista gerarchica delle strutture rilevate.

      Calcola il numero totale di nodi subordinati in base al seguente algoritmo:

      strutture di IV livello
      0
      strutture di III livello
      num.nodi subordinati = num.figli diretti
      strutture di II livello
      num.nodi subordinati = num.figli diretti + num.figli di figli
      strutture di I livello
      num.nodi subordinati = num.figli diretti + num.figli II livello + num.figli III livello

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione rispetto a cui si vogliono recuperare le strutture
      Returns:
      ArrayList<DepartmentBean> - ArrayList di strutture coinvolte nel contesto della rilevazione
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getStructure

      public DepartmentBean getStructure(PersonBean user, int id, byte level, String codeSurvey) throws WebStorageException

      Dato un id e un livello, restituisce una struttura selezionata in base a quell'id nella tabella identificata in base al livello.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      id - identificativo della struttura che si vuol recuperare
      level - identificativo dell'insieme in cui ricercare la struttura
      codeSurvey - riservato
      Returns:
      DepartmentBean - la struttura cercata
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getSubject

      public DepartmentBean getSubject(PersonBean user, int idSubject, CodeBean survey) throws WebStorageException

      Dato il suo id, restituisce un soggetto contingente (ente esterno, o soggetto interessato).

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idSubject - identificativo del soggetto contingente cercato
      survey - oggetto contenente i dati della rilevazione
      Returns:
      DepartmentBean - il soggetto contingente cercato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getSubjects

      public Vector<DepartmentBean> getSubjects(PersonBean user, int idActivity, CodeBean survey) throws WebStorageException

      Dato un identificativo di un'attività, restituisce una lista di soggetti contingenti (enti esterni o soggetti interessati) collegati ad essa.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idActivity - identificativo dell'attivita' cui il soggetto contingente e' collegato
      survey - oggetto contenente i dati della rilevazione
      Returns:
      Vector<DepartmentBean> - elenco di soggetti contingenti cercati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getStructures

      public HashMap<Integer,ArrayList<DepartmentBean>> getStructures(PersonBean user, ArrayList<ProcessBean> mats, CodeBean survey) throws WebStorageException

      Dato in input un elenco vettoriale di macroprocessi censiti dall'anticorruzione, contenenti al proprio interno i rispettivi processi figli, estrae un elenco di strutture collegate a ciascun processo figlio e lo inserisce in una mappa (Dictionary) in cui le chiavi sono costituite dagli identificativi dei processi figli e i valori dalle strutture rispettivamente collegate ai processi stessi. Le strutture vengono recuperate in base al collegamento con le fasi in cui sono articolati i processi.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      mats - elenco contenente tutti i macroprocessi - e relativi processi figli - privi di strutture collegate
      survey - oggetto contenente i dati della rilevazione
      Returns:
      HashMap<Integer, ArrayList<DepartmentBean>> - la tabella contenente le strutture indicizzate per identificativo di processo
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getSubjects

      Dato in input un elenco vettoriale di macroprocessi censiti dall'anticorruzione, contenenti al proprio interno i rispettivi processi figli, estrae un elenco di soggetti contingenti collegati a ciascun processo figlio e lo inserisce in una mappa (Dictionary) in cui le chiavi sono costituite dagli identificativi dei processi figli e i valori dai soggetti rispettivamente collegati ai processi stessi. Le strutture vengono recuperate in base al collegamento con le fasi in cui sono articolati i processi.

      I soggetti contingenti vengono anche detti "soggetti terzi" o "soggetti interessati".

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      mats - elenco contenente tutti i macroprocessi - e relativi processi figli - privi di soggetti contingenti
      survey - oggetto contenente i dati della rilevazione
      Returns:
      HashMap<Integer, ArrayList<DepartmentBean>> - la tabella contenente i soggetti indicizzati per identificativo di processo
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getSubjects

      public ArrayList<ItemBean> getSubjects(PersonBean user, boolean master, boolean getAll, CodeBean survey) throws WebStorageException

      Estrae un elenco di tutti i soggetti contingenti trovati nella rilevazione corrente:

      • filtrandoli in base al loro essere master (se true) o slave (se false) se il III parametro (getAll) è false, oppure
      • indipendentemente dal loro essere master/slave se il III parametro è true.
      Esempi:
      getSubjects(user, true, false, survey)
      restituisce solo i soggetti contingenti flaggati come master
      getSubjects(user, false, false, survey)
      restituisce solo i soggetti contingenti flaggati come slave
      getSubjects(user, ?, true, survey)
      restituisce tutti i soggetti contingenti indipendentemente da come sono flaggati (indipendentemente dal valore del II parametro)

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      master - boolean specificante se il soggetto cercato e' master o slave
      getAll - boolean invalidante il parametro precedente se false, rispettante il parametro precedente se true
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<ItemBean> - la lista di soggetti cercati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getInputs

      public ArrayList<ItemBean> getInputs(PersonBean user, CodeBean survey) throws WebStorageException

      Estrae un elenco di tutti gli input trovati nella rilevazione corrente.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<ItemBean> - la lista di input cercati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getInputs

      public ArrayList<ItemBean> getInputs(PersonBean user, int idp, int level, CodeBean survey) throws WebStorageException
      Façade di getInputs(PersonBean, int, int, int, CodeBean) Contestualizza sempre gli input sull'id del sotto/processo ricevuto, cioè recupera solo gli input collegati al sotto/processo il cui identificativo riceve come argomento e il cui livello viene passato come parametro.
      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idp - identificativo del processo/sottoprocesso anticorruttivo
      level - identificativo del livello di processo di cui si devono recuperare gli input
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<ItemBean> - la lista di input cercati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
      See Also:
      • invalid reference
        it.rol.DBWrapper#getInputs(PersonBean, int, int, int, CodeBean)
    • getInputs

      public ArrayList<ItemBean> getInputs(PersonBean user, int idp, int getAll, int level, CodeBean survey) throws WebStorageException

      Estrae un elenco di input in base all'identificativo del sotto/processo anticorruttivo, oppure estrae un elenco di tutti gli input trovati nella rilevazione corrente e collegati a processi, indipendentemente dall'id del sotto/processo ricevuto, a seconda del valore della coppia di parametri (idp, getAll).

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idp - identificativo del processo/sottoprocesso anticorruttivo
      getAll - valore convenzionale; se vale -1 comporta il recupero di tutti gli input, indipendentemente dall'id sotto/processo passato come parametro
      level - identificativo del livello di processo di cui si devono recuperare gli input
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<ItemBean> - la lista di input cercati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getActivities

      public ArrayList<ActivityBean> getActivities(PersonBean user, int idp, int level, CodeBean survey) throws WebStorageException

      Estrae un elenco di fasi in base agli estremi del sotto/processo anticorruttivo.

      NOTA: fare attenzione al fatto che l'invocazione della populate() altera i valori di inizializzazione degli attributi dei bean; per questo motivo non è possibile fare i test controllando se i valori inizializzati sono maggiori di -2 o -2.0f (che sono i valori di inizializzazione originali nei costruttori dei bean) ma, per verificare se dalla query è arrivato qualche valore significativo, bisognerà testare per valori strettamente maggiori di 0 o di 0.0f. Se si testasse per valori maggiori di -2 o -2.0f il test risulterebbe sempre verificato anche se valori significativi dalla query non sono arrivati (0 > -2).

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idp - identificativo del processo/sottoprocesso anticorruttivo
      level - identificativo del livello di processo di cui si devono recuperare le fasi
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<ActivityBean> - la lista di fasi cercate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getOutputs

      public ArrayList<ItemBean> getOutputs(PersonBean user, int idp, int level, CodeBean survey) throws WebStorageException

      Estrae un elenco di output in base agli estremi del sotto/processo anticorruttivo.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idp - identificativo del processo/sottoprocesso anticorruttivo
      level - identificativo del livello di processo di cui si devono recuperare gli output
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<ItemBean> - la lista di output cercati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getOutputs

      public ArrayList<ProcessBean> getOutputs(PersonBean user, CodeBean survey) throws WebStorageException

      Estrae l'elenco degli output indipendentemente dal contesto di uno specifico sotto/processo anticorruttivo.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<ProcessBean> - la lista di output trovati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getOutput

      public ProcessBean getOutput(PersonBean user, int id, CodeBean survey) throws WebStorageException

      Dato un id e una rilevazione, restituisce un output selezionato in base a tali parametri, comprensivo dei processi da esso generati.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      id - identificativo dell'output che si vuol recuperare
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      ProcessBean - l'output desiderato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getQuestionsAmountBySurvey

      public Integer getQuestionsAmountBySurvey(int idSurvey) throws WebStorageException

      Restituisce un Integer corrispondente al wrapper del numero di quesiti trovati dato un identificativo di rilevazione, passato come parametro.

      Parameters:
      idSurvey - identificativo della rilevazione corrente
      Returns:
      Integer - il numero di quesiti collegati ad ambiti generici trovati dato l'identificativo della rilevazione
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getQuestionsAmountWithAnswerByInterview

      public Integer getQuestionsAmountWithAnswerByInterview(HashMap<String,LinkedHashMap<String,String>> params, CodeBean survey) throws WebStorageException

      Restituisce un Integer corrispondente al wrapper del numero di quesiti trovati dati gli estremi di un'intervista, passati come parametri.

      Nota: l'intervista non è stata pensata come un'entità fisica ma come un set di risposte, accomunate tutte dalla stessa data ed ora. Per gli scopi dell'applicazione rol questa soluzione in una prima fase si sviluppo va bene perché l'inserimento delle risposte non invalid input: '&egrave' distribuito ma centralizzato. In tale fase non esiste quindi un identificativo dell'intervista da passare, ma solo una data ed un'ora, cui ogni risposta accomunata dalla stessa intervista deve fare capo. Successivamente ha senso concepire l'intervista come un'entità dotata di un suo identificativo, e considerare le risposte accoumunate non in base a una marca temporale ma piuttosto in base alla chiave esterna di tale identificativo. Ciò per prevenire l'evenienza di un improbabile, ma non impossibile, salvataggio di due distinti set di risposte nella stessa data ed ora.

      Parameters:
      params - mappa contenente i parametri di navigazione
      survey - oggetto contenente i dati della rilevazione
      Returns:
      Integer - il numero di quesiti collegati ad una stessa marca temporale richiesta
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMacroAtBySurvey

      public ArrayList<ProcessBean> getMacroAtBySurvey(PersonBean user, String codeSurvey) throws WebStorageException

      Data una rilevazione, restituisce un ArrayList di macroprocessi censiti dall'anticorruzione ad essa afferenti, contenenti ciascuno i processi figli al proprio interno. Ogni figlio conterrà i relativi figli.

      Deve recuperare solo i macroprocessi su cui un utente, il cui username viene passato come argomento, ha i diritti di accesso (in base al ruolo per se).

      Parameters:
      user - oggetto rappresentante la persona loggata
      codeSurvey - identificativo della rilevazione di cui si vogliono recuperare i macroprocessi
      Returns:
      ArrayList<ProcessBean> - un Vector di ProcessBean, che rappresentano i macroprocessi su cui l'utente ha i diritti di lettura
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getQueryMacroSubProcessAtBySurvey

      public String getQueryMacroSubProcessAtBySurvey(int idP, byte level, int idSur)
      Description copied from interface: Query

      In funzione del parametro specificante il livello (1 = macroprocesso_at | 2 = processo_at | 3 = sottoprocesso_at), costruisce dinamicamente la query che estrae tutti i macroprocessi censiti dall'anticorruzione (oppure uno specifico macroprocesso) filtrati in base all'identificativo della rilevazione, passato come parametro, rappresentando in ogni tupla anche i valori delle entità collegate.

      Specified by:
      getQueryMacroSubProcessAtBySurvey in interface Query
      Overrides:
      getQueryMacroSubProcessAtBySurvey in class QueryImpl
      Parameters:
      idP - identificativo di macroprocesso_at, processo_at o sottoprocesso_at
      level - identificativo del livello a cui e' relativo l'id (1 = macroprocesso_at | 2 = processo_at | 3 = sottoprocesso_at)
      idSur - codice identificativo della rilevazione
      Returns:
      String - la query che seleziona l'insieme desiderato
    • getMacroSubProcessAtBySurvey

      public ArrayList<ItemBean> getMacroSubProcessAtBySurvey(PersonBean user, int idMPSAT, byte level, CodeBean survey) throws WebStorageException

      Data una rilevazione, restituisce un ArrayList di macroprocessi censiti dall'anticorruzione ad essa afferenti, corredati, sullo stesso record, degli estremi dei processi e sottoprocessi anticorrutivi ad essi collegati, delle aree di rischio e di altri indicatori.

      Questa estrazione, ridondante e non normalizzata, è adatta a generare file csv e simili set di tuple denormalizzate.

      Parameters:
      user - oggetto rappresentante la persona loggata
      idMPSAT - identificativo di un macroprocesso, di un processo o di un sottoprocesso anticorruttivo
      level - insieme in cui cercare l'identificativo (1 = macroprocesso_at | 2 = processo_at | 3 = sottoprocesso_at)
      survey - oggetto rilevazione di cui si vogliono recuperare i macroprocessi, i processi e relative informazioni
      Returns:
      ArrayList<ItemBean> - un Vector di ItemBean, ciascuno rappresentante una tupla completa
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMacroSubProcessAtByIdOrCode

      public ProcessBean getMacroSubProcessAtByIdOrCode(PersonBean user, int idMPSAT, String codeMPSAT, byte level, CodeBean survey) throws WebStorageException

      Dato un id o un codice, restituisce un ProcessBean che incapsula i dati di un macroprocesso, processo o sottoprocesso, determinato in base al livello passato come parametro.

      • È possibile passare o un id o un codice e il processo verrà recuperato in ogni caso (se si conosce l'ID ma non il codice, passare una stringa qualunque come codice, p.es. VOID_STRING; l'importante è che non corrisponda a un codice realmente esistente);
      • se vengono passati entrambi, purché attinenti allo stesso processo, il risultato sarà lo stesso che si ottiene passando uno solo dei due;
      • bisogna invece evitare di passare un id ed un codice relativi a due processi diversi, perché in questo caso ne verrà restituito uno solo, ottenendo un comportamento indesiderabile.

      Parameters:
      user - oggetto rappresentante la persona loggata
      idMPSAT - identificativo di un macroprocesso, di un processo o di un sottoprocesso anticorruttivo
      codeMPSAT - codice di un macroprocesso, di un processo o di un sottoprocesso anticorruttivo
      level - insieme in cui cercare l'identificativo (1 = macroprocesso_at | 2 = processo_at | 3 = sottoprocesso_at)
      survey - oggetto rilevazione di cui si vogliono recuperare i macroprocessi, i processi e relative informazioni
      Returns:
      ProcessBean - un oggetto corrispondente all'elemento di id fornito come argomento nell'insieme desiderato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getAmbits

      public ArrayList<ItemBean> getAmbits(PersonBean user, CodeBean survey) throws WebStorageException

      Restituisce un ArrayList contenente tutti gli ambiti di analisi trovati nella rilevazione corrente.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      Returns:
      ArrayList<ItemBean> - un vettore ordinato di ItemBean, che rappresentano gli ambiti di analisi trovati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getQuestions

      public ArrayList<QuestionBean> getQuestions(PersonBean user, CodeBean survey, int idQuestion, int getAll) throws WebStorageException

      Data una rilevazione restituisce un ArrayList di domande da sottoporre per rilevare i rischi.

      Il metodo è ricorsivo e funziona richiamando se stesso per arricchire in una passata successiva la lista di quesiti trovati.

      La prima volta che viene eseguito, riceve come identificativi interi il valore convenzionale -1 e quindi recupera un elenco; per ogni quesito trovato, recupera gli identificativi di risorse collegate al quesito, inserendoli in attributi temporanei; quindi utilizza immediatamente tali valori per ottenere oggetti completi, che inserisce come attributi a loro volta del bean che inizialmente conteneva i valori temporanei.
      Quando richiama se stesso, non passa piú il valore -1 ma il vero id del quesito corrente, di cui si vuol recuperare il quesito padre, se esiste, aggiungendolo al quesito corrente e aggiungendo finalmente questo all'elenco.
      Quindi termina l'esecuzione.

      Il metodo quindi può essere utilizzato

      • sia per ottenere una lista di quesiti,
      • sia per ottenere uno specifico quesito (sia pure sotto forma di lista, perché ovviamente il tipo restituito può essere solo uno).

      Se si vuol ottenere una lista
      bisogna passare un valore qualunque sul primo parametro e -1 sul secondo parametro.
      Se si vuol ottenere un quesito
      bisogna passare l'identificativo del quesito sia sul primo sia sul secondo parametro.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione
      idQuestion - identificativo di uno specifico quesito
      getAll - valore convenzionale; se vale -1 comporta il recupero di tutti i quesiti, indipendentemente dall'id passato come parametro
      Returns:
      ArrayList<QuestionBean> - un Vector di QuestionBean, che rappresentano le domande atte a rilevare i rischi corruttivi
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getAnswers

      public ArrayList<QuestionBean> getAnswers(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params, CodeBean survey) throws WebStorageException

      Estrae un elenco di risposte ad una serie di quesiti in funzione di una serie di parametri e nel contesto di una data rilevazione.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      params - mappa contenente i parametri di navigazione
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<QuestionBean> - la lista di risposte trovate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getQueryAnswers

      public String getQueryAnswers(InterviewBean params, int idSurvey) throws AttributoNonValorizzatoException, WebStorageException
      Description copied from interface: Query

      Costruisce dinamicamente la query che seleziona un insieme di risposte ad una serie di quesiti associati ad una data intervista nel contesto di una data rilevazione.

      Specified by:
      getQueryAnswers in interface Query
      Overrides:
      getQueryAnswers in class QueryImpl
      Parameters:
      params - oggetto contenente tutti i parametri utili per il recupero delle risposte
      idSurvey - identificativo della rilevazione
      Returns:
      String - la query che seleziona l'insieme desiderato
      Throws:
      AttributoNonValorizzatoException - se risulta impossibile recuperare un attributo obbligatorio di un bean
      WebStorageException - se manca uno o piu' elementi indispensabili per il recupero delle risposte
    • getAnswers

      public ArrayList<QuestionBean> getAnswers(PersonBean user, InterviewBean params, CodeBean survey) throws WebStorageException

      Estrae un elenco di risposte ad una serie di quesiti in funzione di una serie di parametri e nel contesto di una data rilevazione.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      params - oggetto contenente i parametri di navigazione
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<QuestionBean> - la lista di risposte trovate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getIndicators

      public ArrayList<CodeBean> getIndicators(PersonBean user, CodeBean survey) throws WebStorageException

      Estrae un elenco completo di indicatori

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<CodeBean> - la lista di indicatori cercati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getQuestionsByIndicator

      public HashMap<String,LinkedList<Integer>> getQuestionsByIndicator(PersonBean user, CodeBean survey) throws WebStorageException

      Restituisce un HashMap contenente insiemi di identificativi dei quesiti indicizzati per codice di indicatore.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto rilevazione
      Returns:
      HashMap<String, LinkedList<Integer>> - dictionary con ogni entry costituita dal codice indicatore (chiave) e dalla lista degli identificativi dei quesiti ad esso associati (valore)
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getInterviewsBySurvey

      public ArrayList<InterviewBean> getInterviewsBySurvey(PersonBean user, CodeBean survey) throws WebStorageException

      Estrae un elenco di interviste definita ciascuna come un insieme di riposte a quesiti associati a una data rilevazione.
      L'insieme di risposte viene identificato a partire da una chiave di fatto, costituita dai seguenti campi:

      • id struttura liv1, liv2, liv3, liv4
      • id macroprocesso, processo, sottoprocesso
      • id rilevazione
      • stessa data e ora per tutte le risposte

      Per ogni intervista, utilizza un ItemBean per memorizzare gli id degli oggetti correlati all'intervista; quindi utilizza tali id dell'item per estrarre, a partire dall'id in questione, il relativo oggetto completo, che memorizza nell'apposito bean per l'intervista (InterviewBean).
      Infine, restituisce la lista di InterviewBean.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<InterviewBean> - la lista di interviste trovate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getRisks

      public ArrayList<RiskBean> getRisks(PersonBean user, int getAll, CodeBean survey) throws WebStorageException

      Restituisce un ArrayList contenente tutti i rischi corruttivi censiti nel contesto di una data rilevazione, oppure tutti i rischi corruttivi trovati indipendentemente dalla rilevazione, in funzione del valore dei parametri.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      getAll - valore convenzionale; se vale -1 comporta il recupero di tutti i rischi, indipendentemente dall'id della rilevazione
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<RiskBean> - un vettore ordinato di RiskBean, che rappresentano i rischi corruttivi trovati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getRisk

      public RiskBean getRisk(PersonBean user, int idRisk, CodeBean survey) throws WebStorageException

      Restituisce un oggetto corrispondente ad un rischio corruttivo censito nel contesto di una data rilevazione, i cui identificativi accetta come argomenti.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idRisk - identificativo del rischio corruttivo
      survey - oggetto contenente i dati della rilevazione
      Returns:
      RiskBean - un RiskBean, che rappresenta il rischio corruttivo trovato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getRisksByProcess

      public ArrayList<RiskBean> getRisksByProcess(PersonBean user, ProcessBean process, CodeBean survey) throws WebStorageException

      Restituisce un ArrayList contenente tutti i rischi corruttivi collegati ad un dato processo o sottoprocesso e censiti nel contesto di una data rilevazione.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      process - oggetto contenente i dati del processo o del sottoprocesso
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<RiskBean> - un vettore ordinato di RiskBean, che rappresentano i rischi corruttivi trovati per il sotto/processo dato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getProcessByRisk

      public ArrayList<ProcessBean> getProcessByRisk(PersonBean user, RiskBean risk, CodeBean survey) throws WebStorageException

      Restituisce un ArrayList contenente tutti i processi (livello 2) collegati ad un dato rischio corruttivo il cui identificativo viene accettato come argomento, e censiti nel contesto di una data rilevazione.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      risk - oggetto contenente i dati del rischio
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<RiskBean> - un vettore ordinato di RiskBean, che rappresentano i rischi corruttivi trovati per il sotto/processo dato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getRiskProcess

      public int getRiskProcess(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Restituisce il numero di processi o sottoprocessi associati ad un dato rischio corruttivo, oppure zero se non ce ne sono.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      params - mappa contenente i parametri di navigazione
      Returns:
      int - il totale delle associazioni processo corrente/rischio corrente
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getProcessById

      public ProcessBean getProcessById(PersonBean user, int idP, CodeBean survey) throws WebStorageException

      Restituisce un oggetto corrispondente ad un processo censito a fini anticorruttivi, il cui identificativo accetta come argomento.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idP - identificativo del processo organizzativo censito dall'anticorruzione
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ProcessBean - il ProcessBean rappresentante il processo anticorruttivo trovato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getFactors

      public ArrayList<CodeBean> getFactors(PersonBean user, CodeBean survey) throws WebStorageException

      Restituisce un ArrayList contenente tutti i fattori abilitanti censiti indipendentemente dalla rilevazione. Quest'ultimo parametro, che è "gratis", viene passato "just in case", qualora si decidesse, in secondo tempo, di storicizzare quest'entità forte (fattore_abilitante).

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<CodeBean> - un vettore ordinato di CodeBean, che rappresentano i fattori abilitanti trovati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getFactorRiskProcess

      public int getFactorRiskProcess(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Restituisce il numero di associazioni ternarie già esistenti per

      • un dato rischio corruttivo,
      • un dato processo
      • e un dato fattore abilitante
      oppure zero se non ce ne sono.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      params - mappa contenente i parametri di navigazione
      Returns:
      int - il totale delle associazioni processo corrente/rischio corrente/fattore corrente
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getIndicatorValues

      public ArrayList<ProcessBean> getIndicatorValues(PersonBean user, ArrayList<ProcessBean> mats, CodeBean survey, int muffler) throws WebStorageException

      Restituisce tutti i valori già pre-calcolati per tutti gli indicatori relativi a tutti i processi nel contesto di una data rilevazione.
      Effettua diversi rimaneggiamenti sui dati estratti una sola volta nell'ottica di limitare al massimo il numero di accessi al disco (ovvero delle letture da db).
      I valori recuperati da database sono stati memorizzati in base a un pre-calcolo (caching).

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      mats - struttura contenente tutti i macroprocessi - e processi figli - privi di indicatori di rischio
      survey - oggetto contenente i dati della rilevazione
      muffler - un intero da sottrarre ai valori effettivi degli indicatori (per non alterare i valori, passare il valore 0)
      Returns:
      ArrayList<ProcessBean> - struttura contenente tutti i macroprocessi con al loro interno i processi figli, ciascuno corredato dei propri indicatori di rischio
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getIndicatorPI

      public ItemBean getIndicatorPI(PersonBean user, int idP, CodeBean survey) throws WebStorageException

      Restituisce gli estremi del PxI di un processo di dato id, il cui identificativo viene passato come parametro e di una data rilevazione, il cui identificativo viene passato come parametro. Quantunque le tuple restuite dalla query siano molteplici, restituisce un oggetto unico (e non una lista di oggetti) perché appiattisce su questo i dati di tutte le tuple.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      idP - identificativo di processo censito a fini anticorruttivi
      survey - oggetto contenente i dati della rilevazione
      Returns:
      InterviewBean - oggetto contenente gli estremi dell'indicatore cercato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getIndicatorNotes

      public LinkedHashMap<Integer,ItemBean> getIndicatorNotes(PersonBean user, CodeBean survey) throws WebStorageException

      Restituisce una mappa con order insertion avente in chiave il Wrapper dell'identificativo di processo e come valore un ItemBean contenente gli estremi dell'indicatore PxI, comprese, soprattutto, le note al giudizio sintetico.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      survey - oggetto contenente i dati della rilevazione
      Returns:
      LinkedHashMap<Integer, ItemBean> - dictionary contenente gli indicatori indicizzati per identificativi dei processi
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMeasureTypes

      public ArrayList<CodeBean> getMeasureTypes() throws WebStorageException

      Restituisce un ArrayList contenente tutte le tipologie di misura di prevenzione/mitigazione del rischio corruttivo.
      Non si considera l'utente loggato in quanto questa informazione può essere considerata visibile a tutte le tipologie di utenti. Inoltre, baipassando l'utente loggato, questi dati possono essere acquisiti ancor prima che l'utente si logghi, quindi a livello di applicazione (quando il server viene caricato) – cosa utile per poter caricare staticamente in memoria le tuple corrispondenti, quindi evitare di dover rifare da piú punti la stessa query.

      Returns:
      ArrayList<CodeBean> - un vettore ordinato di CodeBean, che rappresentano le tipologie di misura trovate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMeasureCharacters

      public ArrayList<CodeBean> getMeasureCharacters() throws WebStorageException

      Restituisce un ArrayList contenente i possibili caratteri delle misure di prevenzione/mitigazione del rischio corruttivo.
      Non si prende in considerazione l'utente loggato in quanto questa informazione può essere considerata visibile a tutte le tipologie di utenti (anche perché anche se sai quali sono i caratteri delle misure ma non sai quali sono le misure, a che serve questa informazione?).

      Returns:
      ArrayList<CodeBean> - un vettore ordinato di CodeBean, che rappresentano i caratteri di misura trovati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMeasures

      public ArrayList<MeasureBean> getMeasures(PersonBean user, String code, int getAll, CodeBean survey) throws WebStorageException

      Data una rilevazione, restituisce un elenco di misure di prevenzione trovate, oppure una specifica misura, in funzione dei parametri ricevuti.
      In particolare:

      se si passa il codice della misura sul II parametro e 0 sul III parametro
      restituisce una lista vettoriale contenente la misura avente il codice ricevuto (se esiste), oppure una lista vuota (se non esiste)
      se si passa una stringa SQL vuota sul II parametro e -1 sul III parametro
      restituisce l'elenco completo delle misure di prevenzione trovate nella rilevazione passata sul IV parametro
      se si passa UNIX_EPOCH (1° gennaio 1970) o una data molto vecchia sul 4° parametro
      restituisce tutte le misure di mitigazione; altrimenti, restituisce solo le misure con data scadenza successiva (strettamente maggiore) della data passata

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      code - il codice di una misura cercata oppure una stringa vuota in linguaggio SQL
      getAll - 0 oppure -1 a seconda se si voglia rispettivamente ottenere una singola misura oppure tutte
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      ArrayList<MeasureBean> - l'elenco di misure cercate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMeasure

      public MeasureBean getMeasure(PersonBean user, String code, Date after, Date before, CodeBean survey) throws WebStorageException

      Dato un codice e una finestra temporale, restituisce una specifica misura, in funzione dei parametri ricevuti.
      In particolare: il target di almeno un indicatore deve trovarsi in una data maggiore o uguale ad after e minore o uguale a before.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      code - il codice di una misura cercata oppure una stringa vuota in linguaggio SQL
      after - estremo inferiore dell'intervallo entro cui deve ricadere il target dell'indicatore per essere estratto
      before - estremo superiore dell'intervallo entro cui deve ricadere il target dell'indicatore per essere estratto
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      ArrayList<MeasureBean> - l'elenco di misure cercate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getRisksByMeasure

      public ArrayList<ItemBean> getRisksByMeasure(PersonBean user, String code, CodeBean survey) throws WebStorageException

      Restituisce un elenco di rischi, sotto forma di oggetti generici, cui una data misura di prevenzione del rischio corruttivo è applicata.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      code - il codice di una misura cercata
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      ArrayList<ItemBean> - un vettore ordinato di ItemBean, che rappresentano i rischi trovati
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMeasuresByFactors

      public ArrayList<MeasureBean> getMeasuresByFactors(PersonBean user, RiskBean risk, boolean getAll, CodeBean survey) throws WebStorageException

      Restituisce un ArrayList contenente tutte le misure collegate, tramite la propria tipologia, ad uno o piú fattori abilitanti i cui identificativi vengono passati come parametro. Tali fattori abilitanti sono presenti nel rischio corruttivo che il metodo accetta come argomento.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      risk - oggetto contenente i dati del rischio corruttivo
      getAll - flag specificante se devono essere recuperate solo le misure non ancora applicate al rischio in argomento (false), oppure tutte quelle collegate ai fattori abilitanti del rischio stesso (true)
      survey - oggetto contenente i dati della rilevazione
      Returns:
      ArrayList<MeasureBean> - un vettore ordinato di misure, che rappresentano le misure suggerite per un rischio collegato ad alcuni fattori abilitanti
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • isMeasureRiskProcess

      public boolean isMeasureRiskProcess(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params, ArrayList<MeasureBean> list) throws WebStorageException

      Restituisce vero se una misura in una lista di misure risulta già associata ad un dato rischio nel contesto di un dato processo, falso altrimenti.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      params - mappa contenente i parametri di navigazione
      list - elenco di misure in cui si vuol controllare l'esistenza di una misura corrente
      Returns:
      boolean - true se la misura corrente e' presente nell'elendo di misure in argomento, false in caso contrario
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getIndicatorTypes

      public ArrayList<CodeBean> getIndicatorTypes() throws WebStorageException

      Restituisce un ArrayList contenente tutte le tipologie di indicatori di monitoraggio.
      Non si considera l'utente loggato in quanto questa informazione può essere considerata visibile a tutte le tipologie di utenti. Inoltre, baipassando l'utente loggato, questi dati possono essere acquisiti ancor prima che l'utente si logghi, quindi a livello di applicazione (quando il server viene caricato) – cosa utile per poter caricare staticamente in memoria le tuple corrispondenti, quindi evitare di dover rifare da piú punti la stessa query.

      Returns:
      ArrayList<CodeBean> - un vettore ordinato di CodeBean, che rappresentano le tipologie di indicatori trovate
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMeasuresByStructs

      public ArrayList<DepartmentBean> getMeasuresByStructs(PersonBean user, Date dateAfter, Date dateBefore, CodeBean survey) throws WebStorageException

      Restituisce un ArrayList contenente tutte le strutture capofila di misure, con all'interno le misure stesse. Le capofila possono essere di vario sottotipo (capofila 1, capofila 2, capofila 3) ma non di tipo gregarie.

      Il metodo prende in input due date, dateAfter e dateBefore. Per comprendere il significato di questi parametri, bisogna capire come questi vengono macinati dalla query: p.es., se si seleziona l'anno 2025, la query lo interpreta nel seguente modo:

       SELECT MS.codice, data_scadenza FROM misura MS 
       INNER JOIN misuramonitoraggio MM ON MS.codice = MM.codice
       WHERE (MS.data_scadenza IS NULL OR MS.data_scadenza > '2025-01-01')
       AND MM.data_ultima_modifica invalid input: '<' '2025-12-31';
      In questo modo, vengono selezionate solo le misure che NON risultano scadute in date che precedono il primo giorno del 2025, e che quindi nel 2025 erano valide (p.es. si considera una misura con scadenza il 2 gennaio 2025 ma non si considera una misura scaduta il 30 dicembre 2024) AND che NON risultano create dopo il 31 dicembre 2025 (p.es., se una misura era stata dettagliata il 2 gennaio 2026 selezionando l'anno 2025 non esce, perché nel 2025 non esisteva ancora).

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      dateAfter - primo giorno dell'anno a partire dal quale la misura non si considera scaduta (p.es. '2026-01-01')
      dateBefore - ultimo giorno dell'anno che rappresenta la soglia oltre la quale la misura non si considera esistente (p.es. '2026-12-31')
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      ArrayList<DepartmentBean> - un vettore ordinato di DepartmentBean, che rappresentano le capofila delle misure
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMeasureActivity

      public ActivityBean getMeasureActivity(PersonBean user, String code, int idF, int year, CodeBean survey) throws WebStorageException

      Restituisce una fase di attuazione di dato id, appartenente a una misura di dato codice, nel contesto di una data rilevazione.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      code - il codice di una misura di cui si cercano le fasi
      idF - identificativo della fase cercata
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      ActivityBean - la fase di attuazione cercata
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getIndicatorByActivity

      public IndicatorBean getIndicatorByActivity(PersonBean user, ActivityBean fase, CodeBean survey) throws WebStorageException

      Restituisce un indicatore di monitoraggio collegato ad una specifica fase di attuazione passata come parametro.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      fase - la fase di attuazione cui l'indicatore cercato puo' essere collegato
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      IndicatorBean - l'indicatore di monitoraggio collegato alla fase
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getIndicatorsByActivity

      public ArrayList<IndicatorBean> getIndicatorsByActivity(PersonBean user, ActivityBean fase, CodeBean survey) throws WebStorageException

      Restituisce elenco di indicatori di monitoraggio collegati ad una specifica fase di attuazione passata come parametro.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      fase - la fase di attuazione cui l'indicatore cercato puo' essere collegato
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      ArrayList<IndicatorBean> - l'indicatore di monitoraggio collegato alla fase
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getIndicatorByActivity

      public IndicatorBean getIndicatorByActivity(PersonBean user, ActivityBean fase, Date since, Date to, CodeBean survey) throws WebStorageException

      Restituisce un indicatore di monitoraggio collegato ad una specifica fase di attuazione passata come parametro ed avente la data target non precedente a since e non successiva a to.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      fase - la fase di attuazione cui l'indicatore cercato puo' essere collegato
      since - data di inizio validita' del target (l'indicatore sara' estratto se ha data target successiva a since)
      to - data di fine validita' del target (l'indicatore sara' estratto se ha data target precedente a to)
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      IndicatorBea - l'indicatore di monitoraggio collegato alla fase
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • getMeasurement

      public MeasurementBean getMeasurement(PersonBean user, int id, CodeBean survey) throws WebStorageException

      Restituisce una misurazione di dato id.

      Parameters:
      user - oggetto rappresentante la persona loggata, di cui si vogliono verificare i diritti
      id - identificativo della misurazione cercata
      survey - oggetto contenente gli estremi della rilevazione
      Returns:
      MeasurementBean - la misurazione cercata
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nel recupero di attributi obbligatori non valorizzati o in qualche altro tipo di puntamento
    • insertAnswers

      public void insertAnswers(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params, int items) throws WebStorageException

      Metodo per fare l'inserimento di un nuovo questionario.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      items - numero di quesiti a cui rispondere e quindi numero di risposte da inserire
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertRisk

      public void insertRisk(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di un nuovo rischio.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertRiskProcess

      public void insertRiskProcess(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di una nuova associazione tra un rischio ed un sotto/processo, entrambi esistenti.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertFactorRiskProcess

      public void insertFactorRiskProcess(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di una nuova tupla identificante la relazione ternaria tra un rischio ed un fattore abilitante, nel contesto di un dato processo e di una data rilevazione.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertIndicatorProcess

      public void insertIndicatorProcess(PersonBean user, ArrayList<ProcessBean> mats, LinkedHashMap<Integer,ItemBean> notes, CodeBean survey) throws WebStorageException

      Metodo per fare l'inserimento dei valori degli indicatori di rischio calcolati per ogni singolo processo su cui sia stata effettuata almeno un'intervista.
      Assume che siano state già inserite (almeno una delle) motivazioni del giudizio sintetico.

      Parameters:
      user - utente loggato
      mats - struttura contenente tutti i macroprocessi - e processi figli - corredati ciascuno dei valori dei propri indicatori di rischio
      notes - struttura contenente le motivazioni al giudizio sintetico gia' inserite
      survey - oggetto contenente i dati della rilevazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertMeasure

      public void insertMeasure(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params, int c1l2Id) throws WebStorageException

      Metodo per fare l'inserimento di una nuova misura di prevenzione o mitigazione del rischio corruttivo.

      Oltre a quelli soliti, accetta come argomento anche un id di una struttura di secondo livello, che viene preso in considerazione solo se il parametro della capofila di 2° livello risulta nullo.

      About reusing the same PrepraredStatement across multiple updates (into the same transaction), Perplexity.ai said:
      "There is a discussion about reusing a single PreparedStatement for multiple queries. The key point highlighted is that while it is possible to reuse a PreparedStatement for multiple executions of the same query efficiently, using it for different queries may lead to unexpected behavior or errors.
      Therefore, it is recommended to create separate PreparedStatement objects for different queries to ensure proper execution and avoid unexpected behavior. This approach helps maintain clarity, prevent errors, and ensure the intended behavior of each query execution."

      And so did I.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      c1l2Id - stringa contenente l'id di una struttura di 2° livello su cui generare la misura
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertMeasureRiskProcess

      public void insertMeasureRiskProcess(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di una nuova tupla identificante la relazione ternaria tra un rischio ed una misura di prevenzione del rischio stesso nel contesto di un dato processo e di una data rilevazione.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertMeasureDetails

      public void insertMeasureDetails(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento dei dettagli relativi al monitoraggio di una misura di prevenzione/mitigazione del rischio corruttivo.

      About reusing the same PrepraredStatement across multiple updates (into the same transaction), Perplexity.ai said:
      "There is a discussion about reusing a single PreparedStatement for multiple queries. Just don't do that.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertIndicatorMeasure

      public void insertIndicatorMeasure(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di un nuovo indicatore collegato ad una fase di attuazione di una misura monitorata, nel contesto di una data misura e di una data rilevazione.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertMeasurement

      public void insertMeasurement(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di una nuova misurazione.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertMacroAt

      public ProcessBean insertMacroAt(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di un nuovo macroprocesso censito a fini anticorruttivi.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Returns:
      ProcessBean - oggetto macroprocesso appena inserito
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertProcessAt

      public ProcessBean insertProcessAt(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di un nuovo processo censito a fini anticorruttivi.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Returns:
      ProcessBean - oggetto processo appena inserito
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertInputs

      public int insertInputs(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException
      Metodo per fare l'inserimento di nuovi input di processo. Ci sono molti gradi di libertà da gestire perché potrebbero esservi solo nuovi input, solo input esistenti oppure sia nuovi input sia input esistenti (solo la situazione né nuovi input né input esistenti va evitata).
      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Returns:
      int - l'id dell'ultimo input prima dell'inserimento
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertActivities

      public int insertActivities(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException
      Metodo per fare l'inserimento di nuove attività di processo. Ci potrebbe essere l'accodamento di attività ad attività già esistenti oppure l'inserimento di nuove attività rispetto ad un processo non ancora articolato.
      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Returns:
      int - l'id del processo appena inserito
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertActivitiesStructures

      public int insertActivitiesStructures(PersonBean user, ArrayList<ItemBean> activities, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException
      Metodo per fare l'inserimento di nuove attività di processo. Ci potrebbe essere l'accodamento di attività ad attività già esistenti oppure l'inserimento di nuove attività rispetto ad un processo non ancora articolato.
      Parameters:
      user - utente loggato
      activities - lista attivita' di processo da inserire
      params - mappa contenente i parametri di navigazione
      Returns:
      int - l'id del processo appena inserito
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertOutputs

      public int insertOutputs(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException
      Metodo per fare l'inserimento di nuovi output di processo. Ci sono molti gradi di libertà da gestire perché potrebbero esservi solo nuovi output, solo output esistenti oppure sia nuovi output sia output esistenti (solo la situazione né nuovi output né output esistenti va evitata).
      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Returns:
      int - l'id dell'ultimo output prima dell'inserimento
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • insertSubject

      public void insertSubject(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'inserimento di un soggetto contingente.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • setFileDoc

      public int setFileDoc(HashMap<String,Object> params) throws WebStorageException

      Inserisce le informazioni relative ad un file, i cui estremi vengono comunicati in un dictionary passato come argomento.

      Questo inserimento, una volta andato a buon fine, rappresenterà una rappresentazione logica, nel database, di un allegato fisico presente nel file system (del server).

      Notare che non esiste alcuna garanzia che la rappresentazione logica dell'allegato corrisponda effettivamente all'allegato fisico, nel senso che, una volta terminato il caricamento, un utente con accessi alla directory degli upload potrebbe eliminare l'allegato fisico, mentre l'allegato logico, ovvero la tupla inserita dal presente metodo, potrebbe restare. Ciò porterebbe, a valle, alla generazione di un link che produce un errore di tipo 404.

      Per evitare questo inconveniente, è possibile prevedere meccanismi di protezione delle directories e/o anche meccanismi di trigger che si riverberano sul db – la cui implementazione comunque non attiene alla natura applicativa dei sorgenti del presente software.

      Parameters:
      params - HashMap contenente gli estremi del file, al fine di inserire la tupla
      Returns:
      identificativo, calcolato, per la tupla che rappresentera' logicamente l'allegato fisico
      Throws:
      WebStorageException - se si verifica un problema SQL, nel recupero di attributi di bean, o in qualche altro puntamento
    • updateAnswer

      public void updateAnswer(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'aggiornamento dei valori di una risposta data.

      Essendo un'intervista identificata dall'insieme delle risposte date, le quali a loro volta sono raggruppate in base a una specifica data ed una specifica ora, non è possibile inserire nella risposta una nuova data contestuale dal timestamp dell'aggiornamento.
      Come sviluppo evolutivo, si consiglia di aggiungere una nuova coppia di campi 'data e ora' per memorizzare la data ed ora di effettivo primo inserimento, e riservare i campi "data_ultima_modifica" ed "ora ultima modifica" effettivamente allo scopo per cui sono nominati, ovvero per contenere data e ora dell'aggiornamento, non del primo inserimento; occorrerà poi un porting sui dati per travasare le informazioni attualmente contenute nei due campi "data_ultima_modifica" ed "ora ultima modifica" nei nuovi campi "data inserimento" ed "ora inserimento" e un refactoring sul codice dell'applicazione.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • updateNote

      public void updateNote(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'aggiornamento di una nota al giudizio sintetico.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • updateActivities

      public void updateActivities(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'aggiornamento dei numeri d'ordine delle attività.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • updateActivity

      public void updateActivity(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'aggiornamento della descrizione di un'attività (o fase di processo).

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • updateMeasure

      public void updateMeasure(PersonBean user, HashMap<String,LinkedHashMap<String,String>> params) throws WebStorageException

      Metodo per fare l'aggiornamento di un misura di mitigazione.

      Parameters:
      user - utente loggato
      params - mappa contenente i parametri di navigazione
      Throws:
      WebStorageException - se si verifica un problema nel cast da String a Date, nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • postUpdateFileDoc

      public boolean postUpdateFileDoc(HashMap<String,Object> params) throws WebStorageException

      Aggiorna le informazioni relative alla dimensione di un file, i cui estremi vengono comunicati in un dictionary passato come argomento.

      Notare che, almeno nel contesto di Java 7, con cui la presente applicazione è compliant, nel momento in cui un file si trova ancora in memoria volatile, cioè – in pratica – non in memoria di massa del server, Java non è in grado di calcolarne la dimensione. Per questo motivo, all'atto del caricamento di un file vengono eseguite le seguenti operazioni, in transazione:

      1. lettura del file da client e sua memorizzazione in RAM;
      2. scrittura del file su server e salvataggio nel db della tupla che rappresenta il file da un punto di vista logico;
      3. lettura del file da disco (ovvero da file system del server); solo ora è possibile calcolare la dimensione del file;
      4. aggiornamento (postUpdate) della tupla che rappresenta il file nel db, con indicazione della dimensione e di eventuali altre informazioni non desumibili all'atto dell'upload.
      Questo tipo di aggiornamento contestuale, anche se logicamente successivo, ad un'altra operazione di scrittura prende il nome di meccanismo di post-update o postUpdate hook (nel caso specifico, si tratta di un post-insert).

      Parameters:
      params - HashMap contenente gli estremi del file, al fine di aggiornare la tupla esatta e nel modo corretto
      Returns:
      boolean - true se l'operazione di aggiornamento e' andata a buon fine
      Throws:
      WebStorageException - se si verifica un problema SQL o in qualche tipo di puntamento
    • deleteIndicatorProcessResults

      public void deleteIndicatorProcessResults(PersonBean user, LinkedHashMap<Integer,ItemBean> notes) throws WebStorageException

      Metodo per eliminare tutti i valori calcolati sugli indicatori di rischio per i processi attraverso le interviste.
      Assume che siano state già inserite (almeno una delle) motivazioni del giudizio sintetico e quindi non effettua la cancellazione se non trova tali note, che devono quindi essere state precedentemente selezionate e inserite in una struttura di memoria.

      Parameters:
      user - utente loggato
      notes - struttura contenente le motivazioni al giudizio sintetico gia' selezionate in precedenza
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nell'accesso al db o in qualche puntamento
    • lookupCommand

      public Vector<ItemBean> lookupCommand() throws WebStorageException

      Restituisce un Vector di Command.

      Returns:
      Vector<ItemBean> - lista di ItemBean rappresentanti ciascuno una Command dell'applicazione
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nell'accesso al db o in qualche tipo di puntamento
    • getMax

      public int getMax(String table) throws WebStorageException

      Restituisce

      • il massimo valore del contatore identificativo di una tabella il cui nome viene passato come argomento
      • oppure zero se nella tabella non sono presenti record.

      Parameters:
      table - nome della tabella di cui si vuol recuperare il max(id)
      Returns:
      int - un intero che rappresenta il massimo valore trovato, oppure zero se non sono stati trovati valori
      Throws:
      WebStorageException - se si verifica un problema nella query o in qualche tipo di puntamento
    • getMin

      public int getMin(String table) throws WebStorageException

      Restituisce

      • il minimo valore del contatore identificativo di una tabella il cui nome viene passato come argomento
      • oppure zero se nella tabella non sono presenti record.

      Parameters:
      table - nome della tabella di cui si vuol recuperare il min(id)
      Returns:
      int - un intero che rappresenta il minimo valore trovato, oppure zero se non sono stati trovati valori
      Throws:
      WebStorageException - se si verifica un problema nella query o in qualche tipo di puntamento
    • getMaxRiskCode

      public String getMaxRiskCode(String code) throws WebStorageException

      Restituisce

      • il massimo codice del rischio se per tale categoria di codice ne sono stati già inseriti
      • oppure il primo codice se nella tabella non sono presenti rischi inseriti nella categoria identificata da quel tipo di codice.

      Parameters:
      code - prefisso del codice di cui si vuol recuperare il primo codice nuovo utile all'inserimento
      Returns:
      String - il codice utile all'inserimento
      Throws:
      WebStorageException - se si verifica un problema nella query o in qualche tipo di puntamento
    • getMatCode

      public String getMatCode(String code) throws WebStorageException

      Restituisce il codice del macroprocesso da utilizzare, data la sua area di rischio. Il codice dell'area di rischio passata ha il seguente formato:

      idArea.codiceArea
      .
      • Se nell'area di rischio considerata non ci sono ancora macroprocessi, restituisce
        "<CODICE_AREA>.01"
      • invece, se sono già presenti macroprocessi, individua l'ultimo e restituisce
        "<CODICE_AREA>.<ULTIMO PROGRESSIVO + 1>".
      I progressivi sono concepiti in 2-digits, con uno zero che precede il numero per i progressivi da 1 a 9 e senza zero per i progressivi da 10 in poi.
      Oltre il progressivo 99 si passa ovviamente a 3 cifre, e così via.

      Il metodo funziona sempre, anche per progressivi malformati; esempio:
       Next code for PER.02: PER.03
       Next code for RIC.99: RIC.100
       Next code for ABC.10: ABC.11
       Next code for XYZ.9:  XYZ.10
       Next code for TEST.0: TEST.1
       

      Parameters:
      code - id e codice, nel formato #.XYZ, dell'area di rischio relativamente alla quale si vuol generare il codice macroprocesso_at
      Returns:
      String - il codice macroprocesso, nel formato XYZ.##, utile all'inserimento
      Throws:
      WebStorageException - se si verifica un problema nella query o in qualche tipo di puntamento
    • getPatCode

      public String getPatCode(PersonBean user, int idMat, String codeMat, CodeBean survey) throws WebStorageException

      Restituisce il codice del processo da utilizzare, dato il suo macroprocesso.

      Parameters:
      user - utente di cui si vogliono verificare i diritti
      idMat - identificativo macroprocesso cui collegare il nuovo processo
      survey - estremi della rilevazione
      Returns:
      String - il codice processo, nel formato XYZ.##, utile all'inserimento
      Throws:
      WebStorageException - se si verifica un problema nella query o in qualche tipo di puntamento
    • getCount

      public int getCount(String table) throws WebStorageException

      Restituisce

      • il numero di record di una tabella il cui nome viene passato come argomento
      • oppure zero se nella tabella non sono presenti record.

      Parameters:
      table - nome della tabella di cui si vuol recuperare il numero di tuple
      Returns:
      int - un intero che rappresenta il numero di tuple trovato, oppure zero se non sono stati trovati record
      Throws:
      WebStorageException - se si verifica un problema nella query o in qualche tipo di puntamento
    • existsFileName

      public boolean existsFileName(String nomeEntita, String nomeAttributo, String nomeFile) throws WebStorageException

      Restituisce un valore boolean true se esiste un file di dato nome, in data entità e dato attributo, tutti passati come argomenti.

      Parameters:
      nomeEntita - prefisso del nome dell'entità in cui verificare l'esistenza dell'allegato
      nomeAttributo - suffisso del nome dell'entità in cui verificare l'esistenza dell'allegato
      nomeFile - nome del file di cui verificare la presenza nell'entità di nome ricavabile dai parametri
      Returns:
      boolean - true se il nome del file è già presente, false altrimenti
      Throws:
      WebStorageException - se si verifica un problema di tipo SQL o in qualche puntamento
    • getFileDoc

      public Vector<FileDocBean> getFileDoc(String nomeEntita, String nomeAttributo, int idBelongs, int getAll) throws WebStorageException

      Restituisce un Vector di FileDocBean estratti da data entità e dato attributo, entrambi passati come argomenti.

      In particolare, potrebbero esistere piú tabelle di allegati per ciascuna entità referenziata (p.es. 'dipartimento_all', 'dipartimento_logo' etc.), per cui il suffisso della tabella potrebbe variare ed è stato parametrizzato.

      Parameters:
      nomeEntita - nome dell'entità da cui estrarre gli allegati
      nomeAttributo - suffisso del nome della tabella dei fileset referenzianti
      idBelongs - identificativo dell'entita' cui gli allegati fanno riferimento
      getAll - intero usato come clausola in OR in funzione del cui valore vengono estratti solo gli allegati di una data entita' oppure di tutte
      Returns:
      Vector<FileDocBean> - Vector di fileset (riferimenti) agli allegati caricati
      Throws:
      WebStorageException - se si verifica un problema SQL o in qualche puntamento
    • get

      public String get(String query) throws WebStorageException

      Restituisce il primo valore trovato data una query passata come parametro

      Parameters:
      query - da eseguire
      Returns:
      String - stringa restituita
      Throws:
      WebStorageException - se si verifica un problema nella query o in qualche tipo di puntamento
    • getEncryptedPassword

      public CodeBean getEncryptedPassword(String username) throws WebStorageException

      Restituisce un CodeBean contenente la password criptata e il seme per poter verificare le credenziali inserite dall'utente.

      Parameters:
      username - username della persona che ha richiesto il login
      Returns:
      CodeBean - CodeBean contenente la password criptata e il seme
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nell'accesso al db o in qualche tipo di puntamento
    • getUser

      public PersonBean getUser(String username, String password) throws WebStorageException, AttributoNonValorizzatoException

      Restituisce un PersonBean rappresentante un utente loggato.

      Parameters:
      username - username della persona che ha eseguito il login
      password - password della persona che ha eseguito il login
      Returns:
      PersonBean - PersonBean rappresentante l'utente loggato
      Throws:
      WebStorageException - se si verifica un problema nell'esecuzione della query, nell'accesso al db o in qualche tipo di puntamento
      AttributoNonValorizzatoException - eccezione che viene sollevata se questo oggetto viene usato e l'id della persona non è stato valorizzato (è un dato obbligatorio)
    • manageAccess

      public void manageAccess(String username) throws WebStorageException

      Verifica se per l'utente loggato esiste una tupla che indica un precedente login.

      • Se non esiste una tupla per l'utente loggato, la inserisce.
      • Se esiste una tupla per l'utente loggato, la aggiorna.
      In questo modo, il metodo gestisce nella tabella degli accessi sempre l'ultimo accesso e non quelli precedenti.

      Parameters:
      username - login dell'utente (username usato per accedere)
      Throws:
      WebStorageException - se si verifica un problema SQL o in qualche tipo di puntamento