![JAR search and dependency download from the Maven repository](/logo.png)
org.kernelab.basis.AbstractAccomplishable Maven / Gradle / Ivy
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