ssbm.net
Class Reply

java.lang.Object
  extended by ssbm.net.Reply

public class Reply
extends java.lang.Object

Questa classe rappresenta un messaggio di risposta inviato dal server per comunicare l'esito dell'esecuzione di un servizio richiesto da un client.
Questa classe fornisce dei metodi statici per la costruzione dei messaggi di risposta e consente di creare degli esemplari per l'interpretazione di tali messaggi.

Author:
Salvatore Piccione

Nested Class Summary
private static class Reply.Code
          Questa classe contiene i codici degli esiti dell'esecuzione di un servizio.
 
Field Summary
private  DataContainer dataTable
          L'istanza di DataContainer contenente i dati riportati nel messaggio.
private  DataContainersList dataTablesList
          L'istanza di DataContainersList contenente i dati riportati nel messaggio.
private static java.lang.String END_REGEX
           
private static java.lang.String ERROR_REGEX
          L'espressione regolare relativa ai codici degli esiti negativi.
private static int MAX_HEADER_LINES
          Il numero massimo di righe che può avere l'intestazione di un messaggio di risposta.
private static int MIN_HEADER_LINES
          Il numero minimo di righe che deve avere l'intestazione di un messaggio di risposta.
private static java.lang.String OK_REGEX
          L'espressione regolare relativi ai codici degli esiti positivi.
private static java.lang.String ONLY_BODY_REGEX
          L'espressione regolare dei codici degli esiti che devono essere comunicati con dei messaggi di risposta costituiti dal codice dell'esito e dal corpo.
private static java.lang.String ONLY_CODE_REGEX
          L'espressione regolare dei codici degli esiti che devono essere comunicati con dei messaggi di risposta costituiti solo dal codice dell'esito.
private static java.lang.String ONLY_HEADER_REGEX
          L'espressione regolare dei codici degli esiti che devono essere comunicati con dei messaggi di risposta costituiti solo dal codice dell'esito e dall'intestazione.
private static java.lang.String REGEX_SEPARATOR
           
private  java.lang.String resultCode
          Il codice che identifica l'esito di un servizio.
private static java.lang.String START_REGEX
           
 
Constructor Summary
Reply(java.lang.String message)
          Costruisce un'istanza con i campi d'esemplare impostati sulla base dell'analisi del messaggio passato come parametro.
 
Method Summary
private static java.lang.String createBodyXorHeadingMessage(DataContainer dataTable, boolean toBody)
          Costruisce l'intestazione o il corpo di un messaggio di testo da inviare al client.
static java.lang.String createMessage(DataContainer dataTable, Services service, Entities entity)
          Costruisce un messaggio che comunica l'esito positivo di un servizio.
static java.lang.String createMessage(DataContainersList dataTablesList)
          Costruisce un messaggio che comunica l'esito positivo di un servizio di recupero dei dati.
static java.lang.String createMessage(java.lang.Exception e)
          Costruisce un messaggio che comunica l'esito negativo di un servizio.
static java.lang.String createMessage(Services service, Entities entity)
          Costruisce un messaggio che comunica l'esito positivo di un servizio.
private  DataContainer extractToDataTable(java.lang.String block)
          Analizza un blocco del corpo del messaggio ed estrae i dati in esso contenuti.
 DataContainer getDataTable()
          Restituisce l'istanza di DataContainer popolata con i dati estratti dal messaggio.
 DataContainersList getDataTablesList()
          Restituisce l'istanza di DataContainersList popolata con i dati estratti dal messaggio.
 java.lang.Exception getException()
          Restituisce l'eccezione corrispondente all'esito negativo comunicato dal messaggio analizzato.
 java.lang.String getResultCode()
          Restituisce il codice che identifica l'esito di un servizio.
static java.lang.String getResultCode(Services service, Entities entity, boolean hasData)
          Restituisce il codice dell'esito positivo di un servizio.
 boolean hasDataTable()
          Indica se l'analisi del messaggio ha consentito di costruire un'istanza di DataContainer.
 boolean hasDataTablesList()
          Indica se l'analisi del messaggio ha consentito di costruire un'istanza di DataContainersList.
 boolean isError()
          Indica se il messaggio analizzato comunica un esito negativo (errore).
 boolean isNormal()
          Indica se il messaggio analizzato comunica un esito positivo.
private  void parseMessageBody(java.lang.String body)
          Analizza il corpo del messaggio ed estrae i dati in esso contenuti.
private  void parseMessageHeading(java.lang.String heading)
          Analizza il contenuto dell'intestazione del messaggio ed estrae i dati in esso contenuti.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dataTable

private DataContainer dataTable
L'istanza di DataContainer contenente i dati riportati nel messaggio.


dataTablesList

private DataContainersList dataTablesList
L'istanza di DataContainersList contenente i dati riportati nel messaggio.


resultCode

private java.lang.String resultCode
Il codice che identifica l'esito di un servizio.


MIN_HEADER_LINES

private static final int MIN_HEADER_LINES
Il numero minimo di righe che deve avere l'intestazione di un messaggio di risposta.

See Also:
Constant Field Values

MAX_HEADER_LINES

private static final int MAX_HEADER_LINES
Il numero massimo di righe che può avere l'intestazione di un messaggio di risposta.

See Also:
Constant Field Values

START_REGEX

private static final java.lang.String START_REGEX
See Also:
Constant Field Values

REGEX_SEPARATOR

private static final java.lang.String REGEX_SEPARATOR
See Also:
Constant Field Values

END_REGEX

private static final java.lang.String END_REGEX
See Also:
Constant Field Values

ONLY_HEADER_REGEX

private static final java.lang.String ONLY_HEADER_REGEX
L'espressione regolare dei codici degli esiti che devono essere comunicati con dei messaggi di risposta costituiti solo dal codice dell'esito e dall'intestazione.

See Also:
Constant Field Values

ONLY_CODE_REGEX

private static final java.lang.String ONLY_CODE_REGEX
L'espressione regolare dei codici degli esiti che devono essere comunicati con dei messaggi di risposta costituiti solo dal codice dell'esito.

See Also:
Constant Field Values

ONLY_BODY_REGEX

private static final java.lang.String ONLY_BODY_REGEX
L'espressione regolare dei codici degli esiti che devono essere comunicati con dei messaggi di risposta costituiti dal codice dell'esito e dal corpo.

See Also:
Constant Field Values

ERROR_REGEX

private static final java.lang.String ERROR_REGEX
L'espressione regolare relativa ai codici degli esiti negativi.

See Also:
Constant Field Values

OK_REGEX

private static final java.lang.String OK_REGEX
L'espressione regolare relativi ai codici degli esiti positivi.

See Also:
Constant Field Values
Constructor Detail

Reply

public Reply(java.lang.String message)
      throws NetException,
             java.lang.IllegalArgumentException
Costruisce un'istanza con i campi d'esemplare impostati sulla base dell'analisi del messaggio passato come parametro.

Parameters:
message - il messaggio di testo da analizzare per impostare opportunamente i campi d'esemplare.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • il codice identificativo dell'esito non rispetta le espressioni regolari definite in ONLY_BODY_REGEX, ONLY_CODE_REGEX e ONLY_HEADER_REGEX;
  • nel caso in cui il messaggio contenga l'intestazione, l'eccezione è lanciata nei seguenti casi:
    • l'intestazione ha un numero di campi inferiore al minimo o maggiore del massimo stabiliti
    • ;
    • una riga dell'intestazione non rispetta il formato: <nome_dato>: <valore_dato>.
  • nel caso in cui il messaggio contenga il corpo, l'eccezione è lanciata nei seguenti casi:
    • il corpo del messaggio non contiene almeno un blocco;
    • un blocco non contiene almeno una riga;
    • una riga del corpo non rispetta il formato <nome_dato>: <valore_dato>.
java.lang.IllegalArgumentException - se message è null.
Method Detail

parseMessageHeading

private void parseMessageHeading(java.lang.String heading)
                          throws NetException
Analizza il contenuto dell'intestazione del messaggio ed estrae i dati in esso contenuti.

Parameters:
heading - l'intestazione del messaggio.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • l'intestazione ha un numero di campi inferiore al minimo o maggiore del massimo stabiliti
  • ;
  • una riga dell'intestazione non rispetta il formato: <nome_dato>: <valore_dato>.

parseMessageBody

private void parseMessageBody(java.lang.String body)
                       throws NetException
Analizza il corpo del messaggio ed estrae i dati in esso contenuti.

Parameters:
body - il corpo del messaggio.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • il corpo del messaggio non contiene almeno un blocco;
  • un blocco non contiene almeno una riga;
  • una riga del corpo non rispetta il formato <nome_dato>: <valore_dato>.

extractToDataTable

private DataContainer extractToDataTable(java.lang.String block)
                                  throws NetException
Analizza un blocco del corpo del messaggio ed estrae i dati in esso contenuti.

Parameters:
block - il blocco del corpo del messaggio.
Returns:
il dizionario di dati ottenuto dall'analisi del blocco del messaggio.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • un blocco non contiene almeno una riga;
  • una riga del corpo non rispetta il formato <nome_dato>: <valore_dato>.

getDataTable

public DataContainer getDataTable()
Restituisce l'istanza di DataContainer popolata con i dati estratti dal messaggio.

Returns:
l'istanza di DataContainer contenente i dati ottenuti dall'analisi del messaggio oppure null se l'analisi del messaggio non ha permesso la costruzione di un'istanza di DataContainer.

getDataTablesList

public DataContainersList getDataTablesList()
Restituisce l'istanza di DataContainersList popolata con i dati estratti dal messaggio.

Returns:
l'istanza di DataContainersList contenente i dati ottenuti dall'analisi del messaggio oppure null se l'analisi del messaggio non ha permesso la costruzione di un'istanza di DataContainersList.

hasDataTable

public boolean hasDataTable()
Indica se l'analisi del messaggio ha consentito di costruire un'istanza di DataContainer.

Returns:
true se l'interpretazione del messaggio ha consentito la costruzione ed il popolamento di un'istanza di DataContainer; false altrimenti.

hasDataTablesList

public boolean hasDataTablesList()
Indica se l'analisi del messaggio ha consentito di costruire un'istanza di DataContainersList.

Returns:
true se l'interpretazione del messaggio ha consentito la costruzione ed il popolamento di un'istanza di DataContainersList; false altrimenti.

isError

public boolean isError()
Indica se il messaggio analizzato comunica un esito negativo (errore).

Returns:
true se il messaggio comunica un esito negativo, false altrimenti.

isNormal

public boolean isNormal()
Indica se il messaggio analizzato comunica un esito positivo.

Returns:
true se il messaggio comunica un esito positivo, false altrimenti.

getResultCode

public java.lang.String getResultCode()
Restituisce il codice che identifica l'esito di un servizio.

Returns:
il codice che identifica l'esito di un servizio.
See Also:
Reply.Code

getException

public java.lang.Exception getException()
Restituisce l'eccezione corrispondente all'esito negativo comunicato dal messaggio analizzato.

Returns:
uno dei seguenti valori:
  • l'istanza di DomainException se l'esito negativo è dovuto al verificarsi di un errore nel livello di dominio;
  • l'istanza di ServerException se l'esito negativo è dovuto al verificarsi di un errore interno del server;
  • null se il messaggio comunica un esito positivo.

createMessage

public static java.lang.String createMessage(DataContainer dataTable,
                                             Services service,
                                             Entities entity)
                                      throws NetException
Costruisce un messaggio che comunica l'esito positivo di un servizio.

Parameters:
dataTable - l'istanza di DataContainer contenente i dati ottenuti dall'esecuzione del servizio.
service - il valore dell'enumerazione Services che indica il nome del servizio eseguito.
entity - il valore dell'enumerazione Entities che indica il nome dell'entità di riferimento.
Returns:
il messaggio di testo che comunica l'esito positivo dell'esecuzione del servizio service relativo all'entità entity e che ha prodotto i dati riportati in dataTable.
Throws:
NetException - se si verifica una delle seguenti condizioni:
    dataTable è uguale a null;
  • l'esito non può essere comunicato con un messaggio costituito dal solo corpo.

createMessage

public static java.lang.String createMessage(DataContainersList dataTablesList)
                                      throws NetException
Costruisce un messaggio che comunica l'esito positivo di un servizio di recupero dei dati.

Parameters:
dataTablesList - l'istanza di DataContainersList contenente i dati ottenuti dall'esecuzione del servizio.
Returns:
il messaggio di testo che comunica l'esito positivo dell'esecuzione del servizio di recupero dati e che ha prodotto i dati riportati in dataTablesList.
Throws:
NetException - se dataTablesList è uguale a null.

createMessage

public static java.lang.String createMessage(Services service,
                                             Entities entity)
                                      throws NetException
Costruisce un messaggio che comunica l'esito positivo di un servizio.

Parameters:
service - il valore dell'enumerazione Services che indica il nome del servizio eseguito.
entity - il valore dell'enumerazione Entities che indica il nome dell'entità di riferimento oppure null se si tratta di un servizio di autenticazione.
Returns:
il messaggio di testo il messaggio di testo che comunica l'esito positivo dell'esecuzione del servizio service relativo all'entità entity e che non ha prodotto dati.
Throws:
NetException - se l'esito non può essere comunicato con un messaggio contenente solo il codice dell'esito.

createMessage

public static java.lang.String createMessage(java.lang.Exception e)
                                      throws java.lang.IllegalArgumentException
Costruisce un messaggio che comunica l'esito negativo di un servizio.

Parameters:
e - l'eccezione lanciata al verificarsi dell'errore.
Returns:
il messaggio di testo che comunica un errore.
Throws:
java.lang.IllegalArgumentException - se e non è un'istanza di DomainException o ServerException.

createBodyXorHeadingMessage

private static java.lang.String createBodyXorHeadingMessage(DataContainer dataTable,
                                                            boolean toBody)
                                                     throws NetException
Costruisce l'intestazione o il corpo di un messaggio di testo da inviare al client.

Parameters:
dataTable - l'istanza di DataContainer contenente i dati da inserire nell'intestazione/nel corpo del messaggio.
toBody - true se i dati devono essere inseriti nel corpo del messaggio, false se devono essere inseriti nell'intestazione del messaggio.
Returns:
l'intestazione o il corpo del messaggio.
Throws:
NetException - se dataTable è uguale a null.

getResultCode

public static java.lang.String getResultCode(Services service,
                                             Entities entity,
                                             boolean hasData)
Restituisce il codice dell'esito positivo di un servizio.

Parameters:
service - il valore dell'enumerazione Services che indica il nome del servizio eseguito.
entity - il valore dell'enumerazione Entities che indica il nome dell'entità di riferimento oppure null se si tratta di un servizio di autenticazione.
hasData - true se l'esecuzione del servizio ha prodotto dei dati, false altrimenti.
Returns:
il codice che denota l'esito positivo del servizio.
See Also:
Reply.Code