/*
* 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.impl;
import java.io.*;
import org.jgap.*;
import org.jgap.util.*;
/**
* Default implementation for initializing Chromosomes.
*
* @author Klaus Meffert
* @since 2.6
*/
public class DefaultInitializer
implements IInitializer, ICloneable, Serializable {
/** String containing the CVS revision. Read out via reflection!*/
private static final String CVS_REVISION = "$Revision: 1.10 $";
public boolean isHandlerFor(final Object a_obj, final Class a_class) {
if (IChromosome.class.isAssignableFrom(a_class)) {
return true;
}
else {
if (a_obj != null && IInitializer.class.isAssignableFrom(a_class)) {
IInitializer initer = (IInitializer) a_obj;
return initer.isHandlerFor(null, a_class);
}
else {
return false;
}
}
}
public Object perform(final Object a_obj, final Class a_class,
final Object a_params)
throws Exception {
if (IInitializer.class.isAssignableFrom(a_class)) {
return ( (IInitializer) a_obj).perform(null, a_class, a_params);
}
else {
throw new IllegalArgumentException("DefaultInitializer not suited for"
+ " class "
+ a_class.getName()
+ " !");
}
}
/**
* @return deep clone of this instance
*
* @author Klaus Meffert
* @since 3.2
*/
public Object clone() {
return new DefaultInitializer();
}
}