/**
* Copyright (C) 2008-2010, Squale Project - http://www.squale.org
*
* This file is part of Squale.
*
* Squale is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or any later version.
*
* Squale is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Squale. If not, see <http://www.gnu.org/licenses/>.
*/
package org.squale.squaleweb.applicationlayer.formbean.component;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionMapping;
import org.squale.squalecommon.datatransfertobject.component.AuditDTO;
import org.squale.squalecommon.enterpriselayer.businessobject.component.AuditBO;
import org.squale.squaleweb.applicationlayer.formbean.ActionIdFormSelectable;
import org.squale.squaleweb.resources.WebMessages;
import org.squale.squaleweb.util.SqualeWebActionUtils;
import org.squale.welcom.struts.bean.WIEditable;
/**
* Contient les donn�es d'une application.
*
* @author M400842
*/
public class AuditForm
extends ActionIdFormSelectable
implements WIEditable
{
/** Indique si l'audit a �t� modifi� */
private boolean mChanged;
/** Nom de l'audit. */
private String mName = "";
/** Date de l'audit. */
private Date mDate = null;
/** Type de l'audit. */
private String mType = "";
/** Status de l'audit */
private int mStatus;
/** le status sous la forme d'une string */
private String mStringStatus;
/** Date de version de l'audit dans le cas d'un audit de jalon. */
private Date mHistoricalDate;
/** Pour savoir si l'audit est �dit� ou non */
private boolean mEdited;
/** La version de SQUALE */
private String mSqualeVersion = AuditDTO.getCurrentSqualeVersion();
/** Le nom du serveur */
private String mServerName;
/**
* Constructeur par d�faut.
*/
public AuditForm()
{
}
/**
* Constructeur.
*
* @param pAudit le DTO.
*/
public AuditForm( final AuditDTO pAudit )
{
setId( pAudit.getID() );
if ( null != pAudit.getName() )
{
mName = pAudit.getName();
}
mDate = pAudit.getDate();
mType = pAudit.getType();
setApplicationId( "" + pAudit.getApplicationId() );
mStatus = pAudit.getStatus();
mStringStatus = AuditBO.STATUS_TAB[mStatus];
if ( null != pAudit.getHistoricalDate() )
{
setHistoricalDate( pAudit.getHistoricalDate() );
}
mSqualeVersion = pAudit.getSqualeVersion();
}
/**
* @return la date.
*/
public Date getDate()
{
return mDate;
}
/**
* @return le nom.
*/
public String getName()
{
return mName;
}
/**
* @return le type (suivi ou jalon).
*/
public String getType()
{
return mType;
}
/**
* @param pDate la date.
*/
public void setDate( Date pDate )
{
mDate = pDate;
}
/**
* @param pName le nom.
*/
public void setName( String pName )
{
mName = pName;
}
/**
* @param pString le type de l'application (jalon ou suivi).
*/
public void setType( String pString )
{
mType = pString;
}
/**
* @param lang locale d'affichage
* @return la date format�e pour l'affichage.
*/
public String getFormattedDate( Locale lang )
{
return SqualeWebActionUtils.getFormattedDate( lang, mDate, "date.format" );
}
/**
* @return le status de l'audit
*/
public int getStatus()
{
return mStatus;
}
/**
* @param pAuditStatus le nouveau status de l'audit
*/
public void setStatus( int pAuditStatus )
{
mStatus = pAuditStatus;
setStringStatus( pAuditStatus );
}
/**
* @return le status de l'audit sous la forme d'une string
*/
public String getStringStatus()
{
return mStringStatus;
}
/**
* @param pStatus le status sous la forme d'une chaine
*/
public void setStringStatus( int pStatus )
{
mStringStatus = AuditBO.STATUS_TAB[pStatus];
}
/**
* @return la date de verion des sources
*/
public Date getHistoricalDate()
{
return mHistoricalDate;
}
/**
* @param pHistoricalDate la date de version des sources
*/
public void setHistoricalDate( Date pHistoricalDate )
{
mHistoricalDate = pHistoricalDate;
}
/**
* @see org.squale.welcom.struts.bean.WActionForm#wValidate(org.apache.struts.action.ActionMapping,
* javax.servlet.http.HttpServletRequest)
* @param mapping le mapping
* @param request la requ�te
*/
public void wValidate( ActionMapping mapping, HttpServletRequest request )
{
// validation dans le cas d'un audit de jalon
setName( getName().trim() );
if ( getType().equals( AuditBO.MILESTONE ) )
{
if ( getName().length() == 0 )
{
addError( "name", new ActionError( "error.field.required" ) );
}
if ( null == getHistoricalDate() )
{
addError( "historicalDate", new ActionError( "error.date.uncorrectFormat",
WebMessages.getString( request, "date.format.simple" ) ) );
}
else
{
// La date historique doit �tre dans le pass�
Calendar today = Calendar.getInstance();
if ( getHistoricalDate().after( today.getTime() ) )
{
addError( "historicalDate", new ActionError( "error.audit.milestone.historical_date_in_the_future" ) );
}
}
}
else
{
// validation dans le cas d'un audit de suivi
if ( getDate() == null )
{
addError( "date", new ActionError( "error.date.uncorrectFormat",
WebMessages.getString( request, "date.format.simple" ) ) );
}
}
}
/**
* R�cup�re la date d'ex�cution de l'audit ou dans le cas d'un audit de jalon, sa date de version pour avoir une
* coh�rence dans l'ordre des audits par rapport au version du composant.
*
* @return la date "r�elle" de l'audit
*/
public Date getRealDate()
{
Date real = mDate;
if ( null != mHistoricalDate )
{
real = mHistoricalDate;
}
return real;
}
/**
* @see org.squale.welcom.struts.bean.WIEditable#isEdited()
* @return true si le form est �dit�
*/
public boolean isEdited()
{
return mEdited;
}
/**
* @see org.squale.welcom.struts.bean.WIEditable#setEdited(boolean)
* @param pEdited indique si le form est �dit�
*/
public void setEdited( boolean pEdited )
{
mEdited = pEdited;
}
/**
* @return si l'audit a �t� modifi�
*/
public boolean isChanged()
{
return mChanged;
}
/**
* @param pChanged indique si l'audit a �t� modifi�
*/
public void setChanged( boolean pChanged )
{
mChanged = pChanged;
}
// Stats pour admins
/**
* La date r�elle de commencement avec l'heure
*/
private Date mRealBeginningDate;
/**
* la date � laquelle l'audit s'est termin�
*/
private Date mEndDate;
/**
* la dur�e de l'audit sous forme XXhYYmZZs
*/
private String mDuration;
/**
* La taille maximum du file system prise par l'audit
*/
private Long mMaxFileSystemSize;
/**
* @return la dur�e de l'audit
*/
public String getDuration()
{
return mDuration;
}
/**
* @return la date de fin de l'audit
*/
public Date getEndDate()
{
return mEndDate;
}
/**
* @return la taille max du filesystem
*/
public Long getMaxFileSystemSize()
{
return mMaxFileSystemSize;
}
/**
* @return la date de d�but
*/
public Date getRealBeginningDate()
{
return mRealBeginningDate;
}
/**
* @param pDuration la dur�e de l'audit
*/
public void setDuration( String pDuration )
{
mDuration = pDuration;
}
/**
* @param pEndDate la date de fin
*/
public void setEndDate( Date pEndDate )
{
mEndDate = pEndDate;
}
/**
* @param pSize la taille du file system
*/
public void setMaxFileSystemSize( Long pSize )
{
mMaxFileSystemSize = pSize;
}
/**
* @param pRealBeginningDate la date r�elle de d�but
*/
public void setRealBeginningDate( Date pRealBeginningDate )
{
mRealBeginningDate = pRealBeginningDate;
}
/**
* Permet de reporter un audit programm�
*
* @param pRestartDelay le d�lai de reprogrammation param�tr�e de l'application associ�e � l'audit
*/
public void report( int pRestartDelay )
{
// Si il n'est pas en status programm� on ne fait rien
// et on ne devrait normalement pas appeler cette m�thode
if ( mStatus == AuditBO.NOT_ATTEMPTED )
{
GregorianCalendar date = new GregorianCalendar();
date.setTime( mDate );
date.add( GregorianCalendar.DAY_OF_MONTH, pRestartDelay );
mDate = date.getTime();
}
}
/**
* @return la version de SQUALE
*/
public String getSqualeVersion()
{
return mSqualeVersion;
}
/**
* @param pVersion la version de SQUALE
*/
public void setSqualeVersion( String pVersion )
{
mSqualeVersion = pVersion;
}
/**
* @return le nom du serveur
*/
public String getServerName()
{
return mServerName;
}
/**
* @param pServerName le nom du serveur
*/
public void setServerName( String pServerName )
{
mServerName = pServerName;
}
}