Wonder who this guy is and how is this addition relevant to the "XML
Mapping File" page?
Andrus
On Dec 20, 2007, at 4:28 AM, confluenc..pache.org wrote:
> Page Edited : CAY : XML Mapping File
> XML Mapping File has been edited by Terrence Pietrondi (Dec 19, 2007).
>
> (View changes)
>
> Content:
> Introduction
> The XML mapping file is a schema of sorts for mapping your
> Persistent objects to XML. It is fully compatible with the format
> used by WebObjects, making migration to or from Cayenne simple.
>
> This document aims to describe the format of the XML mapping file
> and how you may use it.
>
> FormatOverview
> All mapping documents are composed of three elements:
>
> • <model>
> • <entity>
> • <property>
> The elements are nested in that order as well. A property always
> belongs to an entity. An entity always belongs to a model. This
> implies that <model> is always the root tag of the mapping file.
>
> <entity> and <property> also have attribute values that affect the
> mapping. Please read their dedicated sections for more details.
>
> <model>
> <model> is always the root of the mapping document. It accepts no
> attributes and there may only be one per document.
>
> <entity>
> <entity> corresponds to a Persistent object in your Cayenne datamap.
>
> Attributes:
>
> Name
> Required
> Explanation
> name
>
> Fully qualified class name of the Persistent object to represent.
> xmlTag
>
> The XML tag that will be used to represent the Persistent object in
> its encoded form.
> <property>
> <property> corresponds to a JavaBeans property of a Persistent
> object in your Cayenne datamap.
>
> Name
> Required
> Explanation
> name
>
> The name of the property of the enclosing Persistent object to
> represent. This uses standard JavaBeans notation, including dotted
> values for arbitrarily nested properties.
> xmlTag
>
> The XML tag that will be used to represent the property in its
> encoded form.
> ExamplesMapping Simple Attributes
> This example shows how to get the value of a specific column in a
> CayenneDataObject as the result of a select on that object's table.
> For example, given a table named YOUR_TABLE that has column
> YOUR_FIELD, you want to select a specific row and get the value for
> YOUR_FIELD using the ObjEntity of the CayenneDataObject.
>
> // Create a data context
> DataContext context = ....;
> // Create a match expression
> Expression qual =
> ExpressionFactory.matchExp(YourTable.YOUR_FIELD_PROPERTY,match);
> // Create your select query
> SelectQuery select = new SelectQuery(YourTable.class,qual);
> // Limit the results to one
> select.setFetchLimit(1);
> // Form your data object from the query getting the first result
> CayenneDataObject next = (YourTable)
> context.performQuery(select).get(0);
> Now to get the value of YOUR_FIELD from the CayenneDataObject
> object, you need to create an ObjEntity (for later) from the
> CayenneDataObject, get the DataMap from the context, and create a
> DbEntity:
>
> // For later
> ObjEntity entity = next.getObjEntity();
> DataMap mapping =
> context.getEntityResolver().getDataMap("YourDomainMap");
> DbEntity table = mapping.getDbEntity("YOUR_TABLE");
> At compile time, we hard code the table names and columns, because
> we know them from the database, but we do not know for instance, or
> at least you might not want to guess what the ObjEntity property
> names are. And so we can look in the map for our column name that we
> know and find its property name to pull its value from the
> CayenneDataObject as a result of our select:
>
> // Get the DbEntity attributes as a collection
> Collection collect = entity.getAttributes();
> // And its iterator
> Iterator colItr = collect.iterator();
> // Initialize a return value
> String ruleValue = null;
> // Loop the attributes
> while(colItr.hasNext()){
> // Get the next ObjAttribute on the DbEntity
> ObjAttribute attr = (ObjAttribute) colItr.next();
> // Get the attribute database path, the column name
> String dbattr = attr.getDbAttributePath();
> // Check if the current database field name matches
> // what you are interested in
> if(dbattr.equals("YOUR_FIELD")){
> // If so, read the property in your CayenneDataObject
> // using the name of the current ObjAttribute on the DbEntity
> ruleValue = (String) next.readProperty(attr.getName());
> break;
> }
> }
> // Commit your work
> context.commitChanges();
> //Return the value of YOUR_FIELD on the CayenneDataObject
> return returnValue;
> Mapping RelationshipsMapping Collections
>
>
> Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07,
> 2006) - Bug/feature request
>
> Unsubscribe or edit your notifications preferences
This archive was generated by hypermail 2.0.0 : Thu Dec 20 2007 - 03:53:54 EST