All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kernelab.basis.AbstractAccomplishable Maven / Gradle / Ivy

There is a newer version: 0.0.19-RELEASE
Show newest version
package org.kernelab.basis;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public abstract class AbstractAccomplishable implements Accomplishable
{
	private Collection>	accomplishListeners;

	private boolean								accomplished;

	public AbstractAccomplishable()
	{
		setAccomplished(false);
		clearAccomplishedListeners();
	}

	/**
	 * To make the object accomplished.
* It is strongly recommended that calling this method as the last statement * in run() function in a Runnable object. * * @see AbstractAccomplishable#resetAccomplishStatus() */ public void accomplished() { if (!isAccomplished()) { setAccomplished(true); if (accomplishListeners != null) { for (AccomplishListener listener : accomplishListeners) { listener.accomplish(this.getAccomplishableSubject()); } } } } public void addAccomplishedListener(AccomplishListener listener) { accomplishListeners.add(listener); } public void clearAccomplishedListeners() { if (accomplishListeners == null) { accomplishListeners = new ArrayList>(); } else { accomplishListeners.clear(); } } protected abstract E getAccomplishableSubject(); public Collection> getAccomplishListeners() { return accomplishListeners; } public boolean isAccomplished() { return accomplished; } public void removeAccomplishedListener(AccomplishListener listener) { accomplishListeners.remove(listener); } /** * To reset the accomplish status.
* It is strongly recommended that calling this method as the first * statement in run() function in a Runnable object. * * @see AbstractAccomplishable#accomplished() */ public void resetAccomplishStatus() { setAccomplished(false); } protected void setAccomplished(boolean accomplished) { this.accomplished = accomplished; } protected void setAccomplishedListeners(List> listeners) { accomplishListeners = listeners; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy