/*******************************************************************************
 * 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. *
 *******************************************************************************/

//Titre :        Comptage
//Version :      1.1
//Auteur :       Yann Ponty
//Société :      U. P. S.
//Description :  Comptage de sous chaines dans 

package GenRGenS.utility;

import java.io.*;
import java.util.*;
/**
 * La classe <code>LightState</code> modelise un etat leger dans l'automate 
 * utilise pour le denombrement du programme comptage.<DT>
 * Une instance de classe est caractérisée par son nom <code>Name</code> 
 * et par le nombre <code>Count</code> d'occurences de ce nom dans le(s) fichier(s).
 * parcouru(s)
 *
 * @author  Yann Ponty
 * @version 1.1
 * @see Comptage
 */
public class LightState
{
	private double _count = 0;
	private String _name = "";
	
	
	/**
	 * Construit un état de nom <code>name</code> et de 
	 * nbre d'occurences 0.
	 * @param name Le nom de la nouvelle instance de classe
	 * @param sigma Valeur initiale du pseudocomptage
	 */
	LightState(String name, double sigma)
	{
		_name = name;
		_count = sigma;
	}

  /**
   * Renvoie le nombre d'occurences de la sous chaîne <code>getName()</code>
   * constaté jusqu'à présent.
   * @return Le nombre d'occurences du nom de l'état
   */
	public double getCount()
	{
		return _count;
	}
	
	/**
	 * Fixe le nombre d'occurences constatées du nom de l'etat.
	 * @param n Le nouveau nombre d'occurences
	 */
	public void setCount(double n)
	{
		_count = n;
	}

	/**
	 * Incrémente le nombre d'occurences du nom de l'état dans un fichier.
	 */
	public void incCount()
	{
	  _count++;
	}

  /**
   * Renvoie le nom de l'instance de <code>LightState</code>
   * @return Le nom de l'instance de <code>LightState</code>
   */
	public String getName()
	{
		return _name;
	}

  /**
   * Fixe le nom de l'instance de <code>LightState</code>
   * @param s Le nouveau nom de l'instance de <code>LightState</code>
   */
	public void setName(String s)
	{
		_name = s;
	}
	
  /**
   * Renvoie une représentation de cette instance de <code>LightState</code> 
   * sous la forme d'une <code>String</code>
   * @return Une instance de <code>String</code> représentant l'objet
   */
	public String toString()
	{
	  return (_name +" : "+ _count);
	}
	
  /**
   * Renvoie true si les deux instances sont considérées comme "égales", false sinon.
   * @param e L'instance de <code>LightState</code> à comparer à l'objet
   * @return True si e et l'objet considéré ont même nom, faux sinon.
   */
	public boolean equals(LightState e)
	{
	  return _name.equals(e.getName());
	}
}