/*******************************************************************************
 * GenRGenS v.1.0, Generation of Random Genomic Sequences                      *
 * Copyright (C) 2001  Alain Denise/Yann Ponty                                 *
 *                                                                             *
 * This program is free software; you can redistribute it and/or               *
 * modify it under the terms of the GNU General Public License                 *
 * as published by the Free Software Foundation; either version 2              *
 * of the License, or (at your option) any later version.                      *
 *                                                                             *
 * This program 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 General Public License           *
 * along with this program; if not, write to the Free Software                 *
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. *
 *******************************************************************************/

package GenRGenS;

/*****************************************************************************
*              classe GenerationLink v1
*
*   Pour recevoir les informations relatives a un fichier de description
*   et la taille de la sequence a generer relativement aux terminaux
*   donnes dans le fichier.
*
*   Couple (entier, chaine : nom du fichier)
******************************************************************************/

import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;

/**
 * Les instances de la classe <code>GenerationLink</code> se chargent du "suivi"
 * de la génération avec fichier maître.
 */

public class GenerationLink
{
		protected int size;
		protected String fileName;
		protected String path="";

		/************************** Constructeurs *****************************/
		
		/** 
		 * Construit une nouvelle instance de la classe <code>GenerationLink</code>
		 * destinée à construire des séquences d'une taille fixée à partir d'un fichier
		 * de description.
		 * @param taille Un entier >=0
		 * @param nomFichier Le chemin vers un fichier existant et ouvrable en lecture.
		 */
		public GenerationLink(int taille, String nomfichier)
				throws IllegalArgumentException
		{
				if (taille<0)
						throw new IllegalArgumentException("GenerationLink(int,String) : expected positive size)");
				size = taille;
				fileName = nomfichier;			 
		};

		
		/** 
		 * Construit une nouvelle instance de la classe <code>GenerationLink</code>
		 * destinée à construire des séquences d'une taille fixée à partir d'un fichier
		 * de description.
		 * @param taille Un entier >=0
		 * @param nomFichier Le chemin vers un fichier existant et ouvrable en lecture.
		 * @param nomPath Le rep. du fichier de description.
		 */
		public GenerationLink(int taille, String nomfichier, String nomPath)
				throws IllegalArgumentException
		{
				if (taille<0)
						throw new IllegalArgumentException("GenerationLink(int,String,File) : expected positive size)");
				size=taille;
				fileName=nomfichier;	
				path = nomPath;			
		};
		/************************ Acces aux composants ***********************/

		/**
		 * Renvoie la taille souhaitée pour les séquences engendrées.
		 * @return la taille souhaitée pour les séquences .
		 */
		public int getSize()
		{ return size; };

		/**
		 * Renvoie le nom du fichier à partir duquelle la génération a lieu.
		 * @return le nom du fichier.
		 */
		public String getFileName()
		{ return fileName; };

		/**
		 * Renvoie le chemin du fichier à partir duquelle la génération a lieu.
		 * @return le chemin du fichier.
		 */
		public String getPath()
		{ return path; };

		/************************ Methodes utilitaires ***********************/
		
		/** 
		 * Retourne true ssi le fichier est lisible par l'application.
		 */
		public boolean canRead()
		{
				return ((new File(path,fileName)).canRead());
		};

		/** 
		 * Obtention d'un lecteur sur le fichier de description
		 * assurant la génération dans cette instance de <code>GenerationLink</code>
		 * @throws FileNotFoundException si le fichier est introuvable.
		 */
		public FileReader getFileReader()
				throws FileNotFoundException
		{
				return new FileReader(new File(path,fileName));
		};
};
