package jadex.bdi.examples.alarmclock;
import jadex.bdi.runtime.Plan;
import jadex.commons.SUtil;
/**
* Adapt the settings to the "alarms" beliefset by adding or removing alarms.
*/
public class SyncSettingsAlarmsPlan extends Plan
{
//-------- methods ----------
/**
* The body method is called on the
* instatiated plan instance from the scheduler.
*/
public void body()
{
Settings sets = (Settings)getScope().getBeliefbase().getBelief("settings").getFact();
Alarm[] sas = sets.getAlarms();
Alarm[] bas = (Alarm[])getScope().getBeliefbase().getBeliefSet("alarms").getFacts();
// Remove obsolete alarms from the setztings.
for(int i=0; i<sas.length; i++)
{
if(!SUtil.arrayContains(bas, sas[i]))
sets.removeAlarm(sas[i]);
}
// Add new alarms to the settings.
for(int i=0; i<bas.length; i++)
{
if(!SUtil.arrayContains(sas, bas[i]))
sets.addAlarm(bas[i]);
}
}
}