felix@3033: The datacages behaviour is defined in the file conf/meta-data.xml . felix@3033: felix@3033: The datacage serves two purposes. felix@3033: It handles automatic 'recommendations', which are instructions felix@3033: sent by the client to add newly created artifacts to the collection. felix@3033: From a user perspective, these artifacts mainly represent curves or data felix@3033: points in the resulting diagrams. felix@3033: The second task is to let the user add already existing artifacts (i.e. felix@3033: previous calculations) or new artifacts with access to related data. felix@3033: felix@3033: Irrelevant of the type of elements (recommendations or user picked data) the felix@3033: datacage can iterate over possible artifacts by accessing its own database. felix@3033: Thus, to create a list of matching entries, database queries are used. felix@3033: felix@3033: In meta-data.xml, database queries are defined as elements, felix@3033: for example felix@3033: felix@3033: SELECT id AS prot_id, felix@3033: description AS prot_description felix@3033: FROM wsts WHERE kind = 1 AND river_id = ${river_id} felix@3033: felix@3033: felix@3033: As can be seen from the example, the datacage configuration file can maintain felix@3033: its own stack of variables (${river_id} in above example).