Menu

Home

Mattiuzzi Gianluca

GenericStruts

GenericStruts è una libreria creata per semplificare l'implementazione di applicazioni Web basate su Framework STRUTS e HIBERNATE.
Vengono offerte una serie di classi che implementano già le principali funzionalità tipiche, generalmente richieste in questo modello di sviluppo.

I package principali che compongono la libreria sono:

action.generic

Il Package action.generic raggruppa classi utilizzabili come base per l'implementazione delle proprie STRUTS ACTION.
Vengono messe a disposizione le classi GenericAction e GenericModelAction, che estendendo ActionSupport.
E' possibile dunque avvantaggiarsi delle funzionalità di GenericAction o GenericModelAction estendendo le proprie STRUTS ACTION con queste classi anzichè con ActionSupport.

public class MyAction extends GenericAction { .... }

public class MyModelAction extends GenericModelAction {
     public MyModelAction() { super(MyModel.class); }
}

GenericAction : classe che estende ActionSupport aggiungendo una serie di metodi comuni

Passaggio di parametri ad una Struts Action

Metodi disponibili in GenericAction e GenericModelAction

public Map<String, String> getParams();
public void setParams(final Map<String, String> params);
public void addParam(String key, String value);

esempio di passaggio di parametri statici a MyAction da struts.xml

<action name="test" class="action.MyAction">
    ....
    <param name="myparam">myvalue</param>
    ....
</action>

https://struts.apache.org/docs/static-parameters-interceptor.html

Accesso agli ogggetti Request e Response

// REQUEST
public HttpServletRequest getServletRequest();
public void setServletRequest(HttpServletRequest request);

https://struts.apache.org/docs/how-can-we-access-the-httpservletrequest.html

// RESPONSE
public HttpServletResponse getServletResponse();
public void setServletResponse(HttpServletResponse response);

https://struts.apache.org/docs/how-can-we-access-the-httpservletresponse.html

Gestione della Autenticazione

// AUTHENTICATION BEAN
public IAuthBean getAuthBean();
// SET ROLE NAMES
public static void setAdminRole(final String roleName);
public static void setPowerUserRole(final String roleName);
// IS AUTHENTICATED USERS IN ROLE?
public boolean getIsInAdminRoleUserMode();
public boolean getIsInPowerUserRoleUserMode();
public boolean getIsAtLeastInPowerUserRoleUserMode();

Gestisce i messaggi e gli errori per la visualizzazione Web e per la stampa su standard output

// MESSAGES
public void addActionStandardMessage(final GenericException e);
// ERRORS
public void addActionStandardError(final GenericException e);
// SECURITY ERRORS
public void addSecurityError(final String securityMessage);
protected void commitSecurityErrors();
// PRINT TO STANDARD OUTPUT
protected void printStandardMessage(final Throwable e);
protected void printStandardError(final Throwable e);

esempio

public class MyAction extends GenericAction {

....

// EXAMPLE 1
public Collection<MyModel> getListMyModel() {
    try { return MyModelDAO.getList(null); }
    catch (final GenericException e) {
        addActionStandardError(e);
        printStandardError(e);
    }
    return null;
}

// EXAMPLE 2
@SkipValidation
public void doSomething() {
    try { ... your code ... }
catch (final GenericException e) { addActionStandardError(new GenericException("something is wrong",e));    }
}

// EXAMPLE 3
@Override
public boolean getLoadSecurityConstraint() {
    if (getIsInAdminRoleUserMode()) return true;
    addSecurityError("Admin role required for view MyModel "+model.getId());
    return false;
}

....

}

Invio di una Mail

public String sendByMail();
public ISendMailBean getSendMailBean() throws GenericException;

esempio

public class MyAction extends GenericAction {

...

@Override
public ISendMailBean getSendMailBean(final MyModel model) throws GenericException {
    final Collection<String> mailAddressA = new ArrayList<String>();
    final Collection<String> mailAddressCC = new ArrayList<String>();
    final Collection<String> mailAddressBCC = new ArrayList<String>();
    // A
    try {
        if (model.getUser().getEmail()!=null)
            mailAddressA.add(model.getUser().getEmail());
    }
    catch (final Exception e) {}
    // CC
    try {
        if (model.getAnotherUser().getEmail()!=null)
            mailAddressCC.add(model.getAnotherUser().getEmail());
    }
    catch (final Exception e) {}
    // BCC
    mailAddressBCC.add(MAILBACKUP);

    final ISendMailBean sendMailBean = new SendMailBean();
    sendMailBean.setMailTO(mailAddressA);
    sendMailBean.setMailCC(mailAddressCC);
    sendMailBean.setMailBCC(mailAddressBCC);

    //SUBJECT
    sendMailBean.setSubject("My subject");

    //CONTENT
    sendMailBean.setContent("My content");

    return sendMailBean;
}

...

}

struts.xml

<action name="testmail" class="action.MyAction" method="sendByMail">
    ....
</action>

Upload di File multipli

public IMultipleFileUploadBean getFileUploadBean();
public void setFileUploadBean(final IMultipleFileUploadBean multipleFileUploadBean);

Paginazione di una lista di risultati

public IResultPaginator getResultPaginator();
public void nextPage();
public void previousPage();
public void firstPage();
public void lastPage();

GenericModelAction : estende GenericAction aggiungendo il supporto per MODEL e DAO (Pattern MVC)

Cosa fa?

Rispetto alla GenerinAction, questa classa fornisce i metodi per la gestione del modello

Le sue Funzionalità

  1. Accesso a un modello ( Get and Set )
  2. Caricamento, editing,salvataggio,eliminazione e creazione di un modello (CRUD).
  3. Implementa una politica di sicurezza sul modello rispetto alle azioni CRUD
  4. Validazione di un modello
  5. Offre una lista oppure Lista paginata di tutti i modelli di un certo tipo
  6. Offre un Count di tutti i modelli di un certo tipo
  7. Supporta la ricerca nei modelli mediante l’Override del metodo getListBySearchPattern

Cosa aggiunge GenericModelAction?

L’accesso ad un modello - oggetto che implementa l’interfaccia IModel.
IModel è una interfaccia che richiede l’implementazione dei metodi getId e setId per ottenere e impostare rispettivamente l’indentificativo univoco di un modello (UID).

action.generic.supportBean

dao.hibernate

Raggruppa una serie di metodi necessari per la gestione dei DAO Hibernate


HibernateSessionFactoryHelper : classe che implementa logiche di gestione delle sessioni Hibernate

Le sue funzioni

  1. Aprire/chiudere sessione
  2. Gestire transazione (Begin,commit,Rollback)

HibernateDAO : estende HibernateSessionFactoryHelper fornendo una serie di metodi per la gestione dei DAO

Le sue funzioni

  1. CRUD
  2. Esegue interrogazioni su dati persistenti mediante Criteria, Query e HQL (Hibernate Query Language)
  3. getList e Count

exception.generic

tutte le eccezioni generate dalla libreria utilizzano oggetti di tipo GenircException(Estensione di Exception)

init.generic

implementa Servlet Context Listener

Cosa fa?

Inizializza campi statici delle classi di GenericStruts leggendo i parametri dal contesto (Context.xml)

interceptor

implementa il pattern OpenSessionInView

mail

Permette di inviare Mail
MailNotifier: Thread che per l’invio di Mail in background schedulate

model.generic

implementa una model standard utilizzato per i DAO Hibernate

Example 1