package jadex.bdi.model.impl.flyweights;
import jadex.bdi.model.IMBelief;
import jadex.bdi.model.IMBeliefReference;
import jadex.bdi.model.IMBeliefSet;
import jadex.bdi.model.IMBeliefSetReference;
import jadex.bdi.model.IMBeliefbase;
import jadex.bdi.model.OAVBDIMetaModel;
import jadex.bdi.model.editable.IMEBelief;
import jadex.bdi.model.editable.IMEBeliefReference;
import jadex.bdi.model.editable.IMEBeliefSet;
import jadex.bdi.model.editable.IMEBeliefSetReference;
import jadex.bdi.model.editable.IMEBeliefbase;
import jadex.rules.state.IOAVState;
import java.util.Collection;
import java.util.Iterator;
/**
* Flyweight for the belief base model.
*/
public class MBeliefbaseFlyweight extends MElementFlyweight implements IMBeliefbase, IMEBeliefbase
{
//-------- constructors --------
/**
* Create a new beliefbase flyweight.
* @param state The state.
* @param scope The scope handle.
*/
public MBeliefbaseFlyweight(IOAVState state, Object scope)
{
super(state, scope, scope);
}
//-------- methods --------
/**
* Get a belief for a name.
* @param name The belief name.
*/
public IMBelief getBelief(final String name)
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation(name)
{
public void run()
{
Object handle = getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefs, name);
if(handle==null)
throw new RuntimeException("Belief not found: "+name);
object = new MBeliefFlyweight(getState(), getScope(), handle);
}
};
return (IMBelief)invoc.object;
}
else
{
Object handle = getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefs, name);
if(handle==null)
throw new RuntimeException("Belief not found: "+name);
return new MBeliefFlyweight(getState(), getScope(), handle);
}
}
/**
* Get a belief set for a name.
* @param name The belief set name.
*/
public IMBeliefSet getBeliefSet(final String name)
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation(name)
{
public void run()
{
Object handle = getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefsets, name);
if(handle==null)
throw new RuntimeException("Beliefset not found: "+name);
object = new MBeliefFlyweight(getState(), getScope(), handle);
}
};
return (IMBeliefSet)invoc.object;
}
else
{
Object handle = getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefsets, name);
if(handle==null)
throw new RuntimeException("Beliefset not found: "+name);
return new MBeliefSetFlyweight(getState(), getScope(), handle);
}
}
/**
* Returns all beliefs.
* @return All beliefs.
*/
public IMBelief[] getBeliefs()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Collection elems = (Collection)getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefs);
IMBelief[] ret = new IMBelief[elems==null? 0: elems.size()];
if(elems!=null)
{
int i=0;
for(Iterator it=elems.iterator(); it.hasNext(); )
{
ret[i++] = new MBeliefFlyweight(getState(), getScope(), it.next());
}
}
object = ret;
}
};
return (IMBelief[])invoc.object;
}
else
{
Collection elems = (Collection)getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefs);
IMBelief[] ret = new IMBelief[elems==null? 0: elems.size()];
if(elems!=null)
{
int i=0;
for(Iterator it=elems.iterator(); it.hasNext(); )
{
ret[i++] = new MBeliefFlyweight(getState(), getScope(), it.next());
}
}
return ret;
}
}
/**
* Return all belief sets.
* @return All belief sets.
*/
public IMBeliefSet[] getBeliefSets()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Collection elems = (Collection)getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefsets);
IMBeliefSet[] ret = new IMBeliefSet[elems==null? 0: elems.size()];
if(elems!=null)
{
int i=0;
for(Iterator it=elems.iterator(); it.hasNext(); )
{
ret[i++] = new MBeliefSetFlyweight(getState(), getScope(), it.next());
}
}
object = ret;
}
};
return (IMBeliefSet[])invoc.object;
}
else
{
Collection elems = (Collection)getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefsets);
IMBeliefSet[] ret = new IMBeliefSet[elems==null? 0: elems.size()];
if(elems!=null)
{
int i=0;
for(Iterator it=elems.iterator(); it.hasNext(); )
{
ret[i++] = new MBeliefSetFlyweight(getState(), getScope(), it.next());
}
}
return ret;
}
}
/**
* Get a belief for a name.
* @param name The belief name.
*/
public IMBeliefReference getBeliefReference(final String name)
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Object handle = getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefrefs, name);
if(handle==null)
throw new RuntimeException("Belief reference not found: "+name);
object = new MBeliefReferenceFlyweight(getState(), getScope(), handle);
}
};
return (IMBeliefReference)invoc.object;
}
else
{
Object handle = getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefrefs, name);
if(handle==null)
throw new RuntimeException("Belief reference not found: "+name);
return new MBeliefReferenceFlyweight(getState(), getScope(), handle);
}
}
/**
* Returns all belief references.
* @return All belief references.
*/
public IMBeliefReference[] getBeliefReferences()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Collection elems = (Collection)getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefrefs);
IMBeliefReference[] ret = new IMBeliefReference[elems==null? 0: elems.size()];
if(elems!=null)
{
int i=0;
for(Iterator it=elems.iterator(); it.hasNext(); )
{
ret[i++] = new MBeliefReferenceFlyweight(getState(), getScope(), it.next());
}
}
object = ret;
}
};
return (IMBeliefReference[])invoc.object;
}
else
{
Collection elems = (Collection)getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefrefs);
IMBeliefReference[] ret = new IMBeliefReference[elems==null? 0: elems.size()];
if(elems!=null)
{
int i=0;
for(Iterator it=elems.iterator(); it.hasNext(); )
{
ret[i++] = new MBeliefReferenceFlyweight(getState(), getScope(), it.next());
}
}
return ret;
}
}
/**
* Get a beliefset reference for a name.
* @param name The beliefset reference name.
*/
public IMBeliefSetReference getBeliefSetReference(final String name)
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Object handle = getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefsetrefs, name);
if(handle==null)
throw new RuntimeException("Beliefset reference not found: "+name);
object = new MBeliefReferenceFlyweight(getState(), getScope(), handle);
}
};
return (IMBeliefSetReference)invoc.object;
}
else
{
Object handle = getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefsetrefs, name);
if(handle==null)
throw new RuntimeException("Beliefset reference not found: "+name);
return new MBeliefSetReferenceFlyweight(getState(), getScope(), handle);
}
}
/**
* Returns all beliefset references.
* @return All beliefset references.
*/
public IMBeliefSetReference[] getBeliefSetReferences()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Collection elems = (Collection)getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefsetrefs);
IMBeliefSetReference[] ret = new IMBeliefSetReference[elems==null? 0: elems.size()];
if(elems!=null)
{
int i=0;
for(Iterator it=elems.iterator(); it.hasNext(); )
{
ret[i++] = new MBeliefSetReferenceFlyweight(getState(), getScope(), it.next());
}
}
object = ret;
}
};
return (IMBeliefSetReference[])invoc.object;
}
else
{
Collection elems = (Collection)getState().getAttributeValue(getScope(), OAVBDIMetaModel.capability_has_beliefsetrefs);
IMBeliefSetReference[] ret = new IMBeliefSetReference[elems==null? 0: elems.size()];
if(elems!=null)
{
int i=0;
for(Iterator it=elems.iterator(); it.hasNext(); )
{
ret[i++] = new MBeliefSetReferenceFlyweight(getState(), getScope(), it.next());
}
}
return ret;
}
}
//-------- editable interface --------
/**
* Create a belief for a name.
* @param name The belief name.
*/
public IMEBelief createBelief(final String name)
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Object elem = getState().createObject(OAVBDIMetaModel.belief_type);
getState().setAttributeValue(elem, OAVBDIMetaModel.modelelement_has_name, name);
getState().addAttributeValue(getHandle(), OAVBDIMetaModel.capability_has_beliefs, elem);
object = new MBeliefFlyweight(getState(), getHandle(), elem);
}
};
return (IMEBelief)invoc.object;
}
else
{
Object elem = getState().createObject(OAVBDIMetaModel.belief_type);
getState().setAttributeValue(elem, OAVBDIMetaModel.modelelement_has_name, name);
getState().addAttributeValue(getHandle(), OAVBDIMetaModel.capability_has_beliefs, elem);
return new MBeliefFlyweight(getState(), getHandle(), elem);
}
}
/**
* Create a belief set for a name.
* @param name The belief set name.
*/
public IMEBeliefSet createBeliefSet(final String name)
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Object elem = getState().createObject(OAVBDIMetaModel.beliefset_type);
getState().setAttributeValue(elem, OAVBDIMetaModel.modelelement_has_name, name);
getState().addAttributeValue(getHandle(), OAVBDIMetaModel.capability_has_beliefsets, elem);
object = new MBeliefFlyweight(getState(), getHandle(), elem);
}
};
return (IMEBeliefSet)invoc.object;
}
else
{
Object elem = getState().createObject(OAVBDIMetaModel.beliefset_type);
getState().setAttributeValue(elem, OAVBDIMetaModel.modelelement_has_name, name);
getState().addAttributeValue(getHandle(), OAVBDIMetaModel.capability_has_beliefsets, elem);
return new MBeliefSetFlyweight(getState(), getHandle(), elem);
}
}
/**
* Create a belief reference for a name.
* @param name The belief reference name.
*/
public IMEBeliefReference createBeliefReference(final String name, final String ref)
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Object elem = getState().createObject(OAVBDIMetaModel.beliefreference_type);
getState().setAttributeValue(elem, OAVBDIMetaModel.modelelement_has_name, name);
if(ref!=null)
getState().setAttributeValue(elem, OAVBDIMetaModel.elementreference_has_concrete, ref);
getState().addAttributeValue(getHandle(), OAVBDIMetaModel.capability_has_beliefrefs, elem);
object = new MBeliefReferenceFlyweight(getState(), getHandle(), elem);
}
};
return (IMEBeliefReference)invoc.object;
}
else
{
Object elem = getState().createObject(OAVBDIMetaModel.beliefreference_type);
getState().setAttributeValue(elem, OAVBDIMetaModel.modelelement_has_name, name);
if(ref!=null)
getState().setAttributeValue(elem, OAVBDIMetaModel.elementreference_has_concrete, ref);
getState().addAttributeValue(getHandle(), OAVBDIMetaModel.capability_has_beliefrefs, elem);
return new MBeliefReferenceFlyweight(getState(), getHandle(), elem);
}
}
/**
* Create a beliefset reference for a name.
* @param name The beliefset reference name.
*/
public IMEBeliefSetReference createBeliefSetReference(final String name, final String ref)
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
Object elem = getState().createObject(OAVBDIMetaModel.beliefsetreference_type);
getState().setAttributeValue(elem, OAVBDIMetaModel.modelelement_has_name, name);
if(ref!=null)
getState().setAttributeValue(elem, OAVBDIMetaModel.elementreference_has_concrete, ref);
getState().addAttributeValue(getHandle(), OAVBDIMetaModel.capability_has_beliefsetrefs, elem);
object = new MBeliefReferenceFlyweight(getState(), getHandle(), elem);
}
};
return (IMEBeliefSetReference)invoc.object;
}
else
{
Object elem = getState().createObject(OAVBDIMetaModel.beliefsetreference_type);
getState().setAttributeValue(elem, OAVBDIMetaModel.modelelement_has_name, name);
if(ref!=null)
getState().setAttributeValue(elem, OAVBDIMetaModel.elementreference_has_concrete, ref);
getState().addAttributeValue(getHandle(), OAVBDIMetaModel.capability_has_beliefsetrefs, elem);
return new MBeliefSetReferenceFlyweight(getState(), getHandle(), elem);
}
}
}