Package it.rol.util

Class Utils

java.lang.Object
it.rol.util.Utils
All Implemented Interfaces:
Constants, Serializable

public class Utils extends Object implements Constants

Classe contenitore di metodi di utilità e alcune costanti di uso comune

Author:
Giovanroberto Torre
See Also:
  • Constructor Details

    • Utils

      public Utils()
      Costruttore vuoto. Svolge la stessa funzione del costruttore di default.
  • Method Details

    • containsValues

      public static boolean containsValues(HashMap<String,String> params) throws NotFoundException

      Controlla se una HashMap, passata come argomento, contiene almeno una stringa non vuota.

      Restituisce il valore boolean true se la HashMap contiene almeno un valore significativo, false altrimenti.

      Parameters:
      params - - HashMap da controllare
      Returns:
      true se la HashMap contiene almeno un valore diverso da stringa vuota
      Throws:
      NotFoundException - se il valore dell'argomento vale null
    • checkQuote

      public static String checkQuote(String s)

      Controlla se una stringa contiene doppi apici. In questo caso, fa l'escape di ognuno di essi e restituisce la String modificata. Altrimenti, restituisce la stringa originale.

      Parameters:
      s - la String da controllare
      Returns:
      String la String con i doppi apici trattati, o la stringa originale se questi non sono stati trovati
    • capitalize

      public static String capitalize(String s)

      Data in input una stringa qualsiasi, restituisce la stringa avente lo stesso contenuto dell'originale ma con la prima lettera maiuscola.

      Parameters:
      s - la String da capitalizzare
      Returns:
      String la String da capitalizzare
    • isInteger

      public static boolean isInteger(String s)

      Controlla se una stringa corrisponde a un valore intero.

      Parameters:
      s - la String da controllare
      Returns:
      true se la String e' convertibile in intero, false altrimenti
    • parseString

      public static String parseString(int i)

      Converte un valore di tipo primitivo int in un oggetto di tipo String avente un formato predefinito.

      In particolare, se l'intero passato è strettamente minore di 10, aggiunge uno zero prima della cifra intera da convertire in String.

      Parameters:
      i - il valore numerico da convertire
      Returns:
      String il valore convertito, se tutto e' andato a buon fine
    • parseInt

      public static int parseInt(float f)

      Converte un valore di tipo primitivo float in uno di tipo primitivo int.

      Parameters:
      f - il valore da convertire
      Returns:
      int il valore convertito, se tutto e' andato a buon fine
    • safeParseInt

      public static int safeParseInt(String value, int defaultValue)

      Converte un valore di tipo String in uno di tipo primitivo int.

      Parameters:
      value - il valore da convertire
      defaultValue - valore di default in caso di conversione non possibile
      Returns:
      int il valore convertito, se tutto e' andato a buon fine
    • getCurrentDate

      public static GregorianCalendar getCurrentDate()

      Restituisce una data di default da utilizzare nell'estrazione di elementi soggetti a una scansione temporale.

      Ad esempio, elementi che hanno una data di inizio e una data di fine pubblicazione.
      Lo stesso vale in genere per tutti gli elementi che vengono mostrati a vario titolo, sotto forma di claim, di elenco, di lista, di menu, etc., nelle pagine del sito.

      La data di default restituita in questione è quella che la command utilizza come data di inizio ricerca di tutti gli elementi da mostrare nelle pagine intermedie e corrisponde, sostanzialmente, alla data corrente.

      Questo valore è molto utile nel caso in cui si debbano effettuare nell'intervallo di default estrazioni di elementi storicizzati dall'esterno del metodo in cui tali date determinanti l'intervallo di default sono calcolate, evitando quindi di dover riprodurre tutto il codice del calcolo di tali date (p.es., dal metodo pubblico che restituisce il numero di iniziative attive nell'intervallo di default).

      Il valore restituito è un GregorianCalendar piuttosto che una java.util.Date.
      Il motivo per cui è preferito un GregorianCalendar a una Date è che la java.util.Date ha molti metodi di trasformazione deprecati, mentre il Calendar ha una localizzazione piú agevole (v.) Siccome per motivi di retrocompatibilità spesso non va bene usare un Calendar ma ci vuole una Date (il DBWrapper usa le java.sql.Date), basta applicare una semplice trasformazione al valore restituito, quale la seguente:

       java.util.Date startdate = getDefaultStartDate().getTime();
       
      (o, se si preferisce, per ancor maggiore comodità, utilizzare il metodo di utilità convert(), definito piú avanti).

      Returns:
      GregorianCalendar - la data corrispondente al limite inferiore dell'intervallo di default di ricerca di elementi storicizzati
    • getCurrentDateNextYear

      public static GregorianCalendar getCurrentDateNextYear()

      Restituisce una data di default, pari alla data corrente traslata di un anno (la stessa data di oggi, ma fra un anno), da utilizzare nell'estrazione di elementi soggetti a una scansione temporale.

      Questo valore è molto utile nel caso in cui si debbano effettuare nell'intervallo di default estrazioni di contenuti storicizzati, dall'esterno del metodo in cui tali date determinanti l'intervallo di default sono calcolate, evitando quindi di dover riprodurre tutto il codice del calcolo di tali date (p.es., dal metodo pubblico che restituisce il numero di iniziative attive nell'intervallo di default).

      Il valore restituito è un GregorianCalendar piuttosto che una java.util.Date.
      Il motivo per cui è preferito un GregorianCalendar a una Date è che la java.util.Date ha molti metodi di trasformazione deprecati, mentre il Calendar ha una localizzazione piú agevole (v.) Siccome per motivi di retrocompatibilità spesso non va bene usare un Calendar ma ci vuole una Date (la WebStorage usa le Date), basta applicare una semplice trasformazione al valore restituito, quale la seguente:

       java.util.Date enddate = getDefaultEndDate().getTime();
       
      o, ancor piú comodamente, utilizzare il metodo di utilità convert().

      Returns:
      GregorianCalendar - la data corrispondente al limite superiore dell'intervallo di default di ricerca di elementi storicizzati
    • getCurrentDateInAFewYears

      public static GregorianCalendar getCurrentDateInAFewYears(int shift)

      Restituisce una data di default (vale a dire una data da usare nel caso in cui non esista una data costruita a tempo di esecuzione sulla base di parametri inseriti dall'utente) che la command utilizza come data di fine ricerca di elementi soggetti a una scansione temporale, piú uno shift a piacere passato come argomento (in pratica, equivale alla data odierna tra 'tot' anni, con 'tot' passato come argomento).

      Questo valore è molto utile nel caso in cui si debbano effettuare estrazioni di contenuti nell'intervallo di default dall'esterno del metodo in cui tali date sono calcolate, evitando quindi di dover riprodurre tutto il codice del calcolo di tali date (p.es., dal metodo pubblico che restituisce il numero di contenuti attivi nell'intervallo di default).
      Il motivo per il quale viene utilizzato uno shift è che non è sempre detto che l'anno di fine ricerca sia pari all'anno di inizio ricerca incrementato di 1. Potrebbe essere desiderabile effettuare una ricerca in un intervallo piú lungo, p.es. se si volesse mostrare il numero totale di iniziative attive nei prossimi tot anni, con tot passato come argomento.

      Il valore restituito è un GregorianCalendar piuttosto che una java.util.Date.
      Il motivo per cui è preferito un GregorianCalendar a una Date è che la java.util.Date ha molti metodi di trasformazione deprecati, mentre il Calendar ha una localizzazione piú agevole (v.) Siccome per motivi di retrocompatibilità spesso non va bene usare un Calendar ma ci vuole una Date (la WebStorage usa le Date), basta applicare una semplice trasformazione al valore restituito, quale la seguente:

       java.util.Date enddate = getDefaultEndDate(10).getTime();
       
      dove 10 è in questo caso, ovviamente, un valore arbitrario (sta per un intervallo di ricerca di 10 anni!).

      Parameters:
      shift - intero corrispondente al numero di anni da sommare all'anno di inizio ricerca per ottenere l'anno di fine ricerca
      Returns:
      GregorianCalendar - la data corrispondente al limite superiore dell'intervallo di default di ricerca di elementi storicizzati, con l'intervallo determinato dallo shift
    • getFirstDayOfYear

      public static GregorianCalendar getFirstDayOfYear(int year)

      Dato un anno in input, restituisce la data del 1° gennaio dell'anno stesso sotto forma di GregorianCalendar.

      Parameters:
      year - intero corrispondente a un anno
      Returns:
      GregorianCalendar - la data corrispondente al 1° gennaio di quell'anno
    • getLastDayOfYear

      public static GregorianCalendar getLastDayOfYear(int year)

      Dato un anno in input, restituisce la data del 31 dicembre dell'anno stesso sotto forma di GregorianCalendar.

      Parameters:
      year - intero corrispondente a un anno
      Returns:
      GregorianCalendar - la data corrispondente al 31 dicembre di quell'anno
    • getDate

      public static GregorianCalendar getDate(int days, int months, int years)

      Restituisce la data corrente, addizionata o sottratta di:

      • tot giorni
      • tot mesi
      • tot anni
      con giorni, mesi e anni passati come argomenti.

      1. Se si vuol sottrarre anziché aggiungere basta passare valori negativi dei parametri.
      2. Se si vuol sottrarre o aggiungere solo uno o solo un paio di parametri, ma non tutti e tre, basta passare zero (0) come valore dei parametri non interessanti.

      Questo metodo risulta utile quando bisogna passare ad una query una data come limite di periodo di estrazione.

      Notare che per ottenere qualsiasi data sarebbe sufficiente aggiungere o sottrarre il numero giusto di soli giorni. Tuttavia in alcuni casi può essere piú comodo passare lo shift giusto di mesi e anni piuttosto che ricavare la data voluta attraverso il numero di giorni in piú o in meno, e per questo motivo il metodo ha 3 possibili parametri (anche se nulla vieta di utilizzare solo il primo per ottenere tutte le date volute).

      Parameters:
      days - numero di giorni da aggiungere o togliere alla data corrente per ottenere una data desiderata
      months - numero di mesi da aggiungere o togliere alla data corrente per ottenere una data desiderata
      years - numero di anni da aggiungere o togliere alla data corrente per ottenere una data desiderata
      Returns:
      GregorianCalendar - la data desiderata, pari alla data corrente aggiunta o sottratta di giorni e/o mesi e/o anni specificati dai parametri
    • getDate

      public static GregorianCalendar getDate(GregorianCalendar date, int days, int months, int years) throws NotFoundException

      Restituisce la data passata come argomento, addizionata o sottratta di:

      • tot giorni
      • tot mesi
      • tot anni
      con giorni, mesi e anni passati come argomenti.

      1. Se si vuol sottrarre anziché aggiungere basta passare valori negativi dei parametri.
      2. Se si vuol sottrarre o aggiungere solo uno o solo un paio di parametri, ma non tutti e tre, basta passare zero (0) come valore dei parametri non interessanti.

      Notare che per ottenere qualsiasi data sarebbe sufficiente aggiungere o sottrarre il numero giusto di soli giorni. Tuttavia in alcuni casi può essere piú comodo passare lo shift giusto di mesi e anni piuttosto che ricavare la data voluta attraverso il numero di giorni in piú o in meno, e per questo motivo il metodo ha 3 possibili parametri (anche se nulla vieta di utilizzare solo il primo per ottenere tutte le date volute).

      Parameters:
      date - data sulla quale applicare la somma o sottrazione dei giorni/mesi/anni passati
      days - numero di giorni da aggiungere o togliere alla data corrente per ottenere una data desiderata
      months - numero di mesi da aggiungere o togliere alla data corrente per ottenere una data desiderata
      years - numero di anni da aggiungere o togliere alla data corrente per ottenere una data desiderata
      Returns:
      GregorianCalendar - la data desiderata, pari alla data corrente aggiunta o sottratta di giorni e/o mesi e/o anni specificati dai parametri
      Throws:
      NotFoundException - se si generano eccezioni sul controllo della data in input
    • format

      public static String format(GregorianCalendar date)
      Formatta una data di tipo java.util.GregorianCalendar secondo il formato standard italiano, ovvero in base alla maschera:
      "gg/mm/aaaa"
      e la restituisce sotto forma di oggetto String.
      Parameters:
      date - un java.util.GregorianCalendar da formattare e convertire
      Returns:
      String - una rappresentazione String della data originale
    • format

      public static String format(Date date)
      Formatta una data di tipo java.util.Date secondo il formato standard italiano, ovvero in base alla maschera:
      "gg/mm/aaaa"
      e la restituisce sotto forma di oggetto String.
      Parameters:
      date - una java.util.Date da formattare e convertire
      Returns:
      String - una rappresentazione String della data originale
    • format

      public static String format(GregorianCalendar date, String mask) throws CommandException

      Formatta una data di tipo java.util.GregorianCalendar secondo un filtro in base a maschera, ovvero in base a un pattern passato come argomento e la restituisce sotto forma di oggetto String.

      Per un elenco dei valori di pattern ammessi, v. la classe SimpleDateFormat ( javadoc)

      Parameters:
      date - un java.util.GregorianCalendar da formattare e convertire
      mask - la maschera in base a cui formattare la data
      Returns:
      String - una rappresentazione String della data originale
      Throws:
      CommandException - se il pattern
      See Also:
    • format

      public static Date format(String date, String initDateFormat, String endDateFormat) throws CommandException

      Formatta una data che riceve sotto forma di oggetto String basandosi su un parametro che ne indica il formato di partenza e su un parametro che indica il formato che dovrà avere un oggetto di tipo java.util.Date restituito come tipo di ritorno.

      Per un elenco dei valori di pattern ammessi, v. la classe SimpleDateFormat ( javadoc)

      Esempio:

      • "Tue Jul 07 00:00:00 CEST 2020"
      • EEE MMM dd HH:mm:ss zzz yyyy

      Parameters:
      date - una String che deve essere convertita
      initDateFormat - il formato con cui la String e' formattata
      endDateFormat - il formato che l'oggetto Date restituito dovra' avere
      Returns:
      java.util.Date - un oggetto Date costruito a partire dalla String ricevuta e formattato secondo il formato indicato
      Throws:
      CommandException - se si verifica un problema nella conversione di tipo o in qualche tipo di puntamento
      See Also:
    • format

      public static Date format(String date) throws CommandException

      Formatta una data che riceve sotto forma di oggetto String basandosi su un formato default come formato di partenza e su un formato di default per un oggetto di tipo java.util.Date restituito come tipo di ritorno.

      Parameters:
      date - una data sotto forma di String che deve essere convertita
      Returns:
      java.util.Date - un oggetto Date costruito a partire dalla String ricevuta e formattato secondo un formato predefinito
      Throws:
      CommandException - se si verifica un problema nella conversione di tipo o in qualche tipo di puntamento
    • format

      public static Time format(String time, String timeFormat) throws CommandException

      Formatta un orario che riceve sotto forma di oggetto String basandosi su un parametro che ne indica il formato di ingresso.

      Parameters:
      time - un orario sotto forma di String, che deve essere convertito
      timeFormat - il formato con cui la String da converire e' formattata
      Returns:
      java.sql.Time - un oggetto Time costruito a partire dalla String ricevuta
      Throws:
      CommandException - se si verifica un problema nella conversione di tipo o in qualche tipo di puntamento
    • convert

      public static Date convert(GregorianCalendar date)

      Converte un'istanza di java.util.GregorianCalendar in un'istanza di java.util.Date

      java.util.GregorianCalendar rispetto a java.util.Date è un oggetto preferibile per la gestione del tempo, perché la Date ha molti metodi di trasformazione deprecati, mentre il Calendar ha una localizzazione piú agevole (v.)

      Siccome per motivi di retrocompatibilità spesso non va bene usare un Calendar ma ci vuole una Date (la
      invalid reference
      it.rol.DBWrapper
      usa le Date), viene messo a disposizione questo metodo, che implementa la semplice trasformazione da GregorianCalendar a Date.
      Parameters:
      date - un java.util.GregorianCalendar da trasformare in una java.util.Date
      Returns:
      java.util.Date - una java.util.Date in cui il GregorianCalendar passato come argomento e' stato trasformato
      See Also:
    • convert

      public static Date convert(Date date)

      Converte un'istanza di java.util.Date in un'istanza di java.sql.Date

      Per rappresentare le date nelle interrogazioni SQL standard non va bene un'istanza di Date ma ci vuole piuttosto un'istanza di Date.

      Parameters:
      date - una java.util.Date da trasformare in una java.sql.Date
      Returns:
      java.sql.Date - una java.sql.Date in cui la java.util.Date passata come argomento e' stato trasformata
      See Also:
    • convertToCalendar

      public static GregorianCalendar convertToCalendar(Date date)

      Converte un'istanza di java.util.Date in un'istanza di java.util.GregorianCalendar

      Per estrarre l'anno da una java.util.Date nelle interrogazioni SQL standard non va bene un'istanza di Date ma ci vuole piuttosto un'istanza di Date.

      Parameters:
      date - una java.util.Date da trasformare in una java.sql.Date
      Returns:
      java.sql.Date - una java.sql.Date in cui la java.util.Date passata come argomento e' stato trasformata
      See Also:
    • getCurrentYearAsInt

      public static int getCurrentYearAsInt()

      Restituisce l'anno corrente sotto forma di intero primitivo.

      Questo metodo può essere utilizzato ad esempio nei footer, per l'indicazione del copyright (©).

      Returns:
      int - l'anno corrente sotto forma di intero primitivo
    • getCurrentYear

      public static String getCurrentYear()

      Restituisce l'anno corrente in formato String.

      Questo metodo è generalmente utilizzato ad esempio nei footer, per l'indicazione del copyright (©).

      Returns:
      String - l'anno corrente sotto forma di oggetto String
    • getYear

      public static int getYear(Date date)

      Estrae l'anno da una java.util.Date che accetta come argomento.

      Returns:
      int - l'anno corrente sotto forma di intero primitivo
    • getCurrentHour

      public static String getCurrentHour()

      Restituisce l'ora corrente in formato String.

      L'ora restituita è in formato h-24.

      Returns:
      String - l'ora corrente, in formato h-24, sotto forma di oggetto String
    • getCurrentMinutes

      public static String getCurrentMinutes()

      Restituisce i minuti correnti in formato String.

      I minuti restituiti sono in formato m-60.
      E.g., at 10:04:15.250 PM the MINUTE is 4.
      But: the method will return: "04" (as a String) .

      Notice that this method makes use of Dynamic String - as known as "StringBuffer", because:
      "Strings are constant; their values cannot be changed after they are created.
      String buffers support mutable strings.
      Because String objects are immutable they can be shared."

      Returns:
      String - i minuti correnti, in formato "mm", sotto forma di oggetto String
    • getCurrentSeconds

      public static int getCurrentSeconds()
      Returns current second within the minute (0-59) Perfect for real-time clocks, status updates
      Returns:
      int - Second component (e.g., 15:30:45 → 45)
    • getCurrentTime

      public static Time getCurrentTime()

      Restituisce l'orario corrente sotto forma di oggetto Time.

      L'orario restituito avrà il formato "hh:mm:ss" dove i secondi non saranno gli effettivi secondi correnti al momento del calcolo, ma i secondi allo scoccar del minuto (cioè azzerati).

      Returns:
      Time - l'ora corrente, in formato "hh:mm:ss", con i secondi arbitrariamente impostati a zero
      See Also:
    • getCurrentTimeExactly

      public static Time getCurrentTimeExactly()

      Restituisce l'orario corrente sotto forma di oggetto Time.

      L'orario restituito avrà il formato "hh:mm:ss" dove i secondi saranno gli effettivi secondi correnti.

      Returns:
      Time - l'ora corrente, in formato "hh:mm:ss"
      See Also:
    • getUnixEpoch

      public static GregorianCalendar getUnixEpoch()
      Restituisce lo UNIX EPOCH sotto forma di GregorianCalendar.
      Returns:
      GregorianCalendar - lo UNIX EPOCH sotto forma di oggetto GregorianCalendar
    • getYearsInBetween

      public static int getYearsInBetween(Date start, Date end)

      Restituisce il numero di anni che intercorrono tra due date passate come argomento. Se le date sono la data di nascita di una persona e la data odierna, restituisce l'età della persona.

      Parameters:
      start - data iniziale
      end - data finale
      Returns:
      int - il numero di anni che intercorrono tra end e start