/** * 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.welcom.struts.bean; import java.lang.reflect.InvocationTargetException; import java.sql.CallableStatement; import java.sql.SQLException; import org.apache.commons.beanutils.PropertyUtils; /** * Cette super-classe contient les m�thode de cryptage/d�cryptage des attributs d'un bean. Elle doit �tre h�rit�e par * les bean qui ont des attributs crypt�s. Les sous-classes doivent d�finir un tableau cryptableAttr suivant: Date de * cr�ation : (07/10/2002 15:56:50) * * @author: Administrator */ public class JCryptable extends JActionForm { /** * */ private static final long serialVersionUID = 8188744622028503758L; /** le cryptableAttr array */ private String cryptableAttr[] = null; /** * Crypte les attributs crypt�s d'un Bean Date de cr�ation : (07/10/2002 15:57:23) * * @param conn la connection * @throws JCryptableException exception pouvant etre levee */ public void crypte( final java.sql.Connection conn ) throws JCryptableException { try { final int nbAttr = cryptableAttr.length; // Pour chaque attr � crypter, appelle la proc�dure stock�e de cryptage aupr�s de la BDD for ( int i = 0; i < nbAttr; i++ ) { final String attr = cryptableAttr[i]; final String value = (String) PropertyUtils.getProperty( this, attr ); if ( ( value != null ) && ( value.length() > 0 ) ) { final CallableStatement cs = conn.prepareCall( "{? = call crypte_FCT(?)}" ); cs.registerOutParameter( 1, java.sql.Types.VARCHAR ); cs.setString( 2, value ); cs.executeUpdate(); PropertyUtils.setProperty( this, attr, cs.getString( 1 ) ); cs.close(); } } } catch ( final SQLException ex ) { throw new JCryptableException( ex.getMessage() ); } catch ( final IllegalAccessException ex ) { throw new JCryptableException( ex.getMessage() ); } catch ( final InvocationTargetException ex ) { throw new JCryptableException( ex.getMessage() ); } catch ( final NoSuchMethodException ex ) { throw new JCryptableException( ex.getMessage() ); } } /** * Decrypte les attributs crypt�s d'un Bean Date de cr�ation : (07/10/2002 15:57:13) * * @param conn la connection * @throws JCryptableException exception pouvant etre levee */ public void decrypte( final java.sql.Connection conn ) throws JCryptableException { try { if ( cryptableAttr != null ) { final int nbAttr = cryptableAttr.length; // Pour chaque attr crypt�, appelle la proc�dure stock�e de d�cryptage aupr�s de la BDD for ( int i = 0; i < nbAttr; i++ ) { final String attr = cryptableAttr[i]; final String value = (String) PropertyUtils.getProperty( this, attr ); if ( ( value != null ) && ( value.length() > 0 ) ) { final CallableStatement cs = conn.prepareCall( "{? = call decrypte_FCT(?)}" ); cs.registerOutParameter( 1, java.sql.Types.VARCHAR ); cs.setString( 2, value ); cs.executeUpdate(); PropertyUtils.setProperty( this, attr, cs.getString( 1 ) ); cs.close(); } } } } catch ( final SQLException ex ) { throw new JCryptableException( ex.getMessage() ); } catch ( final IllegalAccessException ex ) { throw new JCryptableException( ex.getMessage() ); } catch ( final InvocationTargetException ex ) { throw new JCryptableException( ex.getMessage() ); } catch ( final NoSuchMethodException ex ) { throw new JCryptableException( ex.getMessage() ); } } /** * Ins�rez la description de la m�thode ici. Date de cr�ation : (07/10/2002 16:56:21) * * @return java.lang.String[] */ public java.lang.String[] getCryptableAttr() { return cryptableAttr; } /** * Ins�rez la description de la m�thode ici. Date de cr�ation : (07/10/2002 16:56:21) * * @param newCryptableAttr java.lang.String[] */ public void setCryptableAttr( final java.lang.String newCryptableAttr[] ) { cryptableAttr = newCryptableAttr; } }