/**
* 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/>.
*/
/*
* Cr�� le 22 juil. 05
*
* Pour changer le mod�le de ce fichier g�n�r�, allez � :
* Fen�tre>Pr�f�rences>Java>G�n�ration de code>Code et commentaires
*/
package org.squale.welcom.addons.access.bean;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.validator.GenericValidator;
import org.squale.welcom.addons.config.AddonsConfig;
import org.squale.welcom.outils.jdbc.WJdbc;
import org.squale.welcom.outils.jdbc.WJdbcMagic;
import org.squale.welcom.outils.jdbc.WStatement;
import org.squale.welcom.outils.jdbc.wrapper.ResultSetUtils;
import org.squale.welcom.struts.bean.WActionForm;
/**
* @author M327837 Pour changer le mod�le de ce commentaire de type g�n�r�, allez � :
* Fen�tre>Pr�f�rences>Java>G�n�ration de code>Code et commentaires
*/
public class ProfileBean
extends WActionForm
implements Serializable
{
/** ID pour la serialization */
static final long serialVersionUID = -5713952017034438217L;
/** logger */
private static Log log = LogFactory.getLog( ProfileBean.class );
/** Id du profil */
private String idProfile = "";
/** Name */
private String name = "";
/** Liste des droits d'acc�s */
private ArrayList accessList = new ArrayList();
/**
* @return Name
*/
public String getName()
{
return name;
}
/**
* @param string Name
*/
public void setName( final String string )
{
name = string;
}
/**
* @return IdProfile
*/
public String getIdProfile()
{
return idProfile;
}
/**
* @param string IdProfile
*/
public void setIdProfile( final String string )
{
idProfile = string;
}
/**
* @return AccessList
*/
public ArrayList getAccessList()
{
return accessList;
}
/**
* reload recharge a partir de la BD
*/
public void reloadAccessList()
{
try
{
final ProfileBean p = ProfileBean.getProfileBean( this.getIdProfile() );
accessList = p.getAccessList();
}
catch ( final ServletException e )
{
log.error( e, e );
}
}
/**
* @param list AccessList
*/
public void setAccessList( final ArrayList list )
{
accessList = list;
}
/**
* Remize a Zero
*/
public void setNull()
{
idProfile = "";
name = "";
accessList = new ArrayList();
}
/**
* Cr�� un Profile en fonction de idProfile
*
* @param pIdProfil : Probile
* @throws ServletException : Probleme SQL
* @return le bean profil
*/
public static ProfileBean getProfileBean( final String pIdProfil )
throws ServletException
{
final ProfileBean profileBean = new ProfileBean();
profileBean.setIdProfile( pIdProfil );
getProfileBean( profileBean );
return profileBean;
}
/**
* Met a jour un Profile en fonction de idProfile
*
* @param profil : Profile
* @throws ServletException : Probleme SQL
*/
public static void getProfileBean( final ProfileBean profil )
throws ServletException
{
WStatement sta = null;
java.sql.ResultSet rs = null;
WJdbc jdbc = null;
try
{
jdbc = new WJdbcMagic();
if ( !GenericValidator.isBlankOrNull( profil.getIdProfile() ) )
{
// Chargement du profil
sta = jdbc.getWStatement();
sta.add( "select * from" );
sta.add( AddonsConfig.WEL_PROFILE );
sta.addParameter( "where idprofile=?", profil.getIdProfile() );
rs = sta.executeQuery();
if ( ( rs != null ) && rs.next() )
{
ResultSetUtils.populate( profil, rs );
}
else
{
new ServletException( "idProfile not found" );
}
sta.close();
// Liste de reference
final ArrayList listAccessInt = new ArrayList();
final HashMap hashAccessInt = new HashMap();
sta = jdbc.getWStatement();
sta.add( "select * from " );
sta.add( AddonsConfig.WEL_PROFILE_ACCESSKEY_INT + " A," );
sta.add( AddonsConfig.WEL_ACCESSKEY + " B where" );
sta.add( "A.accesskey=B.accesskey and " );
sta.addParameter( "A.idprofile=?", profil.getIdProfile() );
sta.add( "order by B.idAccessKey " );
rs = sta.executeQuery();
if ( rs != null )
{
while ( rs.next() )
{
final AccessBean droits = new AccessBean();
ResultSetUtils.populate( droits, rs );
hashAccessInt.put( droits.getAccesskey(), droits );
listAccessInt.add( droits );
}
}
sta.close();
// Recupere son profil modifi� via l'IHM de l'appli
sta = jdbc.getWStatement();
sta.add( "select * from " );
sta.add( AddonsConfig.WEL_PROFILE_ACCESSKEY );
sta.add( "where" );
sta.addParameter( "idprofile=?", profil.getIdProfile() );
rs = sta.executeQuery();
if ( rs != null )
{
while ( rs.next() )
{
final AccessBean droits = new AccessBean();
ResultSetUtils.populate( droits, rs );
if ( hashAccessInt.containsKey( droits.getAccesskey() ) )
{
final AccessBean dr = (AccessBean) hashAccessInt.get( droits.getAccesskey() );
dr.setValue( droits.getValue() );
}
}
}
profil.setAccessList( listAccessInt );
sta.close();
}
}
catch ( final SQLException e )
{
throw new ServletException( e.getMessage() );
}
finally
{
if ( jdbc != null )
{
jdbc.close();
}
}
}
}