Class HomePageCommand

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

public class HomePageCommand extends ItemBean implements Command, Constants

HomePageCommand.java
Gestisce la root dell'applicazione.

Author:
Giovanroberto Torre
See Also:
  • Field Details

    • LOG

      protected static Logger LOG
      Log per debug in produzione
  • Constructor Details

    • HomePageCommand

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

    • init

      public void init(ItemBean voceMenu) throws CommandException

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

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

      public void execute(javax.servlet.http.HttpServletRequest req) throws CommandException

      Gestisce il flusso principale.

      Prepara i bean.

      Passa nella Request i valori che verranno utilizzati dall'applicazione.

      Specified by:
      execute in interface Command
      Parameters:
      req - HttpServletRequest contenente parametri e attributi, e in cui settare attributi
      Throws:
      CommandException - incapsula qualunque genere di eccezione che si possa verificare in qualunque punto del programma
    • getLoggedUser

      public static PersonBean getLoggedUser(javax.servlet.http.HttpServletRequest req) throws CommandException

      Restituisce l'utente loggato, se lo trova nella sessione utente, altrimenti lancia un'eccezione.

      Parameters:
      req - HttpServletRequest contenente la sessione e i suoi attributi
      Returns:
      PersonBean - l'utente loggatosi correntemente
      Throws:
      CommandException - se si verifica un problema nel recupero della sessione o dei suoi attributi
    • isLoggedUser

      public static boolean isLoggedUser(javax.servlet.http.HttpServletRequest req) throws CommandException

      Restituisce true se l'utente è loggato e se lo trova nella sessione utente, altrimenti restituisce false.

      Parameters:
      req - HttpServletRequest contenente la sessione e i suoi attributi
      Returns:
      boolean - flag di utente trovato in sessione
      Throws:
      CommandException - se si verifica un problema di puntamento
    • makeMegaMenu

      public static LinkedHashMap<ItemBean,ArrayList<ItemBean>> makeMegaMenu(String appName, String surCode) throws CommandException

      Restituisce una tabella hash contenente i sottomenu di voci di livello superiore, le quali svolgono anche la funzione di chiavi della tabella stessa.

      La tabella hash ha come chiave un oggetto di tipo ItemBean che rappresenta la voce principale, e come valore una struttura vettoriale ordinata, contenente le voci del sottomenu che alla chiave fa riferimento.
      Naturalmente, l'oggetto che fa da chiave implementa l'Override dei metodi necessari all'impiego come chiave, appunto, di tabella hash:

      equals(), hashCode()
      – oltre, a fare l'Override di altri metodi, utili per gli ordinamenti:
      compareTo(), toString()

      Parameters:
      appName - nome della web application, seguente la root, per la corretta generazione dei link delle voci
      surCode - identificativo della rilevazione corrente oppure della rilevazione di default in caso di accesso utente a piu' di una rilevazione
      Returns:
      LinkedHashMap<ItemBean, ArrayList<ItemBean>> - tabella hash contenente il menu completo, costituita da una chiave che contiene i dati della voce principale ed un valore che contiene la lista delle sue voci
      Throws:
      CommandException - se si verifica un problema
    • makeBreadCrumbs

      public static LinkedList<ItemBean> makeBreadCrumbs(String appName, String pageParams, String extraInfo) throws CommandException

      Restituisce una struttura vettoriale (with insertion order) contenente le breadcrumbs lasciate dall'utente nel percorso seguito fino alla richiesta corrente.

      Non si può passare direttamente la richiesta e lasciare che il metodo si arrangi a recuperare i parametri (con getParameterNames) perché la richiesta conosciuta da questa classe non corrisponde alla richiesta del chiamante. In linea teorica, si potrebbe effettuare questa operazione, modificando questo metodo in modo che accetti la richiesta come argomento, e passandola come parametro; tuttavia, la richiesta è un oggetto oneroso, e soprattutto creerebbe confusione in una Command che è creata a sua volta per gestire richieste...
      NOTA: In questa classe vi sono metodi che accettano come parametro una richiesta, ispezionandone e restituendone i valori, ma si tratta di metodi di debug, utilizzati dal programmatore finalizzati appunto ad ispezionare lo stato della richiesta, non metodi da utilizzare per generare output: quindi non è la stessa cosa.

      Parameters:
      appName - nome della web application, seguente la root
      pageParams - la queryString contenente tutti i parametri di navigazione
      extraInfo - parametro facoltativo; se significativo, permette di specificare una foglia ad hoc; in tal caso viene aggiunto il link alla ex-foglia
      Returns:
      LinkedList<ItemBean> - struttura vettoriale, rispettante l'ordine di inserimento, che contiene le voci seguite dall'utente nella navigazione fino alla richiesta corrente
      Throws:
      CommandException - se si verifica un problema nell'accesso a qualche parametro o in qualche altro puntamento
    • makeBreadCrumbs

      public static LinkedList<ItemBean> makeBreadCrumbs(LinkedList<ItemBean> nav, int items, String extraInfo) throws CommandException

      Prende in input una struttura di breadcrumbs già formata (serie di link corenti con il percorso seguito dall'utente fino alla richiesta corrente) e restituisce una struttura di breadcrumbs basata su quella ottenuta come parametro ma avente, come ultima foglia, un'etichetta passata come parametro, se questo è significativo, dando anche la possibilità di eliminare un numero di foglie a piacere, specificato tramite un parametro:

      0
      => non toglie nulla,
      1
      => toglie l'ultima foglia,
      2
      => toglie l'ultima e la penultima foglia
      etc.
      Esempio:
      makeBreadCrumbs(nav, 0, "label")
      aggiunge la foglia "label" alle breadcrumbs contenute in nav (la foglia per definizione non ha link).

      Parameters:
      nav - lista di breadcrumbs preesistente
      items - numero di foglie da potare (opzionale)
      extraInfo - etichetta da aggiungere come ultima foglia (opzionale)
      Returns:
      LinkedList<ItemBean> - struttura vettoriale, rispettante l'ordine di inserimento, rimaneggiata
      Throws:
      CommandException - se si verifica un problema nell'accesso a qualche parametro o in qualche altro puntamento
    • makeBreadCrumbs

      public static LinkedList<ItemBean> makeBreadCrumbs(LinkedList<ItemBean> nav, int index, ItemBean extraInfo) throws CommandException

      Prende in input una struttura di breadcrumbs già formata (serie di link corenti con il percorso seguito dall'utente fino alla richiesta corrente) e sostituisce la foglia di dato indice index con un nuovo oggetto che riceve come parametro extraInfo.

      Parameters:
      nav - lista di breadcrumbs preesistente
      index - l'indice della foglia da sostituire
      extraInfo - la foglia sostitutiva
      Returns:
      LinkedList<ItemBean> - struttura vettoriale, rispettante l'ordine originale, rimaneggiata
      Throws:
      CommandException - se si verifica un problema nell'accesso a qualche parametro o in qualche altro puntamento
    • getAttributes

      public static String getAttributes(javax.servlet.http.HttpServletRequest req)

      Restituisce i nomi e i valori degli attributi presenti in Request in un dato momento e in un dato contesto, rappresentati dallo stato del chiamante.

      Può essere utilizzato per verificare rapidamente quali attributi sono presenti in Request onde evitare duplicazioni o ridondanze.

      Ad esempio, richiamando questo metodo dal ramo "didattica" del sito web di ateneo, metodo requestByPage e.g.:
      req.setAttribute("reqAttr", getAttributes(req));
      e richiamandolo dalla pagina relativa, con la semplice:
      ${reqAttr}
      si ottiene:
       dipartimento = it.univr.di.uol.bean.DipartimentoBean@518dd094
       mO = {it.univr.di.uol.bean.SegnalibroBean@1ef0921d=[it.univr.di.uol.MenuVerticale@5ab38d6b, it.univr.di.uol.MenuVerticale@42099a52], it.univr.di.uol.bean.SegnalibroBean@4408bdc9=[it.univr.di.uol.MenuVerticale@4729f5d], it.univr.di.uol.bean.SegnalibroBean@19e3fa04=[it.univr.di.uol.MenuVerticale@13c94f3], it.univr.di.uol.bean.SegnalibroBean@463329e3=[it.univr.di.uol.MenuVerticale@3056de27]}
       lingue = it.univr.di.uol.Lingue@3578ce60
       FirstLanguage = it
       flagsUrl = ent=homeinvalid input: '&page'=didattica
       SecondLanguage = en
       logoFileDoc = [[it.univr.di.uol.bean.FileDocBean@5b11bbf9]]
       currentYear = 2015
       

      Parameters:
      req - HttpServletRequest contenente gli attributi che si vogliono conoscere
      Returns:
      un unico oggetto contenente tutti i valori e i nomi degli attributi settati in request nel momento in cui lo chiede il chiamante
    • getParameters

      public static String getParameters(javax.servlet.http.HttpServletRequest req, String mime)

      Restituisce i nomi e i valori dei parametri presenti in Request in un dato momento e in un dato contesto, rappresentati dallo stato del chiamante.

      Può essere utilizzato per verificare rapidamente quali parametri sono presenti in Request onde evitare duplicazioni e/o ridondanze.

      Esempi di richiamo: String par = HomePageCommand.getParameters(req, MIME_TYPE_HTML); String par = HomePageCommand.getParameters(req, MIME_TYPE_TEXT);

      Parameters:
      req - HttpServletRequest contenente i parametri che si vogliono conoscere
      mime - argomento specificante il formato dell'output desiderato
      Returns:
      un unico oggetto contenente tutti i valori e i nomi dei parametri settati in request nel momento in cui lo chiede il chiamante
    • isParameter

      public static boolean isParameter(javax.servlet.http.HttpServletRequest req, String paramName)

      Restituisce true se un nome di un parametro, il cui valore viene passato come argomento del metodo, esiste tra i parametri della HttpServletRequest; false altrimenti.

      Può essere utilizzato per verificare rapidamente se un dato parametro sia stato passato in Request.

      Parameters:
      req - HttpServletRequest contenente i parametri che si vogliono conoscere
      paramName - argomento specificante il nome del parametro cercato
      Returns:
      un unico oggetto contenente tutti i valori e i nomi dei parametri settati in request nel momento in cui lo chiede il chiamante
    • getLastSurvey

      public static CodeBean getLastSurvey() throws AttributoNonValorizzatoException

      Restituisce la rilevazione con data piú recente.

      Returns:
      LinkedList<CodeBean> - una lista ordinata di tutti i possibili valori con cui puo' essere descritta la complessita' di un elemento
      Throws:
      AttributoNonValorizzatoException - se l'id del CodeBean che rappresenta l'ultima rilevazione non e' stato valorizzato (p.es. per un difetto della query)