package jadex.bdi.model.impl.flyweights;
import jadex.bdi.model.IMExpression;
import jadex.bdi.model.OAVBDIMetaModel;
import jadex.bdi.model.editable.IMEExpression;
import jadex.javaparser.IParsedExpression;
import jadex.rules.state.IOAVState;
/**
* Flyweight for expression model.
*/
public class MExpressionFlyweight extends MReferenceableElementFlyweight implements IMExpression, IMEExpression
{
//-------- constructors --------
/**
* Create a new element flyweight.
*/
public MExpressionFlyweight(IOAVState state, Object scope, Object handle)
{
super(state, scope, handle);
}
//-------- methods --------
/**
* Get the expression language.
* @return The language.
*/
public String getLanguage()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
string = (String)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_language);
}
};
return invoc.string;
}
else
{
return (String)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_language);
}
}
/**
* Get the expression text.
* @return The text.
*/
public String getText()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
string = (String)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_text);
}
};
return invoc.string;
}
else
{
return (String)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_text);
}
}
/**
* Get the parsed expression.
* @return The parsed expression.
*/
public Object getParsedExpression()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
object = getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_parsed);
}
};
return invoc.object;
}
else
{
return getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_parsed);
}
}
/**
* Get the clazz.
* @return The clazz.
*/
public Class getClazz()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
clazz = (Class)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_class);
}
};
return invoc.clazz;
}
else
{
return (Class)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_class);
}
}
/**
* Get the class name.
* @return The class name.
*/
public String getClassname()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
string = (String)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_classname);
}
};
return invoc.string;
}
else
{
return (String)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_classname);
}
}
/**
* Get the variable name.
* @return The variable name.
*/
public String getVariable()
{
if(isExternalThread())
{
AgentInvocation invoc = new AgentInvocation()
{
public void run()
{
string = (String)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_variable);
}
};
return invoc.string;
}
else
{
return (String)getState().getAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_variable);
}
}
/**
* Set the expression.
* @param expression The expression.
* @param language The language (null for default java-like language).
*/
public void setExpression(final String expression, final String language)
{
if(isExternalThread())
{
new AgentInvocation()
{
public void run()
{
IParsedExpression pexp = MExpressionbaseFlyweight.parseExpression(expression, language, getState(), getHandle());
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_parsed, pexp);
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_language, language);
}
};
}
else
{
IParsedExpression pexp = MExpressionbaseFlyweight.parseExpression(expression, language, getState(), getHandle());
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_parsed, pexp);
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_language, language);
}
}
/**
* Set the expression content (i.e. parsed expression or condition).
* @param content The content.
*/
public void setContent(final Object content)
{
if(isExternalThread())
{
new AgentInvocation()
{
public void run()
{
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_parsed, content);
}
};
}
else
{
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_parsed, content);
}
}
/**
* Set the clazz.
* @param clazz The clazz.
*/
public void setClazz(final Class clz)
{
if(isExternalThread())
{
new AgentInvocation()
{
public void run()
{
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_class, clz);
}
};
}
else
{
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_class, clz);
}
}
// /**
// * Set the class name.
// * @param name The class name.
// */
// public void setClassname(String name);
/**
* Set the variable name.
* @param var The variable name.
*/
public void setVariable(final String var)
{
if(isExternalThread())
{
new AgentInvocation()
{
public void run()
{
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_variable, var);
}
};
}
else
{
getState().setAttributeValue(getHandle(), OAVBDIMetaModel.expression_has_variable, var);
}
}
}