ssbm.net
Class Request

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

public class Request
extends java.lang.Object

Questa classe rappresenta un messaggio inviato per richiedere l’esecuzione di un servizio.
Fornisce dei metodi statici per la costruzione dei messaggi di richiesta e consente di istanziare degli esemplari per l'interpretazione di tali messaggi.

Author:
Salvatore Piccione

Nested Class Summary
private static class Request.Code
          Questa classe interna fornisce le costanti che rappresentano i codici dei servizi.
 
Field Summary
private static java.lang.String AUTENTHICATION_SERVICE_CODE_REGEX
          L'espressione regolare relativa al codice di un servizio di autenticazione.
private  DataContainer dataTable
          L'istanza di DataContainer contenente i dati presenti nel messaggio.
private  DataContainersList dataTablesList
          L'istanza di DataContainersList contenente i dati presenti nel messaggio.
private static java.lang.String END_REGEX
           
private  Entities entity
          Il valore dell'enumerazione Entities che denota l'entità coinvolta nel servizio richiesto.
private  java.lang.String ipAddress
          L'indirizzo IP dell'host dal quale è stato inviato il messaggio.
private static int MAX_HEADER_LINES
          Il numero massimo di righe che può avere l'intestazione di un messaggio del client.
private static int MIN_HEADER_LINES
          Il numero minimo di righe che deve avere l'intestazione di un messaggio del client.
private static java.lang.String REGEX_SEPARATOR
           
private  Services service
          Il valore dell'enumerazione Services che indica il servizio richiesto.
private static java.lang.String SERVICE_CODE_USING_DATA_LIST_REGEX
          L'espressione regolare relativa al codice di un servizio che utilizza i dati contenuti in un'istanza di DataContainersList.
private static java.lang.String START_REGEX
           
private static java.lang.String USE_SERVICE_CODE_REGEX
          L'espressione regolare relativa al codice di un servizio d'uso.
 
Constructor Summary
Request(java.lang.String message, java.lang.String ipAddress)
          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 createBody(DataContainer dataTable)
          Costruisce il corpo del messaggio per la richiesta di un servizio d'uso.
private static java.lang.String createHeading4Auth(DataContainer dataTable)
          Costruisce l'intestazione di un messaggio per la richiesta di un servizio di autenticazione.
private static java.lang.String createHeading4Use(java.lang.String username, Entities entity)
          Costruisce l'intestazione del messaggio per la richiesta di un servizio d'uso.
static java.lang.String createMessage(DataContainer dataTable, Entities entity, Services service)
          Costruisce un messaggio di testo per la richiesta d'esecuzione di un servizio d'uso.
static java.lang.String createMessage(DataContainer dataTable, Services service)
          Costruisce un messaggio che richiede l'esecuzione di un servizio di autenticazione.
static java.lang.String createMessage(DataContainersList dataTablesList, Entities entity, Services service)
          Costruisce un messaggio di testo per la richiesta d'esecuzione di un servizio d'uso.
private  DataContainer extractBodyToDataTable(java.lang.String body)
          Analizza il corpo di un messaggio di richiesta e ne estrae i dati contenuti.
 DataContainer getDataTable()
          Restituisce l'istanza di DataContainer contenente i dati riportati nel messaggio di richiesta.
 DataContainersList getDataTablesList()
          Restituisce l'istanza di DataContainersList contenente i dati riportati nel messaggio di richiesta.
 Entities getEntity()
          Restituisce il valore dell'enumerazione Entities che denota l'entità a cui si riferisce il messaggio di richiesta.
 Services getService()
          Restituisce il valore dell'enumerazione Services che denota il servizio richiesto con il messaggio.
 boolean hasDataTable()
          Indica se l'analisi del messaggio ha consentito di costruire e popolare un'istanza di DataContainer
 boolean hasDataTablesList()
          Indica se l'analisi del messaggio ha consentito di costruire e popolare un'istanza di DataContainersList
 boolean hasEntity()
          Indica se il messaggio di richiesta ha un entità di riferimento.
 boolean isAuthenticationService()
          Indica se il servizio richiesto nel messaggio è un servizio di autenticazione.
 boolean isUseService()
          Indica se il servizio richiesto nel messaggio è un servizio d'uso.
private  void parseAuthRequest(java.lang.String message)
          Analizza il messaggio di testo che richiede l'esecuzione di un servizio d'autenticazione.
private  void parseHeading(java.lang.String heading, boolean checkEntity, boolean toDataTable)
          Analizza l'intestazione di un messaggio di risposta.
private  void parseHeadingLine(java.lang.String line, boolean toDataTable)
          Analizza una riga dell'intestazione di un messaggio di risposta.
private  void parseUseRequest(java.lang.String message, java.lang.String serviceCode)
          Analizza il messaggio di testo che richiede l'esecuzione di un servizio d'uso.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ipAddress

private java.lang.String ipAddress
L'indirizzo IP dell'host dal quale è stato inviato il messaggio.


dataTable

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


dataTablesList

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


service

private Services service
Il valore dell'enumerazione Services che indica il servizio richiesto.


entity

private Entities entity
Il valore dell'enumerazione Entities che denota l'entità coinvolta nel servizio richiesto.


MIN_HEADER_LINES

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

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 del client.

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

AUTENTHICATION_SERVICE_CODE_REGEX

private static final java.lang.String AUTENTHICATION_SERVICE_CODE_REGEX
L'espressione regolare relativa al codice di un servizio di autenticazione.

See Also:
Constant Field Values

USE_SERVICE_CODE_REGEX

private static final java.lang.String USE_SERVICE_CODE_REGEX
L'espressione regolare relativa al codice di un servizio d'uso.

See Also:
Constant Field Values

SERVICE_CODE_USING_DATA_LIST_REGEX

private static final java.lang.String SERVICE_CODE_USING_DATA_LIST_REGEX
L'espressione regolare relativa al codice di un servizio che utilizza i dati contenuti in un'istanza di DataContainersList.

See Also:
Constant Field Values
Constructor Detail

Request

public Request(java.lang.String message,
               java.lang.String ipAddress)
        throws java.lang.IllegalArgumentException,
               NetException
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.
ipAddress - l'indirizzo IP dal quale proviene il messaggio di richiesta.
Throws:
java.lang.IllegalArgumentException - se message o ipAddress sono uguali a null.
NetException - se si verifica una delle seguenti condizioni:
  • nel caso in cui il messaggio richieda un servizio d'uso, l'eccezione è lanciata nei seguenti casi:
    • nel caso in cui il messaggio debba contenere l'intestazione, l'eccezione è lanciata nei seguenti casi:
      • l'intestazione contiene un numero di righe maggiore del massimo o minore del minimo stabiliti;
      • la riga non rispetta il formato <nome_dato>: <valore_dato>;
      • la riga imposta nuovamente l'entità di riferimento;
    • nel caso in cui il messaggio debba contenere il corpo, l'eccezione è lanciata nei seguenti casi:
      • il corpo non contiene almeno una riga;
      • la riga non rispetta il formato <nome_dato>: <valore_dato>;
  • nel caso in cui il messaggio richieda un servizio d'autenticazione, l'eccezione è lanciata nei seguenti casi:
    • il messaggio non ha l'intestazione;
    • l'intestazione contiene un numero di righe maggiore del massimo o minore del minimo stabiliti;
    • la riga non rispetta il formato <nome_dato>: <valore_dato>;
    • la riga imposta nuovamente l'entità di riferimento.
Method Detail

parseUseRequest

private void parseUseRequest(java.lang.String message,
                             java.lang.String serviceCode)
                      throws NetException
Analizza il messaggio di testo che richiede l'esecuzione di un servizio d'uso.

Parameters:
message - il messaggio di testo da analizzare privato della riga contenente il codice del servizio.
serviceCode - il codice che identifica il servizio richiesto.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • nel caso in cui il messaggio debba contenere l'intestazione, l'eccezione è lanciata nei seguenti casi:
    • l'intestazione contiene un numero di righe maggiore del massimo o minore del minimo stabiliti;
    • la riga non rispetta il formato <nome_dato>: <valore_dato>;
    • la riga imposta nuovamente l'entità di riferimento;
  • nel caso in cui il messaggio debba contenere il corpo, l'eccezione è lanciata nei seguenti casi:
    • il corpo non contiene almeno una riga;
    • la riga non rispetta il formato <nome_dato>: <valore_dato>.

extractBodyToDataTable

private DataContainer extractBodyToDataTable(java.lang.String body)
                                      throws NetException
Analizza il corpo di un messaggio di richiesta e ne estrae i dati contenuti.

Parameters:
body - il corpo del messaggio di testo.
Returns:
l'istanza di DataContainer contenente i dati riportati nel corpo del messaggio.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • il corpo non contiene almeno una riga;
  • la riga non rispetta il formato <nome_dato>: <valore_dato>.

parseAuthRequest

private void parseAuthRequest(java.lang.String message)
                       throws NetException
Analizza il messaggio di testo che richiede l'esecuzione di un servizio d'autenticazione.

Parameters:
message - il messaggio di testo da analizzare privato della riga contenente il codice del servizio.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • il messaggio non ha l'intestazione;
  • l'intestazione contiene un numero di righe maggiore del massimo o minore del minimo stabiliti;
  • la riga non rispetta il formato <nome_dato>: <valore_dato>;
  • la riga imposta nuovamente l'entità di riferimento.

parseHeading

private void parseHeading(java.lang.String heading,
                          boolean checkEntity,
                          boolean toDataTable)
                   throws NetException
Analizza l'intestazione di un messaggio di risposta.

Parameters:
heading - l'intestazione del messaggio da analizzare.
checkEntity - true se nell'intestazione deve essere presente l'indicazione dell'entità di riferimento, false altrimenti.
toDataTable - true se il risultato dell'analisi deve essere inserito in un'istanza di DataContainer, false altrimenti.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • l'intestazione contiene un numero di righe maggiore del massimo o minore del minimo stabiliti;
  • la riga non rispetta il formato <nome_dato>: <valore_dato>;
  • la riga imposta nuovamente l'entità di riferimento.

parseHeadingLine

private void parseHeadingLine(java.lang.String line,
                              boolean toDataTable)
                       throws NetException
Analizza una riga dell'intestazione di un messaggio di risposta.

Parameters:
line - la riga dell'intestazione del messaggio.
toDataTable - true se il risultato dell'analisi deve essere inserito in un'istanza di DataContainer, false altrimenti.
Throws:
NetException - se si verifica una delle seguenti condizioni:
  • la riga non rispetta il formato <nome_dato>: <valore_dato>;
  • la riga imposta nuovamente l'entità di riferimento.

getDataTable

public DataContainer getDataTable()
Restituisce l'istanza di DataContainer contenente i dati riportati nel messaggio di richiesta.

Returns:
l'istanza di DataContainer contenente i dati riportati nel messaggio di richiesta oppure null se l'analisi del messaggio non ha consentito la costruzione di un'istanza di DataContainer.

getDataTablesList

public DataContainersList getDataTablesList()
Restituisce l'istanza di DataContainersList contenente i dati riportati nel messaggio di richiesta.

Returns:
l'istanza di DataContainersList contenente i dati riportati nel messaggio di richiesta oppure null se l'analisi del messaggio non ha consentito la costruzione di un'istanza di DataContainersList.

hasDataTable

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

Returns:
true se l'analisi del messaggio ha consentito di costruire e popolare un'istanza di DataContainer, false altrimenti.

hasDataTablesList

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

Returns:
true se l'analisi del messaggio ha consentito di costruire e popolare un'istanza di DataContainersList, false altrimenti.

getEntity

public Entities getEntity()
Restituisce il valore dell'enumerazione Entities che denota l'entità a cui si riferisce il messaggio di richiesta.

Returns:
il valore dell'enumerazione Entities che denota l'entità a cui si riferisce il messaggio di richiesta oppure null se il messaggio non ha un'entità di riferimento.

hasEntity

public boolean hasEntity()
Indica se il messaggio di richiesta ha un entità di riferimento.

Returns:
true se il messaggio ha un'entità di riferimento, false altrimenti.

getService

public Services getService()
Restituisce il valore dell'enumerazione Services che denota il servizio richiesto con il messaggio.

Returns:
il valore dell'enumerazione Services che denota il servizio richiesto con il messaggio.

isUseService

public boolean isUseService()
Indica se il servizio richiesto nel messaggio è un servizio d'uso.

Returns:
true se il servizio richiesto è un servizio d'uso, false altrimenti.

isAuthenticationService

public boolean isAuthenticationService()
Indica se il servizio richiesto nel messaggio è un servizio di autenticazione.

Returns:
true se il servizio richiesto è un servizio di autenticazione, false altrimenti.

createMessage

public static java.lang.String createMessage(DataContainersList dataTablesList,
                                             Entities entity,
                                             Services service)
                                      throws NetException,
                                             java.lang.IllegalArgumentException
Costruisce un messaggio di testo per la richiesta d'esecuzione di un servizio d'uso.

Parameters:
dataTablesList - l'istanza di DataContainersList contenente i dati da inserire nel messaggio di richiesta.
service - il valore dell'enumerazione Services che denota il servizio richiesto.
entity - il valore dell'enumerazione Entities che denota l'entità di riferimento.
Returns:
il messaggio di testo che richiede l'esecuzione del servizio service relativo all'entità entity e contenente i dati riportati in dataTablesList.
Throws:
NetException - se si verifica una delle seguenti condizioni:
java.lang.IllegalArgumentException - se service è uguale a null.

createMessage

public static java.lang.String createMessage(DataContainer dataTable,
                                             Entities entity,
                                             Services service)
                                      throws java.lang.IllegalArgumentException,
                                             NetException
Costruisce un messaggio di testo per la richiesta d'esecuzione di un servizio d'uso.

Parameters:
dataTable - l'istanza di DataContainer contenente i dati da inserire nel messaggio di richiesta.
entity - il valore dell'enumerazione Entities che denota l'entità di riferimento.
service - il valore dell'enumerazione Services che denota il servizio richiesto.
Returns:
il messaggio che richiede l'esecuzione del servizio service relativo all'entità entity e avente come dati di riferimento quelli riportati in dataTable.
Throws:
java.lang.IllegalArgumentException - se service è uguale a null.
NetException - se si verifica una delle seguenti condizioni:
  • service non è un servizio d'uso;
  • dataTable è uguale a null o non contiene dati sufficienti per la costruzione del messaggio.

createHeading4Use

private static java.lang.String createHeading4Use(java.lang.String username,
                                                  Entities entity)
                                           throws NetException
Costruisce l'intestazione del messaggio per la richiesta di un servizio d'uso.

Parameters:
username - lo username dell'utente che effettua la richiesta.
entity - il valore dell'enumerazione Entities che denota l'entità a cui si riferisce il servizio richiesto.
Returns:
l'intestazione del messaggio di richiesta.
Throws:
NetException - se dataTable è uguale a null.

createBody

private static java.lang.String createBody(DataContainer dataTable)
                                    throws NetException
Costruisce il corpo del messaggio per la richiesta di un servizio d'uso.

Parameters:
dataTable - l'istanza di DataContainer contenente i dati da inserire nel corpo del messaggio.
Returns:
il corpo del messaggio di richiesta.
Throws:
NetException - se dataTable è uguale a null.

createMessage

public static java.lang.String createMessage(DataContainer dataTable,
                                             Services service)
                                      throws java.lang.IllegalArgumentException,
                                             NetException
Costruisce un messaggio che richiede l'esecuzione di un servizio di autenticazione.

Parameters:
dataTable - l'istanza di DataContainer contenente i dati da inserire nel messaggio di richiesta.
service - il valore dell'enumerazione Services che denota il servizio richiesto.
Returns:
il messaggio di testo che richiede l'esecuzione del servizio d'autenticazione service avente come dati di riferimento quelli riportati in dataTable.
Throws:
java.lang.IllegalArgumentException - se service è uguale a null.
NetException - se si verifica una delle seguenti condizioni:
  • service non è un servizio di autenticazione;
  • si verifica un errore nella costruzione del codice del servizio;
  • se dataTable è uguale a null.

createHeading4Auth

private static java.lang.String createHeading4Auth(DataContainer dataTable)
                                            throws NetException
Costruisce l'intestazione di un messaggio per la richiesta di un servizio di autenticazione.

Parameters:
dataTable - l'istanza di DataContainer contenente i dati da inserire nell'intestazione del messaggio.
Returns:
l'intestazione di un messaggio di testo per la richiesta di un servizio di autenticazione.
Throws:
NetException - se dataTable è uguale a null.