/** * 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.squalecommon.enterpriselayer.businessobject.config; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * Lanceur de t�ches Poss�de un nom unique. Poss�de des t�ches d'analyses d�finies dans un ordre pr�cis Poss�de des * t�ches dites finales d�finies dans un ordre pr�cis * * @hibernate.class table="Tasks_User" lazy="true" discriminator-value="AbstractTasksUser" * @hibernate.discriminator column="subclass" */ public abstract class AbstractTasksUserBO { /** * Identifiant (au sens technique) de l'objet */ protected long mId; /** Le nom associ� */ protected String mName; /** La liste des t�ches d'analyses */ protected List mAnalysisTasks; /** La liste des t�ches finales */ protected List mTerminationTasks; /** * Constructeur par d�faut */ public AbstractTasksUserBO() { mId = -1; mName = ""; mAnalysisTasks = new ArrayList(); mTerminationTasks = new ArrayList(); } /** * M�thode d'acc�s pour mId * * @return la l'identifiant (au sens technique) de l'objet * @hibernate.id generator-class="native" type="long" column="AbstractTasksUserId" unsaved-value="-1" length="19" * @hibernate.generator-param name="sequence" value="tasksUser_sequence" */ public long getId() { return mId; } /** * Change la valeur de mId * * @param pId le nouvel identifiant */ public void setId( long pId ) { mId = pId; } /** * M�thode d'acc�s � mAnalysisTasks * * @return la liste des t�ches d'analyses * @hibernate.list table="Analysis_Task" cascade="all" lazy="false" * @hibernate.key column="TasksUserId" * @hibernate.index column="AnalysisTaskIndex" type="int" length="10" * @hibernate.many-to-many class="org.squale.squalecommon.enterpriselayer.businessobject.config.TaskRefBO" * column="TaskRefId" outer-join="auto" */ public List getAnalysisTasks() { return mAnalysisTasks; } /** * M�thode d'acc�s � mName * * @return le nom du profile * @hibernate.property name="name" column="Name" type="string" length="255" not-null="true" unique="true" * update="true" insert="true" */ public String getName() { return mName; } /** * M�thode d'acc�s � mTerminationTasks * * @return la liste des t�ches finales * @hibernate.list table="Termination_Task" cascade="all" lazy="false" * @hibernate.key column="TasksUserId" * @hibernate.index column="TerminationTaskIndex" type="int" length="10" * @hibernate.many-to-many class="org.squale.squalecommon.enterpriselayer.businessobject.config.TaskRefBO" * column="TaskRefId" outer-join="auto" */ public List getTerminationTasks() { return mTerminationTasks; } /** * Change la valeur de mAnalysisTasks * * @param pAnalysisTasks la nouvelle liste des t�ches d'analyses */ public void setAnalysisTasks( List pAnalysisTasks ) { mAnalysisTasks = pAnalysisTasks; } /** * Change la valeur de mName * * @param pName le nouveau nom du profile */ public void setName( String pName ) { mName = pName; } /** * Change la valeur de mTerminationTasks * * @param pTerminationTasks la nouvelle liste de t�ches finales */ public void setTerminationTasks( List pTerminationTasks ) { mTerminationTasks = pTerminationTasks; } /** * Ajoute une t�che d'analyse � la fin de la liste des t�ches d'analyses * * @param pTask la t�che � ajouter */ public void addAnalysisTask( TaskRefBO pTask ) { mAnalysisTasks.add( pTask ); } /** * Supprime une t�che de la liste des t�ches finales * * @param pTask la t�che � supprimer */ public void removeTerminationTask( TaskRefBO pTask ) { mTerminationTasks.remove( pTask ); } /** * Supprime une t�che d'analyse de la liste des t�ches d'analyses * * @param pTask la t�che � supprimer */ public void removeAnalysisTask( TaskRefBO pTask ) { mAnalysisTasks.remove( pTask ); } /** * Ajoute une t�che � ex�cuter en dernier � la fin de la liste des t�ches finales * * @param pTask la t�che � ajouter */ public void addTerminationTask( TaskRefBO pTask ) { mTerminationTasks.add( pTask ); } /** * Retourne la liste de toutes les t�ches pouvant �tre configur�es * * @return les t�ches configurables */ public Collection getConfigurableTasks() { Collection tasks = new ArrayList(); tasks.addAll( getConfigurableTasks( mAnalysisTasks ) ); tasks.addAll( getConfigurableTasks( mTerminationTasks ) ); return tasks; } /** * Renvoit les t�ches de la liste qui sont configurables * * @param pTasks une liste de TaskBO * @return la collection des t�ches configurables */ private Collection getConfigurableTasks( List pTasks ) { Collection tasks = new ArrayList(); TaskRefBO task; for ( int i = 0; i < pTasks.size(); i++ ) { task = (TaskRefBO) pTasks.get( i ); if ( task.getTask().isConfigurable() ) { tasks.add( task.getTask() ); } } return tasks; } }