Wonder who this guy is and how is this addition relevant to the "XML Mapping File" page?

http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=9806&originalVersion=2&revisedVersion=3

Andrus


On Dec 20, 2007, at 4:28 AM, [EMAIL PROTECTED] 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

Reply via email to