package context.arch.storage; import context.arch.comm.DataObject; import context.arch.comm.DataObjects; /** * The Retrieval class allows a component to specify what context it wants to retrieve from a widget. * It contains an AttributeFunctions object and a Conditions object. The AttributeFunctions object * contains the set of attributes and corresponding functions to attach to each. The Conditions object * contains the set of conditions the context should meet to be returned to the requesting component. * * @author Anind K. Dey */ public class Retrieval { private AttributeFunctions attributes; private Conditions conditions; /** * Tag for retrieval */ public static final String RETRIEVAL_CONDITIONS = "retrievalConditions"; /** * Empty constructor */ public Retrieval() { } /** * Constructor that sets attribute list and conditions * * @param attributes List of AttributeFunctions to retrieve * @param conditions Conditions object with retrieval conditions */ public Retrieval(AttributeFunctions attributes, Conditions conditions) { this.attributes = attributes; this.conditions = conditions; } /** * Constructor that takes a DataObject as a parameter. The DataObject * should contain the <RETRIEVALCONDITIONS> tag. It stores the encoded data. * * @param retrieval DataObject that contains info for retrieval */ public Retrieval(DataObject retrieval) { DataObject ret = retrieval.getDataObject(RETRIEVAL_CONDITIONS); attributes = new AttributeFunctions(ret); conditions = new Conditions(ret); } /** * Converts to a DataObject * * @return Retrieval object converted to a <RETRIEVAL_CONDITIONS> DataObject */ public DataObject toDataObject() { DataObjects retrieval = new DataObjects(); retrieval.addElement(conditions.toDataObject()); retrieval.addElement(attributes.toDataObject()); return new DataObject(RETRIEVAL_CONDITIONS, retrieval); } /** * Sets the Conditions object for retrieval. * * @param conditions Conditions object for retrieval */ public void setConditions(Conditions conditions) { this.conditions = conditions; } /** * Sets the list of attributes to retrieve. * * @param attributes List of attributeFunctions to retrieve */ public void setAttributeFunctions(AttributeFunctions attributes) { this.attributes = attributes; } /** * Returns the Conditions object used for retrieval. * * @return Conditions object used for retrieval */ public Conditions getConditions() { return conditions; } /** * Returns the list of AttributeFunctions to retrieve. * * @return List of AttributeFunctions to retrieve */ public AttributeFunctions getAttributeFunctions() { return attributes; } }