/* * 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.job; /** * Abstract base class for JGAP jobs. * * @author Klaus Meffert * @since 3.2 */ public abstract class JobBase implements IJob { /** String containing the CVS revision. Read out via reflection!*/ private final static String CVS_REVISION = "$Revision: 1.5 $"; private JobData m_data; private boolean m_finished; private JobResult m_result; public JobBase(JobData a_data) { m_data = a_data; } public void run() { try { m_result = execute(m_data); if (m_result == null) { throw new IllegalStateException("Result must not be null!"); } } catch (Exception ex) { /**@todo what to do here?*/ ex.printStackTrace(); throw new RuntimeException("Job failed"); } setFinished(); } public JobData getJobData() { return m_data; } public boolean isFinished() { return m_finished; } protected void setFinished() { m_finished = true; } public JobResult getResult() { if (!m_finished) { return null; } if (m_result == null) { throw new IllegalStateException("Result must not be null!"); } return m_result; } }