/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package org.jgap.supergenes;
import org.jgap.Gene;
/**
* A class, deciding, if the supergene allele combination is valid.
* Some classes Supergenes (like abstractSupergene) also implement
* supergeneValidator, deciding themselfs about the gene validity.
* In request to returs a validator, they return <i>this</i>.
* Other classes may require always to set the external validator.
*
* @author Audrius Meskauskas
* @since 2.0
*/
public interface SupergeneValidator {
/** String containing the CVS revision. Read out via reflection!*/
final static String CVS_REVISION = "$Revision: 1.3 $";
/**
* Return true if this gene combination is valid for
* the given supergene */
boolean isValid(Gene[] a_genes, Supergene a_for_supergene);
/**
* @return persistent string representation (if needed) of this validator.
* The method name is different allowing the same class to implement both
* Supergene and supergeneValidator.
* */
String getPersistent();
/**
* Set a persistend string representation (if needed) for this validator.
* The method name is different allowing the same class to implement both
* Supergene and supergeneValidator.
*/
void setFromPersistent(String a_string);
}