Package it.rol.db

Class QueryImpl

java.lang.Object
it.rol.db.QueryImpl
All Implemented Interfaces:
Constants, Query, Serializable
Direct Known Subclasses:
DBWrapper

public class QueryImpl extends Object implements Query, Constants

QueryImpl è l'implementazione dell'interfaccia Query la quale contiene, oltre alle query parametriche della della web-application   ROL-RMS (Rischi On Line — Risk Mapping Software), anche l'interfaccia pubblica di alcuni metodi per la costruzione di query a runtime – implementazione di cui si prende carico proprio il presente oggetto.
Implementa pertanto alcuni metodi, dichiarati in quella, che costruiscono, a runtime, query la cui esatta struttura non era possibile stabilire in anticipo (a meno di introdurre notevoli ridondanze e violare il paradigma DRY).

Author:
Giovanroberto Torre
See Also:
  • Constructor Details

    • QueryImpl

      public QueryImpl()
  • Method Details

    • getQueryStructures

      public String getQueryStructures(int idR, int idl4, int idl3, int idl2, int idl1)
      Description copied from interface: Query

      Costruisce dinamicamente la query che seleziona le strutture di un dato livello oppure le strutture di un livello gerarchico inferiore appartenenti a una struttura di livello gerarchico superiore, a seconda del valore dei parametri di input.

      Specified by:
      getQueryStructures in interface Query
      Parameters:
      idR - identificativo della rilevazione
      idl4 - identificativo della struttura di livello 4, -1 se si vogliono tutte le strutture di questo livello, oppure 0 se non interessa questo livello
      idl3 - identificativo della struttura di livello 3, -1 se si vogliono tutte le strutture di questo livello, oppure 0 se non interessa questo livello
      idl2 - identificativo della struttura di livello 2, -1 se si vogliono tutte le strutture di questo livello, oppure 0 se non interessa questo livello
      idl1 - identificativo della struttura di livello 1, -1 se si vogliono tutte le strutture di questo livello, oppure 0 se non interessa questo livello
      Returns:
      String - la query che seleziona le strutture desiderate
      See Also:
    • getQueryStructure

      public String getQueryStructure(int id, byte level)
      Description copied from interface: Query

      Costruisce dinamicamente la query che seleziona una struttura in base al suo identificativo, dato il livello identificante l'insieme entro cui cercarla.

      Specified by:
      getQueryStructure in interface Query
      Parameters:
      id - identificativo della struttura cercata
      level - marcatore dell'insieme entro cui effettuare la ricerca
      Returns:
      String - la query che seleziona la struttura desiderata
      See Also:
    • getQueryStructureParent

      public String getQueryStructureParent(int id, byte level)
      Description copied from interface: Query

      Costruisce dinamicamente la query che seleziona una struttura parent sulla base dell'identificativo della struttura child, dato il livello identificante l'insieme entro cui cercarla.

      Specified by:
      getQueryStructureParent in interface Query
      Parameters:
      id - identificativo della struttura child
      level - marcatore dell'insieme entro cui effettuare la ricerca
      Returns:
      String - la query che seleziona il parent della struttura desiderata
      See Also:
    • getQueryStructureBySurvey

      public String getQueryStructureBySurvey(int idR, int idl4, int idl3, int idl2, int idl1)
      Description copied from interface: Query

      Costruisce dinamicamente la query che seleziona una struttura di qualsivoglia livello (tupla di struttura_liv1 oppure di struttura_liv2... etc.) in base ai parametri ricevuti.

      In particolare, verifica prima la significatività dell'identificativo dell'eventuale struttura di livello 4;

      • se questo è significativo, restituisce la query per recuperare la struttura di livello 4 ed esce;
      • se invece questo non è significativo, verifica la significatività dell'identificativo della struttura di livello 3, etc.
      Alla fine dei test in cascata, restituisce la query per l'estrazione della struttura di primo livello, o un valore convenzionale (—) se nessun id è risultato significativo.
      Specified by:
      getQueryStructureBySurvey in interface Query
      Parameters:
      idR - identificativo della rilevazione
      idl4 - identificativo della struttura di livello 4, oppure -2 se non interessa questo livello
      idl3 - identificativo della struttura di livello 3, oppure -2 se non interessa questo livello
      idl2 - identificativo della struttura di livello 2, oppure -2 se non interessa questo livello
      idl1 - identificativo della struttura di livello 1, oppure -2 se non interessa questo livello
      Returns:
      String - la query che seleziona la struttura cercata oppure ‘–’ se nessun parametro id e' stato trovato significativo
      See Also:
    • 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
      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
    • getQueryMacroSubProcessAtByIdOrCode

      public String getQueryMacroSubProcessAtByIdOrCode(int idO, String codeO, 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 uno specifico, rispettivamente, macroprocesso, processo o sottoprocesso dato il suo id oppure il suo codice (è sufficiente passare uno dei due ma, se si passano tutti e due e sono attinenti allo stesso processo, non cambia niente nei risultati).

      Specified by:
      getQueryMacroSubProcessAtByIdOrCode in interface Query
      Parameters:
      idO - identificativo di macroprocesso_at, processo_at o sottoprocesso_at
      codeO - codice 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'elemento desiderato
      See Also:
    • getQueryAnswers

      public String getQueryAnswers(HashMap<String,LinkedHashMap<String,String>> params, int idSurvey, int numOfQuest, int idQuest, boolean getAll)
      Description copied from interface: Query

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

      Siccome potrebbero esservi piú insiemi di risposte a parità di parametri (se la stessa struttura e lo stesso processo sono stati scelti piú volte come "paletti" per l'intervista), il metodo prende in input anche un numero che limita il totale dei record da recuperare.

      Specified by:
      getQueryAnswers in interface Query
      Parameters:
      params - mappa contenente tutti i parametri di navigazione trovati
      idSurvey - identificativo della rilevazione
      numOfQuest - numero di record da recuperare
      idQuest - identificativo di un quesito, se si vuol recuperare solo le risposte date a quel quesito
      getAll - flag booleano; se true bisogna recuperare le risposte indipendentemente dall'id del quesito
      Returns:
      String - la query che seleziona l'insieme desiderato
      See Also:
    • 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
      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
    • getQueryProcessBySurvey

      public String getQueryProcessBySurvey(int idR, int idS, int idP, int idM)
      Description copied from interface: Query

      Costruisce dinamicamente la query che seleziona un processo di qualsivoglia livello (tupla di macroprocesso_at oppure di processo_at... etc.) in base ai parametri ricevuti.

      In particolare, verifica prima la significatività dell'identificativo dell'eventuale sottoprocesso_at;

      • se questo è significativo, restituisce la query per recuperare il sottoprocesso_at ed esce;
      • se invece questo non è significativo, verifica la significatività dell'identificativo del processo_at, etc.
      Alla fine dei test in cascata, restituisce la query per l'estrazione del macroprocesso_at, o un valore convenzionale (—) se nessun id è risultato significativo.
      Specified by:
      getQueryProcessBySurvey in interface Query
      Parameters:
      idR - identificativo della rilevazione
      idS - identificativo sottoprocesso anticorruzione
      idP - identificativo processo anticorruzione
      idM - identificativo macroprocesso anticorruzione
      Returns:
      String - la query che seleziona il processo anticorruttivo cercato oppure ‘–’ se nessun parametro id e' stato trovato significativo
      See Also:
    • getMeasuresByFactors

      public String getMeasuresByFactors(int idF, int idS, String codeM)
      Description copied from interface: Query

      Seleziona le misure che, tramite la loro tipologia, sono collegate a un fattore abilitante, il cui identificativo viene passato come parametro, escludendo alcune misure i cui codici, facoltativamente, vengono passati come parametro.

      Specified by:
      getMeasuresByFactors in interface Query
      Parameters:
      idF - identificativo del fattore abilitante
      idS - identificativo della rilevazione
      codeM - codici delle misure cercate
      Returns:
      String - la query che seleziona le misure cercate
      See Also:
    • getMeasureByRiskAndProcess

      public String getMeasureByRiskAndProcess(String idR, String idP, String idS, String codeM, int getAll)
      Description copied from interface: Query

      Seleziona l'elenco di tutte le misure di mitigazione trovate per un dato rischio, nel contesto di un dato processo, e in riferimento a una data rilevazione, i cui identificativi vengono passati come parametri (relazione 4-aria).

      Ogni riga, quindi, corrisponderà ad una distinta misura.

      Specified by:
      getMeasureByRiskAndProcess in interface Query
      Parameters:
      idR - identificativo del rischio corruttivo
      idP - identificativo processo anticorruzione
      idS - identificativo della rilevazione ("survey")
      codeM - codici delle misure
      getAll - valore convenzionale che permette di ottenere tutte le misure collegate al rischio e al processo considerati
      Returns:
      String - la query che seleziona le misure cercate
      See Also:
    • getMeasuresByStruct

      public String getMeasuresByStruct(int idR, int idS, byte level, String role, Date date1, Date date2)
      Description copied from interface: Query

      Seleziona le misure di mitigazione direttamente collegate a una struttura di dato livello, recuperando anche attributi esclusivi dei dettagli inseriti ai fini del monitoraggio e riferimenti alla struttura collegata alla misura stessa. Basa la selezione principalmente sull'identificativo della struttura e sul suo ruolo rispetto alla misura.

      Specified by:
      getMeasuresByStruct in interface Query
      Parameters:
      idR - identificativo della rilevazione
      idS - identificativo della struttura
      level - livello della struttura
      role - ruolo della struttura rispetto alla misura
      date1 - data al di sopra della quale la misura non deve essere considerata (è scaduta)
      date2 - data al di sotto della quale la misura non deve essere considerata (non era ancora stata dettagliata)
      Returns:
      String - la query che seleziona le misure cercate
      See Also: