/** * 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/>. */ //Source file: D:\\cc_views\\squale_v0_0_act\\squale\\src\\squalix\\src\\org\\squale\\squalix\\tools\\clearcase\\ClearCaseCleanerTask.java package org.squale.squalix.tools.clearcase.task; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.squale.squalix.core.AbstractSourceTerminationTask; import org.squale.squalix.core.TaskException; import org.squale.squalix.tools.clearcase.configuration.ClearCaseConfiguration; import org.squale.squalix.tools.clearcase.configuration.ClearCaseMessages; import org.squale.squalix.util.process.ProcessErrorHandler; import org.squale.squalix.util.process.ProcessManager; /** * Nettoie l'environnement de travail apr�s avoir l'analyse compl�te d'un projet.<br> * D�monte la vue ClearCase notamment.<br> * Elle est la derni�re t�che ex�cut�e sur un projet avant le calcul des r�sultats qualit�. * * @author m400832 * @version 2.1 */ public class ClearCaseCleanerTask extends AbstractSourceTerminationTask implements ProcessErrorHandler { /** * Logger. */ private static final Log LOGGER = LogFactory.getLog( ClearCaseCleanerTask.class ); /** * Instance de configuration. */ protected ClearCaseConfiguration mConfiguration; /** * Constructeur. * * @roseuid 42B97E86009E */ public ClearCaseCleanerTask() { mName = "ClearCaseCleanerTask"; } // Cette tache n'a pas d'influence dans le calcul de la taille max du file system /** * M�thode de lancement de la t�che de d�montage. * * @throws TaskException en cas d'�chec * @roseuid 42AE95AB03C8 */ public void execute() throws TaskException { /* r�cup�re la configuration clearcase */ try { mConfiguration = new ClearCaseConfiguration( mProject, mAudit ); /* d�montage */ umount(); } catch ( Exception e ) { throw new TaskException( e ); } } /** * M�thode cr��e pour �viter une pieuvre. * * @see #cleanView() * @throws Exception exception. */ private void umount() throws Exception { /* suppression de la vue */ if ( cleanView() ) { LOGGER.info( ClearCaseMessages.getString( "logs.view.umounted" ) ); /* si la vue n'a pu �tre d�mont�e */ } else { /* exception lanc�e */ throw new Exception( ClearCaseMessages.getString( "exception.view.umount_failed" ) ); } } /** * Supprime / d�monte la vue ClearCase * * @throws Exception si la commande UNIX produit des erreurs. * @return <code>true</code> si la vue est correctement d�mont�e, <code> * false</code> sinon. */ protected boolean cleanView() throws Exception { /* instanciation du process et ex�cution */ ProcessManager mgr = new ProcessManager( mConfiguration.getUmountViewCommand(), null, null ); /* si le processus se termine correctement */ return ( mgr.startProcess( this ) == 0 ); } /** * (non-Javadoc) * * @see org.squale.squalix.util.process.ProcessErrorHandler#processError(java.lang.String) */ public void processError( String pErrorMessage ) { initError( pErrorMessage ); } /** * {@inheritDoc} */ @Override public boolean doOptimization() { boolean doOptimization = false; if ( ClearCaseMessages.getString( "properties.task.optimization" ).equals( "true" ) ) { doOptimization = true; } return doOptimization; } }