You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/06/23 09:45:13 UTC

svn commit: r416596 [2/2] - in /incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide: Introduction/Guide to 1.1 Features/ Introduction/Guide to 1.1 features/ Queries/NamedQuery/ Queries/QueryChain/ Quick Start/ Quick St...

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Mapping Query/sql-template.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Mapping%20Query/sql-template.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Mapping Query/sql-template.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/database-schema.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Object%20Relational%20Mapping/database-schema.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/database-schema.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Object%20Relational%20Mapping/index.html?rev=416596&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html Fri Jun 23 00:45:11 2006
@@ -0,0 +1,113 @@
+<html>
+  <head>
+    <title>Cayenne Documentation - Tutorial Object Relational Mapping</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://objectstyle.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Tutorial Object Relational Mapping</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/User Guide/Introduction/index.html">Introduction</a></li>
+<li><a href="../../../../Documentation/User Guide/Installation/index.html">Installation</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/index.html">Quick Start</a><ul>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Setup/index.html">Tutorial Setup</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html">Tutorial Starting Mapping Project</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html">Tutorial Object Relational Mapping</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html">Tutorial Generate Database and Java Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataContext/index.html">Tutorial DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataObjects/index.html">Tutorial DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Mapping Query/index.html">Tutorial Mapping Query</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html">Tutorial SelectQuery</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Delete/index.html">Tutorial Delete</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Webapp/index.html">Tutorial Webapp</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Design/index.html">Design</a></li>
+<li><a href="../../../../Documentation/User Guide/Generating Classes/index.html">Generating Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/DataContext/index.html">DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Queries/index.html">Queries</a></li>
+<li><a href="../../../../Documentation/User Guide/DataObjects/index.html">DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Stored Procedures/index.html">Stored Procedures</a></li>
+<li><a href="../../../../Documentation/User Guide/Expressions/index.html">Expressions</a></li>
+<li><a href="../../../../Documentation/User Guide/Performance Tuning/index.html">Performance Tuning</a></li>
+<li><a href="../../../../Documentation/User Guide/Deployment/index.html">Deployment</a></li>
+<li><a href="../../../../Documentation/User Guide/Ant Tasks/index.html">Ant Tasks</a></li>
+<li><a href="../../../../Documentation/User Guide/Access Stack Internals/index.html">Access Stack Internals</a></li>
+<li><a href="../../../../Documentation/User Guide/DataViews/index.html">DataViews</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><p>Lets go back to CayenneModeler where we have the newly created project open. Our goal is to map the following schema:</p>
+
+<p><img src="database-schema.jpg" align="absmiddle" border="0" /></p>
+
+<h3><a name="TutorialObjectRelationalMapping-MappingDatabaseTables"></a>Mapping Database Tables</h3>
+
+<p>Start by adding the ARTIST table. Mapped database tables are called "DbEntities" in Cayenne. Click on "Create DbEntity" button (or use <tt>"Project &gt; Create DbEntity"</tt> menu). In "DbEntity Name" field enter "ARTIST". Then click on "Create Attribute" button on the entity toolbar (second button on the right). This action changes the view to the "Attribute" tab and adds a new attribute (attribute means a "table column" in this case) called "untitledAttr". Let's rename it to ID, make it an INTEGER and make it a PK:</p>
+
+<p><img src="modeler-artistid.jpg" align="absmiddle" border="0" /></p>
+
+<p>Similarly add NAME VARCHAR and DATE_OF_BIRTH DATE attributes. </p>
+
+<p>Repeat this procedure for PAINTING and GALLERY entities.</p>
+
+<p><img src="modeler-gallery.jpg" align="absmiddle" border="0" /></p>
+
+<h3><a name="TutorialObjectRelationalMapping-MappingDatabaseRelationships"></a>Mapping Database Relationships</h3>
+
+<p>Now we need to specify relationships between ARTIST, PAINTING and GALLERY tables. Start by creating a one-to-many ARTIST/PAINTING relationship:</p>
+
+<ul>
+	<li>Select the ARTIST DbEntity on the left and click on the "Relationships" tab.</li>
+	<li>Click on "Create Relationship" button on the entity toolbar - a relationship called "untitledRel" is created.</li>
+	<li>Choose the "Target" to be "Painting".</li>
+	<li>Click on the "Database Mapping" button (letter "I" in a circle) - relationship configuration dialog is presented. Here you can assign a name to the relationship and also its complimentary reverse relationship. This name can be anything (this is really a symbolic name of the database referential constraint), but it is recommended to use a valid Java identifier, as this will save some typing later. We'll call the relationship "paintings" and reverse relationship "artist".</li>
+	<li>Click on "Add" button on the right to add a join</li>
+	<li>Select "ID" column for the "Source" and "ARTIST_ID" column for the target.</li>
+	<li>Relationship information should now look like this:</li>
+</ul>
+
+
+<p><img src="modeler-dbrel-dialog.jpg" align="absmiddle" border="0" /></p>
+
+<ul>
+	<li>Click "Done" to confirm the changes and close the dialog.</li>
+	<li>Two complimentary relationships have been created - from ARTIST to PAINTING and vice versa. Still you may have noticed one glitch - "paintings" relationship should be to-many, but "To Many" checkbox is not checked. Let's change that - check the checkbox for "paintings" relationship, and then click on PAINTING DbEntity, and uncheck "artist" relationship "To Many" to make the reverse relationship "to-one" as it should be.</li>
+	<li>Repeat the steps above to create a many-to-one relationship from PAINTING to GALLERY, calling the relationships pair "gallery" and "paintings".</li>
+</ul>
+
+
+<h3><a name="TutorialObjectRelationalMapping-MappingJavaClasses"></a>Mapping Java Classes</h3>
+
+<p>Now that the database schema mapping is complete, CayenneModeler can create mappings of Java classes (aka "ObjEntities") by deriving everything from DbEntities. At present there is no way to do it for the entire DataMap in one click, so we'll do it for each table individually.</p>
+
+<ul>
+	<li>Select "ARTIST" DbEntity and click on "Create ObjEntity" button (a green class icon) either on the entity toolbar or on the main toolbar. An ObjEntity called "Artist" is created with a Java class field set to "cayenne.tutorial.Artist". The modeler transformed the database names to the Java-friendly names (e.g. if you click on the "Attributes" tab, you'll see that "DATE_OF_BIRTH" column was converted to "dateOfBirth" Java class attribute).</li>
+	<li>Select "GALLERY" DbEntity and click on "Create ObjEntity" button again - you'll see a "Gallery" ObjEntity created.</li>
+	<li>Do the same thing again for "PAINTING".<br/>
+Now you need to synchronize relationships. Artist and Gallery entities where created when there was no related "Painting" entity, so their relationships were not set. </li>
+	<li>Click on the "Artist" ObjEntity and (optinally) change to the "Relationships" tab. Now click on "Sync ObjEntity with DbEntity" button on the toolbar (two yellow arrows) - you will see the "paintings" relationship appear.</li>
+	<li>Do the same for the "Gallery" entity.</li>
+</ul>
+
+
+<p>Unless you want to customize the Java class and property names (which of course you can do easily), the mapping is complete. </p>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html" title="Tutorial Generate Database and Java Classes">Tutorial Generate Database and Java Classes</a></b></p>
+<hr /></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 ObjectStyle Group and content authors
+  </div>
+
+</body>
+</html>

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/modeler-artistid.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Object%20Relational%20Mapping/modeler-artistid.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/modeler-artistid.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/modeler-dbrel-dialog.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Object%20Relational%20Mapping/modeler-dbrel-dialog.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/modeler-dbrel-dialog.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/modeler-gallery.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Object%20Relational%20Mapping/modeler-gallery.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/modeler-gallery.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20SelectQuery/index.html?rev=416596&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html Fri Jun 23 00:45:11 2006
@@ -0,0 +1,116 @@
+<html>
+  <head>
+    <title>Cayenne Documentation - Tutorial SelectQuery</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://objectstyle.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Tutorial SelectQuery</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/User Guide/Introduction/index.html">Introduction</a></li>
+<li><a href="../../../../Documentation/User Guide/Installation/index.html">Installation</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/index.html">Quick Start</a><ul>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Setup/index.html">Tutorial Setup</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html">Tutorial Starting Mapping Project</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html">Tutorial Object Relational Mapping</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html">Tutorial Generate Database and Java Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataContext/index.html">Tutorial DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataObjects/index.html">Tutorial DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Mapping Query/index.html">Tutorial Mapping Query</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html">Tutorial SelectQuery</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Delete/index.html">Tutorial Delete</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Webapp/index.html">Tutorial Webapp</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Design/index.html">Design</a></li>
+<li><a href="../../../../Documentation/User Guide/Generating Classes/index.html">Generating Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/DataContext/index.html">DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Queries/index.html">Queries</a></li>
+<li><a href="../../../../Documentation/User Guide/DataObjects/index.html">DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Stored Procedures/index.html">Stored Procedures</a></li>
+<li><a href="../../../../Documentation/User Guide/Expressions/index.html">Expressions</a></li>
+<li><a href="../../../../Documentation/User Guide/Performance Tuning/index.html">Performance Tuning</a></li>
+<li><a href="../../../../Documentation/User Guide/Deployment/index.html">Deployment</a></li>
+<li><a href="../../../../Documentation/User Guide/Ant Tasks/index.html">Ant Tasks</a></li>
+<li><a href="../../../../Documentation/User Guide/Access Stack Internals/index.html">Access Stack Internals</a></li>
+<li><a href="../../../../Documentation/User Guide/DataViews/index.html">DataViews</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><p>It was shown before how to <a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataObjects/index.html" title="Tutorial DataObjects">persist new objects</a>. Cayenne <a href="../../../../Documentation/User Guide/Queries/index.html" title="Queries">queries</a> are used to access already saved objects. The primary query type used for selecting objects is <a href="../../../../Documentation/User Guide/Queries/SelectQuery/index.html" title="SelectQuery">SelectQuery</a>. It can be mapped in CayenneModeler similar to how the SQLTemplate <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Mapping Query/index.html" title="Tutorial Mapping Query">was mapped</a>, in this chapter however we'll show how to create it using Cayenne API.</p>
+
+<p>We don't have too much data in the database yet, but we can still demonstrate the main principles:</p>
+
+<ul>
+	<li>Select all paintings (the code, and the log output it generates):</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>Main.java</b></div><div class="codeContent">
+<pre class="code-java">SelectQuery select1 = <span class="code-keyword">new</span> SelectQuery(Painting.class);
+List paintings1 = context.performQuery(select1);</pre>
+</div></div>
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>INFO  QueryLogger: SELECT t0.NAME, t0.ARTIST_ID, t0.GALLERY_ID, t0.ID FROM PAINTING t0
+INFO  QueryLogger: === returned 2 rows. - took 20 ms.</pre>
+</div></div>
+
+<ul>
+	<li>Select paintings that start with "gi", ignoring case (read more about qualifier Expressions and ExpressionFactory <a href="../../../../Documentation/User Guide/Expressions/index.html" title="Expressions">here</a>:</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>Main.java</b></div><div class="codeContent">
+<pre class="code-java">Expression qualifier2 = ExpressionFactory.likeIgnoreCaseExp(
+                Painting.NAME_PROPERTY,
+                <span class="code-quote">"gi%"</span>);
+SelectQuery select2 = <span class="code-keyword">new</span> SelectQuery(Painting.class, qualifier2);
+List paintings2 = context.performQuery(select2);</pre>
+</div></div>
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>INFO  QueryLogger: SELECT t0.NAME, t0.ARTIST_ID, t0.GALLERY_ID, t0.ID FROM PAINTING t0 
+                             WHERE UPPER(t0.NAME) LIKE UPPER(?) [bind: 'gi%']
+INFO  QueryLogger: === returned 1 row. - took 28 ms.</pre>
+</div></div>
+
+<ul>
+	<li>Select all paintings done by artists who were born more than a 100 years ago (demonstrating using Expression.fromString(..) instead of ExpressionFactory):</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>Main.java</b></div><div class="codeContent">
+<pre class="code-java">Calendar c = <span class="code-keyword">new</span> GregorianCalendar();
+c.set(c.get(Calendar.YEAR) - 100, 0, 1, 0, 0, 0);
+
+Expression qualifier3 = Expression.fromString(<span class="code-quote">"artist.dateOfBirth &lt; $date"</span>);
+qualifier3 = qualifier3.expWithParameters(Collections.singletonMap(<span class="code-quote">"date"</span>, c.getTime()));
+SelectQuery select3 = <span class="code-keyword">new</span> SelectQuery(Painting.class, qualifier3);
+List paintings3 = context.performQuery(select3);</pre>
+</div></div>
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>INFO  QueryLogger: SELECT t0.NAME, t0.ARTIST_ID, t0.GALLERY_ID, t0.ID FROM PAINTING t0, ARTIST t1 
+                             WHERE t0.ARTIST_ID = t1.ID AND (t1.DATE_OF_BIRTH &lt; ?) [bind: '1906-01-01 00:00:00.3']
+INFO  QueryLogger: === returned 2 rows. - took 31 ms.</pre>
+</div></div>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Delete/index.html" title="Tutorial Delete">Tutorial Delete</a></b></p>
+<hr /></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 ObjectStyle Group and content authors
+  </div>
+
+</body>
+</html>

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/eclipse-java-settings.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Setup/eclipse-java-settings.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/eclipse-java-settings.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/eclipse-new-project.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Setup/eclipse-new-project.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/eclipse-new-project.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/eclipse-project-settings.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Setup/eclipse-project-settings.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/eclipse-project-settings.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Setup/index.html?rev=416596&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/index.html (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Setup/index.html Fri Jun 23 00:45:11 2006
@@ -0,0 +1,94 @@
+<html>
+  <head>
+    <title>Cayenne Documentation - Tutorial Setup</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://objectstyle.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Tutorial Setup</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/User Guide/Introduction/index.html">Introduction</a></li>
+<li><a href="../../../../Documentation/User Guide/Installation/index.html">Installation</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/index.html">Quick Start</a><ul>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Setup/index.html">Tutorial Setup</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html">Tutorial Starting Mapping Project</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html">Tutorial Object Relational Mapping</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html">Tutorial Generate Database and Java Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataContext/index.html">Tutorial DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataObjects/index.html">Tutorial DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Mapping Query/index.html">Tutorial Mapping Query</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html">Tutorial SelectQuery</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Delete/index.html">Tutorial Delete</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Webapp/index.html">Tutorial Webapp</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Design/index.html">Design</a></li>
+<li><a href="../../../../Documentation/User Guide/Generating Classes/index.html">Generating Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/DataContext/index.html">DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Queries/index.html">Queries</a></li>
+<li><a href="../../../../Documentation/User Guide/DataObjects/index.html">DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Stored Procedures/index.html">Stored Procedures</a></li>
+<li><a href="../../../../Documentation/User Guide/Expressions/index.html">Expressions</a></li>
+<li><a href="../../../../Documentation/User Guide/Performance Tuning/index.html">Performance Tuning</a></li>
+<li><a href="../../../../Documentation/User Guide/Deployment/index.html">Deployment</a></li>
+<li><a href="../../../../Documentation/User Guide/Ant Tasks/index.html">Ant Tasks</a></li>
+<li><a href="../../../../Documentation/User Guide/Access Stack Internals/index.html">Access Stack Internals</a></li>
+<li><a href="../../../../Documentation/User Guide/DataViews/index.html">DataViews</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h3><a name="TutorialSetup-InstallJava"></a>Install Java</h3>
+
+<p>Make sure you have Java installed (JDK 1.4 or 1.5).</p>
+
+<h3><a name="TutorialSetup-DownloadCayenne"></a>Download Cayenne</h3>
+
+<p>Get <span class="nobr"><a href="http://objectstyle.org/cayenne/download.html" title="Visit page outside Confluence" rel="nofollow">the latest Cayenne<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> distribution. If you are on Linux, select a cross-platform version (<tt>cayenne-XXX.tar.gz</tt>).  For Mac OS X select <tt>cayenne-XXX-macosx.dmg</tt> and for Windows - <tt>cayenne-XXX-win.zip</tt>. Unpack the distribution somewhere in the file system. </p>
+
+<h3><a name="TutorialSetup-DownloadDerbyDatabase"></a>Download Derby Database</h3>
+
+<p>Get Derby database <span class="nobr"><a href="http://db.apache.org/derby/derby_downloads.html" title="Visit page outside Confluence" rel="nofollow">from here<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and unpack it somewhere in the filesystem.</p>
+
+<h3><a name="TutorialSetup-DownloadEclipse"></a>Download Eclipse </h3>
+
+<p>Download Eclipse <span class="nobr"><a href="http://www.eclipse.org" title="Visit page outside Confluence" rel="nofollow">from here<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and unpack it somewhere in the filesystem.</p>
+
+<h3><a name="TutorialSetup-CreateaNewEclipseProject"></a>Create a New Eclipse Project</h3>
+
+<p>Start Eclipse and go to <tt>"File &gt; New &gt; Project"</tt>. Select a "Java Project" for the project type and click "Next":</p>
+
+<p><img src="eclipse-new-project.jpg" align="absmiddle" border="0" /></p>
+
+<p>Enter "cayenne-tutorial" for the project name, select "Create separate source and output folders" radio button and click "Next":</p>
+
+<p><img src="eclipse-project-settings.jpg" align="absmiddle" border="0" /></p>
+
+<p>On the next screen ("Java Settings") go to the "Libraries" tab and click "Add External Jar" button on the right to add two Jar files:</p>
+<ul>
+	<li><tt>derby.jar</tt> located in the "lib" directory of the Derby installation)</li>
+	<li><tt>cayenne.jar</tt> located in the "lib" directory of Cayenne installation.</li>
+</ul>
+
+
+<p><img src="eclipse-java-settings.jpg" align="absmiddle" border="0" /></p>
+
+<p>When done click "Finish" and the new project should appear in Eclipse.</p>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html" title="Tutorial Starting Mapping Project">Tutorial Starting Mapping Project</a></b></p>
+<hr /></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 ObjectStyle Group and content authors
+  </div>
+
+</body>
+</html>

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/eclipse-xmlfiles.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Starting%20Mapping%20Project/eclipse-xmlfiles.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/eclipse-xmlfiles.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Starting%20Mapping%20Project/index.html?rev=416596&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html Fri Jun 23 00:45:11 2006
@@ -0,0 +1,95 @@
+<html>
+  <head>
+    <title>Cayenne Documentation - Tutorial Starting Mapping Project</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://objectstyle.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Tutorial Starting Mapping Project</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/User Guide/Introduction/index.html">Introduction</a></li>
+<li><a href="../../../../Documentation/User Guide/Installation/index.html">Installation</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/index.html">Quick Start</a><ul>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Setup/index.html">Tutorial Setup</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html">Tutorial Starting Mapping Project</a><ul>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html">Tutorial Object Relational Mapping</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html">Tutorial Generate Database and Java Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataContext/index.html">Tutorial DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataObjects/index.html">Tutorial DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Mapping Query/index.html">Tutorial Mapping Query</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html">Tutorial SelectQuery</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Delete/index.html">Tutorial Delete</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Webapp/index.html">Tutorial Webapp</a></li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Design/index.html">Design</a></li>
+<li><a href="../../../../Documentation/User Guide/Generating Classes/index.html">Generating Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/DataContext/index.html">DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Queries/index.html">Queries</a></li>
+<li><a href="../../../../Documentation/User Guide/DataObjects/index.html">DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Stored Procedures/index.html">Stored Procedures</a></li>
+<li><a href="../../../../Documentation/User Guide/Expressions/index.html">Expressions</a></li>
+<li><a href="../../../../Documentation/User Guide/Performance Tuning/index.html">Performance Tuning</a></li>
+<li><a href="../../../../Documentation/User Guide/Deployment/index.html">Deployment</a></li>
+<li><a href="../../../../Documentation/User Guide/Ant Tasks/index.html">Ant Tasks</a></li>
+<li><a href="../../../../Documentation/User Guide/Access Stack Internals/index.html">Access Stack Internals</a></li>
+<li><a href="../../../../Documentation/User Guide/DataViews/index.html">DataViews</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><h3><a name="TutorialStartingMappingProject-StartCayenneModeler"></a>Start CayenneModeler</h3>
+
+<p>Start CayenneModeler by doubleclicking the appropriate startup file in the <tt>bin</tt> directory of Cayenne installation (if the Modeler does not start, see <a href="../../../../Documentation/Modeler Guide/Introduction to CayenneModeler/Running CayenneModeler/index.html" title="Running CayenneModeler">this page</a> for more information).</p>
+
+<p>Go to <tt>"Tools &gt; Preferences &gt; ClassPath"</tt> and add a <tt>derby.jar</tt> file to the list of "Custom ClassPath" entries to allow CayenneModeler to work with Derby. When done click "Save". If you are using a database other then Derby, you should enter a location of that database JDBC driver instead.</p>
+
+<p><img src="modeler-classpath.jpg" align="absmiddle" border="0" /></p>
+
+<p>Now you will create both database schema definition and object mapping from scratch using CayenneModeler. Note that in cases when you already have a legacy database, this process can be automated by using reverse engineering features of the Modeler (<tt>"Tools &gt; Reengineer Database Schema"</tt>). Still understanding how manual mapping works is important.</p>
+
+<h3><a name="TutorialStartingMappingProject-CreateNewCayenneProject"></a>Create New Cayenne Project</h3>
+
+<p>Click on the "New Project" button on the toolbar (leftmost button). A new project will appear that contains a single DataDomain. The meaning of a DataDomain is explained elsewhere in the User Guide. For now it is sufficient to understand that DataDomain is the root of your mapping project:</p>
+
+<p><img src="modeler-datadomain.jpg" align="absmiddle" border="0" /></p>
+
+<h3><a name="TutorialStartingMappingProject-CreateDataNode"></a>Create DataNode</h3>
+
+<p>The next project object you will create is a DataNode that is a descriptor of the physical database. With "UntitledDomain" selected on the left, click on "Create DataNode" button on the toolbar (or select <tt>"Project &gt; Create DataNode"</tt> from the menu.</p>
+
+<p>A new DataNode is displayed. You can leave the defaults in the "DataNode Configuration" section unchanged, but you need to specify JDBC Configuration parameters. For embedded Derby database you can enter the following settings, replacing "testdb" with an absolute path of the directory on your filesystem where you want the database to be created (e.g. on Windows you may specify <tt>jdbc:derby:c:/testdb;create=true</tt>):</p>
+
+<p><img src="modeler-datanode.jpg" align="absmiddle" border="0" /></p>
+
+<h3><a name="TutorialStartingMappingProject-CreateDataMap"></a>Create DataMap</h3>
+
+<p>Now you will create a DataMap - an object that holds all the mapping information. To do this click on "Create DataMap" button (or select a corresponding menu item). Note that the newly created DataMap is automatically linked to the DataNode that you created in the previous step. If there is more than one DataNode, you may need to link a DataMap to the correct node manually. In other words a DataMap within DataDomain must point to a database described by the map.</p>
+
+<p>You can leave all the DataMap defaults unchanged except for one - Java Package. Enter "cayenne.tutorial" for the default package name that later will be used for all persistent classes:</p>
+
+<p><img src="modeler-datamap.jpg" align="absmiddle" border="0" /></p>
+
+<h3><a name="TutorialStartingMappingProject-SavetheProject"></a>Save the Project</h3>
+
+<p>Before you proceed with the actual mapping, let's save the project. Click on "Save" button in the toolbar and navigate to the "cayenne-tutorial" Eclipse project folder that was created earlier. Cayenne mapping files must be accessible in the application CLASSPATH, so let's save them under "cayenne-tutorial/src" folder. Now if you go back to Eclipse, right click on "cayenne-tutorial" project and select "Refresh", you will see three Cayenne XML files:</p>
+
+<p><img src="eclipse-xmlfiles.jpg" align="absmiddle" border="0" /></p>
+
+<hr />
+<p><b>Next Step: <a href="../../../../Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html" title="Tutorial Object Relational Mapping">Tutorial Object Relational Mapping</a></b></p>
+<hr /></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 ObjectStyle Group and content authors
+  </div>
+
+</body>
+</html>

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/modeler-classpath.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Starting%20Mapping%20Project/modeler-classpath.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/modeler-classpath.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/modeler-datadomain.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Starting%20Mapping%20Project/modeler-datadomain.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/modeler-datadomain.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/modeler-datamap.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Starting%20Mapping%20Project/modeler-datamap.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/modeler-datamap.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/modeler-datanode.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Starting%20Mapping%20Project/modeler-datanode.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/modeler-datanode.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/artists.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Webapp/artists.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/artists.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Webapp/index.html?rev=416596&view=auto
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/index.html (added)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/index.html Fri Jun 23 00:45:11 2006
@@ -0,0 +1,263 @@
+<html>
+  <head>
+    <title>Cayenne Documentation - Tutorial Webapp</title>
+    <style type="text/css">@import "../../../../style.css";</style>
+  </head>
+<body>
+  <div class="header">
+    <div style="float: left;"><a href="http://objectstyle.org/cayenne/"><img src="../../../../images/logo.gif" align="absmiddle" border="0"></a></div>
+    <span class="logoSpaceLink"><a href="../../../../index.html">Cayenne User Documentation</a></span><br />
+    <span class="pagetitle">Tutorial Webapp</span>
+  </div>
+<div id="cayenne_toc">
+<ul>
+<li><a href="../../../../Documentation/User Guide/Introduction/index.html">Introduction</a></li>
+<li><a href="../../../../Documentation/User Guide/Installation/index.html">Installation</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/index.html">Quick Start</a><ul>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Setup/index.html">Tutorial Setup</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html">Tutorial Starting Mapping Project</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html">Tutorial Object Relational Mapping</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html">Tutorial Generate Database and Java Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataContext/index.html">Tutorial DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial DataObjects/index.html">Tutorial DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Mapping Query/index.html">Tutorial Mapping Query</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html">Tutorial SelectQuery</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Delete/index.html">Tutorial Delete</a></li>
+<li><a href="../../../../Documentation/User Guide/Quick Start/Tutorial Webapp/index.html">Tutorial Webapp</a><ul>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="../../../../Documentation/User Guide/Design/index.html">Design</a></li>
+<li><a href="../../../../Documentation/User Guide/Generating Classes/index.html">Generating Classes</a></li>
+<li><a href="../../../../Documentation/User Guide/DataContext/index.html">DataContext</a></li>
+<li><a href="../../../../Documentation/User Guide/Queries/index.html">Queries</a></li>
+<li><a href="../../../../Documentation/User Guide/DataObjects/index.html">DataObjects</a></li>
+<li><a href="../../../../Documentation/User Guide/Stored Procedures/index.html">Stored Procedures</a></li>
+<li><a href="../../../../Documentation/User Guide/Expressions/index.html">Expressions</a></li>
+<li><a href="../../../../Documentation/User Guide/Performance Tuning/index.html">Performance Tuning</a></li>
+<li><a href="../../../../Documentation/User Guide/Deployment/index.html">Deployment</a></li>
+<li><a href="../../../../Documentation/User Guide/Ant Tasks/index.html">Ant Tasks</a></li>
+<li><a href="../../../../Documentation/User Guide/Access Stack Internals/index.html">Access Stack Internals</a></li>
+<li><a href="../../../../Documentation/User Guide/DataViews/index.html">DataViews</a></li>
+</ul>
+</div>
+<div id="ConfluenceContent"><p>Now we'll convert the tutorial that we created to a web application. The web part of it is done in JSP and is intentionally primitive from the UI perspective, to concentrate on Cayenne integration aspect. There may be some specifics depending on the web framework used (JSP, Struts, JSF, Click, WebWork, Tapestry, etc.), still the procedure outlined here is quite universal as it relies on the J2EE servlet specification.</p>
+
+<p>A typical Cayenne web application works like this:</p>
+
+<ul>
+	<li>Cayenne files are loaded when an application context is started, using a special servlet filter.</li>
+	<li>User requests are intercepted by the filter, and the DataContext is bound to the request thread, so the application can access it easily from anywhere.</li>
+	<li>The same DataContext instance is reused within a single user session; different sessions use different DataContexts (and therefore different sets of objects).</li>
+</ul>
+
+
+<p>For detailed discussion of web application deployment, check <a href="../../../../Documentation/User Guide/Deployment/Web Applications/index.html" title="Web Applications">this page</a>.</p>
+
+<p>To run the web application from Eclipse, we will use <span class="nobr"><a href="http://jettylauncher.sourceforge.net/" title="Visit page outside Confluence" rel="nofollow">JettyLauncher plugin<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. If you are using something else (e.g. a Tomcat plugin) it should probably work as well.</p>
+
+<ul>
+	<li><span class="nobr"><a href="http://jetty.mortbay.org" title="Visit page outside Confluence" rel="nofollow">Download<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and unpack Jetty web container (tested version is 5.1.3).</li>
+	<li><span class="nobr"><a href="http://sourceforge.net/project/showfiles.php?group_id=118870" title="Visit page outside Confluence" rel="nofollow">Download<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and unpack JettyLauncher to a local directory. Install it in Eclipse (<tt>"Help &gt; Find and Install"</tt>).</li>
+</ul>
+
+
+<ul>
+	<li>In Eclipse under "cayenne-tutorial" project folder create a new folder called "webapp" and a subfolder called "WEB-INF".</li>
+	<li>Under "WEB-INF" create a new file "web.xml". This is a standard web deployment descriptor:</li>
+</ul>
+
+
+<p><img src="webapp1.jpg" align="absmiddle" border="0" /></p>
+
+<p>The following is the contents of <tt>web.xml</tt>. All the DataContext magic described above is achieved by WebApplicationContextFilter.</p>
+
+<div class="code"><div class="codeHeader"><b>web.xml</b></div><div class="codeContent">
+<pre class="code-java">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"utf-8"</span>?&gt;
+ &lt;!DOCTYPE web-app
+   PUBLIC <span class="code-quote">"-<span class="code-comment">//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"</span>
+</span>   <span class="code-quote">"http:<span class="code-comment">//java.sun.com/dtd/web-app_2_3.dtd"</span>&gt;
+</span>&lt;web-app&gt;
+    &lt;display-name&gt;Cayenne Tutorial&lt;/display-name&gt;
+    &lt;filter&gt;
+        &lt;filter-name&gt;CayenneFilter&lt;/filter-name&gt;
+        &lt;filter-class&gt;org.objectstyle.cayenne.conf.WebApplicationContextFilter&lt;/filter-class&gt;
+    &lt;/filter&gt;
+    &lt;filter-mapping&gt;
+        &lt;filter-name&gt;CayenneFilter&lt;/filter-name&gt;
+        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+    &lt;/filter-mapping&gt;
+    &lt;welcome-file-list&gt;
+        &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
+    &lt;/welcome-file-list&gt;
+&lt;/web-app&gt;</pre>
+</div></div>
+
+<ul>
+	<li>Create the artist browser page - <tt>webapp/index.jsp</tt> file with the following contents:</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>webapp/index.jsp</b></div><div class="codeContent">
+<pre class="code-java">&lt;%@ page language=<span class="code-quote">"java"</span> contentType=<span class="code-quote">"text/html"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"cayenne.tutorial.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"org.objectstyle.cayenne.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"org.objectstyle.cayenne.query.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"org.objectstyle.cayenne.exp.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"org.objectstyle.cayenne.access.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"java.util.*"</span> %&gt;
+
+&lt;% 
+    SelectQuery query = <span class="code-keyword">new</span> SelectQuery(Artist.class);
+    query.addOrdering(Artist.NAME_PROPERTY, <span class="code-keyword">true</span>);
+
+    DataContext context = DataContext.getThreadDataContext();
+    List artists = context.performQuery(query);
+%&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Main&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;h2&gt;Artists:&lt;/h2&gt;
+        
+        &lt;% <span class="code-keyword">if</span>(artists.isEmpty()) {%&gt;
+        &lt;p&gt;No artists found&lt;/p&gt;
+        &lt;% } <span class="code-keyword">else</span> { 
+            Iterator it = artists.iterator();
+            <span class="code-keyword">while</span>(it.hasNext()) {
+                Artist a = (Artist) it.next();
+        %&gt;
+        &lt;p&gt;&lt;a href=<span class="code-quote">"detail.jsp?id=&lt;%=DataObjectUtils.intPKForObject(a)%&gt;"</span>&gt; &lt;%=a.getName()%&gt; &lt;/a&gt;&lt;/p&gt;
+        &lt;%
+            }
+            } %&gt;
+        &lt;hr&gt;
+        &lt;p&gt;&lt;a href=<span class="code-quote">"detail.jsp"</span>&gt;Create <span class="code-keyword">new</span> artist...&lt;/a&gt;&lt;/p&gt;
+    &lt;/body&gt;	
+&lt;/html&gt;</pre>
+</div></div>
+
+<ul>
+	<li>Create the artist editor page <tt>webapp/detail.jsp</tt> with the following content:</li>
+</ul>
+
+
+<div class="code"><div class="codeHeader"><b>webapp/detail.jsp</b></div><div class="codeContent">
+<pre class="code-java">&lt;%@ page language=<span class="code-quote">"java"</span> contentType=<span class="code-quote">"text/html"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"cayenne.tutorial.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"org.objectstyle.cayenne.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"org.objectstyle.cayenne.access.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"java.util.*"</span> %&gt;
+&lt;%@ page <span class="code-keyword">import</span>=<span class="code-quote">"java.text.*"</span> %&gt;
+
+&lt;% 
+    DataContext context = DataContext.getThreadDataContext();
+    <span class="code-object">String</span> id = request.getParameter(<span class="code-quote">"id"</span>);
+
+    <span class="code-comment">// find artist <span class="code-keyword">for</span> id
+</span>    Artist artist = <span class="code-keyword">null</span>;
+    <span class="code-keyword">if</span>(id != <span class="code-keyword">null</span> &amp;&amp; id.trim().length() &gt; 0) {
+        artist = (Artist) DataObjectUtils.objectForPK(context, Artist.class, <span class="code-object">Integer</span>.parseInt(id));
+    }
+
+    <span class="code-keyword">if</span>(<span class="code-quote">"POST"</span>.equals(request.getMethod())) {
+        <span class="code-comment">// <span class="code-keyword">if</span> no id is saved in the hidden field, we are dealing with
+</span>        <span class="code-comment">// create <span class="code-keyword">new</span> artist request
+</span>        <span class="code-keyword">if</span>(artist == <span class="code-keyword">null</span>) {
+            artist = (Artist) context.newObject(Artist.class);
+        }
+
+        <span class="code-comment">// note that in a real application we would so dome validation ...
+</span>        <span class="code-comment">// here we just hope the input is correct
+</span>        artist.setName(request.getParameter(<span class="code-quote">"name"</span>));
+        artist.setDateOfBirthString(request.getParameter(<span class="code-quote">"dateOfBirth"</span>));
+
+        context.commitChanges();
+
+        response.sendRedirect(<span class="code-quote">"index.jsp"</span>);
+    }
+
+    <span class="code-keyword">if</span>(artist == <span class="code-keyword">null</span>) {
+        <span class="code-comment">// create <span class="code-keyword">transient</span> artist <span class="code-keyword">for</span> the form response rendering
+</span>        artist = <span class="code-keyword">new</span> Artist();
+    }
+
+    <span class="code-object">String</span> name = artist.getName() == <span class="code-keyword">null</span> ? "" : artist.getName();
+    <span class="code-object">String</span> dob = artist.getDateOfBirth() == <span class="code-keyword">null</span>
+            ? <span class="code-quote">"" : <span class="code-keyword">new</span> SimpleDateFormat("</span>yyyyMMdd").format(artist.getDateOfBirth());
+%&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Artist Details&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;h2&gt;Artists Details&lt;/h2&gt;
+        &lt;form name=<span class="code-quote">"EditArtist"</span> action=<span class="code-quote">"detail.jsp"</span> method=<span class="code-quote">"POST"</span>&gt;
+            &lt;input type=<span class="code-quote">"hidden"</span> name=<span class="code-quote">"id"</span> value=<span class="code-quote">"&lt;%= id != <span class="code-keyword">null</span> ? id : "</span><span class="code-quote">" %&gt;"</span> /&gt;
+            &lt;table border=<span class="code-quote">"0"</span>&gt;
+                &lt;tr&gt;
+                    &lt;td&gt;Name:&lt;/td&gt;
+                    &lt;td&gt;&lt;input type=<span class="code-quote">"text"</span> name=<span class="code-quote">"name"</span> value=<span class="code-quote">"&lt;%= name %&gt;"</span>/&gt;&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td&gt;Date of Birth (yyyyMMdd):&lt;/td&gt;
+                    &lt;td&gt;&lt;input type=<span class="code-quote">"text"</span> name=<span class="code-quote">"dateOfBirth"</span> value=<span class="code-quote">"&lt;%= dob %&gt;"</span>/&gt;&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td&gt;&lt;/td&gt;
+                    &lt;td align=<span class="code-quote">"right"</span>&gt;&lt;input type=<span class="code-quote">"submit"</span> value=<span class="code-quote">"Save"</span> /&gt;&lt;/td&gt;
+                &lt;/tr&gt;  
+            &lt;/table&gt;
+        &lt;/form&gt;
+    &lt;/body&gt;	
+&lt;/html&gt;</pre>
+</div></div>
+
+<ul>
+	<li>Run the application. Go to "Run &gt; Run..." menu, select "Jetty Web", right click and select "New"</li>
+	<li>Make sure project is "cayenne-tutorial", webapp root is "webapp" and Jetty home points to a directory where you unpacked Jetty:</li>
+</ul>
+
+
+<p><img src="jetty-run.jpg" align="absmiddle" border="0" /></p>
+
+<ul>
+	<li>Click "Apply" and "Run".</li>
+	<li>You will see some Cayenne logs, indicating that the filter was loaded and Cayenne is successfully runing in web app.</li>
+	<li>Now go to <span class="nobr"><a href="http://localhost:8080/" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/<sup><img class="rendericon" src="../../../../images/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> URL. You should see "No artists found message" in the web browser and the following output in the Eclipse console:</li>
+</ul>
+
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>INFO  QueryLogger: --- will run 1 query.
+INFO  QueryLogger: Opening connection: jdbc:derby:/Users/andrus/Desktop/testdb;create=true
+	Login: null
+	Password: *******
+INFO  QueryLogger: +++ Connecting: SUCCESS.
+INFO  QueryLogger: --- transaction started.
+INFO  QueryLogger: Detected and installed adapter: org.objectstyle.cayenne.dba.derby.DerbyAdapter
+INFO  QueryLogger: SELECT t0.DATE_OF_BIRTH, t0.NAME, t0.ID FROM ARTIST t0 ORDER BY t0.NAME - prepared in 32 ms.
+INFO  QueryLogger: === returned 0 rows. - took 461 ms.
+INFO  QueryLogger: +++ transaction committed.</pre>
+</div></div>
+
+<ul>
+	<li>You can click on "Create new artist" link to create artists. Existing artists can be edited by clicking on their name:</li>
+</ul>
+
+
+<p><img src="artists.jpg" align="absmiddle" border="0" /></p>
+
+<p>You are done with the tutorial!</p></div>
+</div>
+  <div class="clearer">.</div>
+  <div style="height: 12px; background-image: url('../../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>
+
+  <div class="smalltext copyright">
+    Copyright &copy;2001-2006 ObjectStyle Group and content authors
+  </div>
+
+</body>
+</html>

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/jetty-run.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Webapp/jetty-run.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/jetty-run.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/webapp1.jpg
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/Tutorial%20Webapp/webapp1.jpg?rev=416596&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/Tutorial Webapp/webapp1.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/index.html
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User%20Guide/Quick%20Start/index.html?rev=416596&r1=416595&r2=416596&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/index.html (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-other/wiki-docs/Documentation/User Guide/Quick Start/index.html Fri Jun 23 00:45:11 2006
@@ -14,11 +14,16 @@
 <li><a href="../../../Documentation/User Guide/Introduction/index.html">Introduction</a></li>
 <li><a href="../../../Documentation/User Guide/Installation/index.html">Installation</a></li>
 <li><a href="../../../Documentation/User Guide/Quick Start/index.html">Quick Start</a><ul>
-<li><a href="../../../Documentation/User Guide/Quick Start/Common Setup Steps/index.html">Common Setup Steps</a></li>
-<li><a href="../../../Documentation/User Guide/Quick Start/Command-Line Tutorial/index.html">Command-Line Tutorial</a></li>
-<li><a href="../../../Documentation/User Guide/Quick Start/JSP-Struts Tutorial/index.html">JSP-Struts Tutorial</a></li>
-<li><a href="../../../Documentation/User Guide/Quick Start/Tapestry Tutorial/index.html">Tapestry Tutorial</a></li>
-<li><a href="../../../Documentation/User Guide/Quick Start/Cayenne Application/index.html">Cayenne Application</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Setup/index.html">Tutorial Setup</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html">Tutorial Starting Mapping Project</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html">Tutorial Object Relational Mapping</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html">Tutorial Generate Database and Java Classes</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial DataContext/index.html">Tutorial DataContext</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial DataObjects/index.html">Tutorial DataObjects</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Mapping Query/index.html">Tutorial Mapping Query</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html">Tutorial SelectQuery</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Delete/index.html">Tutorial Delete</a></li>
+<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Webapp/index.html">Tutorial Webapp</a></li>
 </ul>
 </li>
 <li><a href="../../../Documentation/User Guide/Design/index.html">Design</a></li>
@@ -35,7 +40,46 @@
 <li><a href="../../../Documentation/User Guide/DataViews/index.html">DataViews</a></li>
 </ul>
 </div>
-<div id="ConfluenceContent"></div>
+<div id="ConfluenceContent"><p>This chapter provides a step-by-step tutorial on writing a full database application with Cayenne. When you are done with it, you should have an understanding of the basics of object relational mapping with CayenneModeler and how to use Cayenne in standalone (command line or otherwise) and web applications. The tutorial uses the Eclipse IDE (since it is free and very common) and Derby database (since it supports embedded mode and thus requires zero setup), however it can be easily applied to any other database and/or IDE's.</p>
+
+<p>Full tutorial source code in a form of Eclipse project is distributed with Cayenne.</p>
+
+<h3><a name="QuickStart-TutorialContents"></a>Tutorial Contents</h3>
+
+<ul>
+	<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Setup/index.html" title="Tutorial Setup">Setting up the environment...</a></li>
+</ul>
+
+
+<ul>
+	<li>Learning mapping basics
+	<ul>
+		<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Starting Mapping Project/index.html" title="Tutorial Starting Mapping Project">Starting mapping project...</a></li>
+		<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Object Relational Mapping/index.html" title="Tutorial Object Relational Mapping">Getting started with Object Relational Mapping (ORM)...</a></li>
+		<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Generate Database and Java Classes/index.html" title="Tutorial Generate Database and Java Classes">Creating database schema and Java classes...</a></li>
+	</ul>
+	</li>
+</ul>
+
+
+<ul>
+	<li>Learning Cayenne API
+	<ul>
+		<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial DataContext/index.html" title="Tutorial DataContext">Getting started with DataContext...</a></li>
+		<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial DataObjects/index.html" title="Tutorial DataObjects">Getting started with persistent objects...</a></li>
+		<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Mapping Query/index.html" title="Tutorial Mapping Query">Cleaning up the database on startup...</a></li>
+		<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial SelectQuery/index.html" title="Tutorial SelectQuery">Selecting objects...</a></li>
+		<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Delete/index.html" title="Tutorial Delete">Deleting objects...</a></li>
+	</ul>
+	</li>
+</ul>
+
+
+<ul>
+	<li><a href="../../../Documentation/User Guide/Quick Start/Tutorial Webapp/index.html" title="Tutorial Webapp">Converting to web application...</a></li>
+</ul>
+
+</div>
 </div>
   <div class="clearer">.</div>
   <div style="height: 12px; background-image: url('../../../images/border_bottom.gif'); background-repeat: repeat-x;"></div>