/** * 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\\core\\TaskUtility.java package org.squale.squalix.core; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.squale.squalecommon.enterpriselayer.businessobject.config.TaskRefBO; import org.squale.squalix.messages.Messages; /** * Cette classe fournit un certin nombre de m�thodes "utilitaires" utilisables par les toutes les t�ches et le moteur. * * @author m400842 (by rose) * @version 1.0 */ public class TaskUtility { /** * Logger */ private static final Log LOGGER = LogFactory.getLog( TaskUtility.class ); /** * Retourne une instance de la classe de la classe dont le nom est pass� en param�tre. * * @param pClassName le nom enti�rement sp�cifi� de la classe. * @return l'instance d'une t�che. * @throws Exception si un probl�me d'instanciation appara�t. * @roseuid 42CAA2A1013B */ private static AbstractTask instanciate( String pClassName ) throws Exception { AbstractTask task = null; try { Class theClass = Class.forName( pClassName ); task = (AbstractTask) theClass.newInstance(); } catch ( Exception e ) { LOGGER.error( e, e ); LOGGER.error( Messages.getString( "exception.task_not_found" ) + pClassName ); task = null; } return task; } /** * Cr�e un arbre de t�ches � partir des descripteurs d'ex�cution.<br /> * Pour chaque t�che, une instance est cr��e, et ses enfants lui sont attribu�s.<br /> * Cette action est fait de mani�re r�cursive sur toutes les t�ches sous la racine du descripteur d'ex�cution. * * @param pTaskRef le nom de la classe de la tache * @param pProjectId l'id du projet analys�. Peut-�tre null. * @param pAuditId l'id de l'audit pour lequel est ex�cut� la t�che. Peut-�tre null. * @param pApplicationId l'id de l'application contenant ce projet * @param pData les param�tres temporaires * @return la t�che racine. * @roseuid 42CD40730176 */ public static AbstractTask createTask( TaskRefBO pTaskRef, long pProjectId, long pApplicationId, long pAuditId, TaskData pData ) { AbstractTask task = null; try { // Cr�e une nouvelle instance de t�che task = instanciate( pTaskRef.getTask().getClassName() ); if ( null != task ) { // On attribue � la t�che les valeurs de ses attributs // pattern IOC task.setProjectId( new Long( pProjectId ) ); task.setAuditId( new Long( pAuditId ) ); task.setApplicationId( new Long( pApplicationId ) ); task.setStatus( AbstractTask.NOT_ATTEMPTED ); task.setMandatoryTask( pTaskRef.getTask().isMandatory() ); task.setData( pData ); task.setTaskParameters( pTaskRef.getParameters() ); } } catch ( Exception e ) { LOGGER.error( e ); } return task; } /** * Annule la tache qui a �chou� et celles qui suivaient .<br /> * Le statut qui leur est attribu� est CANCELLED. * * @param pTask t�che � annuler * @roseuid 42D22EF8027A */ public static void stopTask( AbstractTask pTask ) { if ( pTask.getStatus() != AbstractTask.RUNNING ) { pTask.setStatus( AbstractTask.CANCELLED ); } } }