package jadex.bdi.testcases.misc;
import jadex.bdi.runtime.Plan;
/**
* Modify a beliefset continuously by adding values.
*/
public class BeliefSetAddPlan extends Plan
{
//-------- attributes --------
/** The belief name. */
protected String belsetname;
/** The values. */
protected Object[] values;
/** The wait time. */
protected long time;
/** The flag for adding values over and over again. */
protected boolean loop = true;
//-------- constructors --------
/**
* Create a new plan.
*/
public BeliefSetAddPlan()
{
if(hasParameter("beliefsetname"))
this.belsetname = (String)getParameter("beliefsetname").getValue();
else
throw new RuntimeException("Parameter value 'beliefsetname' required.");
if(hasParameterSet("values"))
this.values = getParameterSet("values").getValues();
if(hasParameter("time"))
this.time = ((Long)getParameter("time").getValue()).longValue();
if(hasParameter("loop"))
this.loop = ((Boolean)getParameter("loop").getValue()).booleanValue();
}
//-------- methods --------
/**
* The body method is called on the
* instatiated plan instance from the scheduler.
*/
public void body()
{
long cnt = 0;
do
{
if(values!=null)
{
for(int i=0; i<values.length; i++)
{
getLogger().info("Adding beliefset value: "+belsetname+" val :"+values[i]);
getBeliefbase().getBeliefSet(belsetname).addFact(values[i]);
waitFor(time);
}
}
else
{
getLogger().info("Adding beliefset value: "+belsetname+" val :"+cnt);
getBeliefbase().getBeliefSet(belsetname).addFact(new Long(cnt++));
waitFor(time);
}
}
while(loop);
}
}