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 2009/12/22 14:46:29 UTC

svn commit: r893165 - in /cayenne/main/branches/STABLE-3.0/tutorials: ./ tutorial/ tutorial/.settings/ tutorial/src/ tutorial/src/main/ tutorial/src/main/java/ tutorial/src/main/java/org/ tutorial/src/main/java/org/example/ tutorial/src/main/java/org/e...

Author: aadamchik
Date: Tue Dec 22 13:46:28 2009
New Revision: 893165

URL: http://svn.apache.org/viewvc?rev=893165&view=rev
Log:
3.0 cayenne tutorial

(cherry picked from commit 0e5ed78957e2f1c11110347d7c724a420f728c8c)

Added:
    cayenne/main/branches/STABLE-3.0/tutorials/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.classpath
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.project
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.settings/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.settings/org.maven.ide.eclipse.prefs
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/pom.xml
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/Main.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Artist.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Gallery.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Painting.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/UntitledDomainMap.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Artist.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Gallery.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Painting.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_UntitledDomainMap.java
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainMap.map.xml
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainNode.driver.xml
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/cayenne.xml
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/WEB-INF/
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/WEB-INF/web.xml
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/detail.jsp
    cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/index.jsp

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.classpath
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.classpath?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.classpath (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.classpath Tue Dec 22 13:46:28 2009
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.project
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.project?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.project (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.project Tue Dec 22 13:46:28 2009
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>tutorial</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+	</natures>
+</projectDescription>

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.settings/org.maven.ide.eclipse.prefs
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.settings/org.maven.ide.eclipse.prefs?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.settings/org.maven.ide.eclipse.prefs (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/.settings/org.maven.ide.eclipse.prefs Tue Dec 22 13:46:28 2009
@@ -0,0 +1,9 @@
+#Sun Dec 20 19:22:46 EET 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/pom.xml
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/pom.xml?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/pom.xml (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/pom.xml Tue Dec 22 13:46:28 2009
@@ -0,0 +1,31 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.example.cayenne</groupId>
+	<artifactId>tutorial</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.cayenne</groupId>
+			<artifactId>cayenne-server</artifactId>
+			<version>3.0B1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.derby</groupId>
+			<artifactId>derby</artifactId>
+			<version>10.5.3.0</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.mortbay.jetty</groupId>
+				<artifactId>maven-jetty-plugin</artifactId>
+				<version>6.1.18</version>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
\ No newline at end of file

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/Main.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/Main.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/Main.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/Main.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,92 @@
+package org.example.cayenne;
+
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import org.apache.cayenne.DataObjectUtils;
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.query.SelectQuery;
+import org.example.cayenne.persistent.Artist;
+import org.example.cayenne.persistent.Gallery;
+import org.example.cayenne.persistent.Painting;
+
+public class Main {
+
+	public static void main(String[] args) {
+
+		// getting a hold of ObjectContext
+		ObjectContext context = DataContext.createDataContext();
+
+		newObjectsTutorial(context);
+		selectTutorial(context);
+		deleteTutorial(context);
+	}
+
+	static void newObjectsTutorial(ObjectContext context) {
+
+		// creating new Artist
+		Artist picasso = context.newObject(Artist.class);
+		picasso.setName("Pablo Picasso");
+		picasso.setDateOfBirthString("18811025");
+
+		// Creating other objects
+		Gallery metropolitan = context.newObject(Gallery.class);
+		metropolitan.setName("Metropolitan Museum of Art");
+
+		Painting girl = context.newObject(Painting.class);
+		girl.setName("Girl Reading at a Table");
+
+		Painting stein = context.newObject(Painting.class);
+		stein.setName("Gertrude Stein");
+
+		// connecting objects together via relationships
+		picasso.addToPaintings(girl);
+		picasso.addToPaintings(stein);
+
+		girl.setGallery(metropolitan);
+		stein.setGallery(metropolitan);
+
+		// saving all the changes above
+		context.commitChanges();
+	}
+
+	static void selectTutorial(ObjectContext context) {
+		// SelectQuery examples
+		SelectQuery select1 = new SelectQuery(Painting.class);
+		List<Painting> paintings1 = context.performQuery(select1);
+
+		Expression qualifier2 = ExpressionFactory.likeIgnoreCaseExp(
+				Painting.NAME_PROPERTY, "gi%");
+		SelectQuery select2 = new SelectQuery(Painting.class, qualifier2);
+		List<Painting> paintings2 = context.performQuery(select2);
+
+		Calendar c = new GregorianCalendar();
+		c.set(c.get(Calendar.YEAR) - 100, 0, 1, 0, 0, 0);
+
+		Expression qualifier3 = Expression
+				.fromString("artist.dateOfBirth < $date");
+		qualifier3 = qualifier3.expWithParameters(Collections.singletonMap(
+				"date", c.getTime()));
+		SelectQuery select3 = new SelectQuery(Painting.class, qualifier3);
+		List<Painting> paintings3 = context.performQuery(select3);
+	}
+
+	static void deleteTutorial(ObjectContext context) {
+		// Delete object examples
+		Expression qualifier = ExpressionFactory.matchExp(Artist.NAME_PROPERTY,
+				"Pablo Picasso");
+		SelectQuery selectToDelete = new SelectQuery(Artist.class, qualifier);
+		Artist picasso = (Artist) DataObjectUtils.objectForQuery(context,
+				selectToDelete);
+
+		if (picasso != null) {
+			context.deleteObject(picasso);
+			context.commitChanges();
+		}
+	}
+}

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Artist.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Artist.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Artist.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,34 @@
+package org.example.cayenne.persistent;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.example.cayenne.persistent.auto._Artist;
+
+public class Artist extends _Artist {
+
+	static final String DEFAULT_DATE_FORMAT = "yyyyMMdd";
+
+	/**
+	 * Sets date of birth using a string in format yyyyMMdd.
+	 */
+	public void setDateOfBirthString(String yearMonthDay) {
+		if (yearMonthDay == null) {
+			setDateOfBirth(null);
+		} else {
+
+			Date date;
+			try {
+				date = new SimpleDateFormat(DEFAULT_DATE_FORMAT)
+						.parse(yearMonthDay);
+			} catch (ParseException e) {
+				throw new IllegalArgumentException(
+						"A date argument must be in format '"
+								+ DEFAULT_DATE_FORMAT + "': " + yearMonthDay);
+			}
+
+			setDateOfBirth(date);
+		}
+	}
+}

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Gallery.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Gallery.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Gallery.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Gallery.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,7 @@
+package org.example.cayenne.persistent;
+
+import org.example.cayenne.persistent.auto._Gallery;
+
+public class Gallery extends _Gallery {
+
+}

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Painting.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Painting.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/Painting.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,7 @@
+package org.example.cayenne.persistent;
+
+import org.example.cayenne.persistent.auto._Painting;
+
+public class Painting extends _Painting {
+
+}

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/UntitledDomainMap.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/UntitledDomainMap.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/UntitledDomainMap.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/UntitledDomainMap.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,18 @@
+package org.example.cayenne.persistent;
+
+import org.example.cayenne.persistent.auto._UntitledDomainMap;
+
+public class UntitledDomainMap extends _UntitledDomainMap {
+
+    private static UntitledDomainMap instance;
+
+    private UntitledDomainMap() {}
+
+    public static UntitledDomainMap getInstance() {
+        if(instance == null) {
+            instance = new UntitledDomainMap();
+        }
+
+        return instance;
+    }
+}

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Artist.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Artist.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Artist.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,49 @@
+package org.example.cayenne.persistent.auto;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.example.cayenne.persistent.Painting;
+
+/**
+ * Class _Artist was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Artist extends CayenneDataObject {
+
+    public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
+    public static final String NAME_PROPERTY = "name";
+    public static final String PAINTINGS_PROPERTY = "paintings";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public void setDateOfBirth(Date dateOfBirth) {
+        writeProperty("dateOfBirth", dateOfBirth);
+    }
+    public Date getDateOfBirth() {
+        return (Date)readProperty("dateOfBirth");
+    }
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void addToPaintings(Painting obj) {
+        addToManyTarget("paintings", obj, true);
+    }
+    public void removeFromPaintings(Painting obj) {
+        removeToManyTarget("paintings", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<Painting> getPaintings() {
+        return (List<Painting>)readProperty("paintings");
+    }
+
+
+}

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Gallery.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Gallery.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Gallery.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Gallery.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,40 @@
+package org.example.cayenne.persistent.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.example.cayenne.persistent.Painting;
+
+/**
+ * Class _Gallery was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Gallery extends CayenneDataObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String PAINTINGS_PROPERTY = "paintings";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void addToPaintings(Painting obj) {
+        addToManyTarget("paintings", obj, true);
+    }
+    public void removeFromPaintings(Painting obj) {
+        removeToManyTarget("paintings", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<Painting> getPaintings() {
+        return (List<Painting>)readProperty("paintings");
+    }
+
+
+}

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Painting.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Painting.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_Painting.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,46 @@
+package org.example.cayenne.persistent.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.example.cayenne.persistent.Artist;
+import org.example.cayenne.persistent.Gallery;
+
+/**
+ * Class _Painting was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Painting extends CayenneDataObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String ARTIST_PROPERTY = "artist";
+    public static final String GALLERY_PROPERTY = "gallery";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void setArtist(Artist artist) {
+        setToOneTarget("artist", artist, true);
+    }
+
+    public Artist getArtist() {
+        return (Artist)readProperty("artist");
+    }
+
+
+    public void setGallery(Gallery gallery) {
+        setToOneTarget("gallery", gallery, true);
+    }
+
+    public Gallery getGallery() {
+        return (Gallery)readProperty("gallery");
+    }
+
+
+}

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_UntitledDomainMap.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_UntitledDomainMap.java?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_UntitledDomainMap.java (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/java/org/example/cayenne/persistent/auto/_UntitledDomainMap.java Tue Dec 22 13:46:28 2009
@@ -0,0 +1,12 @@
+package org.example.cayenne.persistent.auto;
+
+
+
+/**
+ * This class was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public class _UntitledDomainMap {
+}
\ No newline at end of file

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainMap.map.xml
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainMap.map.xml?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainMap.map.xml (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainMap.map.xml Tue Dec 22 13:46:28 2009
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap http://cayenne.apache.org/schema/3.0/modelMap.xsd"
+  project-version="3.0.0.1">
+	<property name="defaultPackage" value="org.example.cayenne.persistent"/>
+	<db-entity name="ARTIST">
+		<db-attribute name="DATE_OF_BIRTH" type="DATE"/>
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isGenerated="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" length="200"/>
+	</db-entity>
+	<db-entity name="GALLERY">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isGenerated="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" length="200"/>
+	</db-entity>
+	<db-entity name="PAINTING">
+		<db-attribute name="ARTIST_ID" type="INTEGER"/>
+		<db-attribute name="GALLERY_ID" type="INTEGER"/>
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isGenerated="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" length="200"/>
+	</db-entity>
+	<obj-entity name="Artist" className="org.example.cayenne.persistent.Artist" dbEntityName="ARTIST">
+		<obj-attribute name="dateOfBirth" type="java.util.Date" db-attribute-path="DATE_OF_BIRTH"/>
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<obj-entity name="Gallery" className="org.example.cayenne.persistent.Gallery" dbEntityName="GALLERY">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<obj-entity name="Painting" className="org.example.cayenne.persistent.Painting" dbEntityName="PAINTING">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<db-relationship name="paintings" source="ARTIST" target="PAINTING" toMany="true">
+		<db-attribute-pair source="ID" target="ARTIST_ID"/>
+	</db-relationship>
+	<db-relationship name="paintings" source="GALLERY" target="PAINTING" toMany="true">
+		<db-attribute-pair source="ID" target="GALLERY_ID"/>
+	</db-relationship>
+	<db-relationship name="artist" source="PAINTING" target="ARTIST" toMany="false">
+		<db-attribute-pair source="ARTIST_ID" target="ID"/>
+	</db-relationship>
+	<db-relationship name="gallery" source="PAINTING" target="GALLERY" toMany="false">
+		<db-attribute-pair source="GALLERY_ID" target="ID"/>
+	</db-relationship>
+	<obj-relationship name="paintings" source="Artist" target="Painting" deleteRule="Cascade" db-relationship-path="paintings"/>
+	<obj-relationship name="paintings" source="Gallery" target="Painting" deleteRule="Nullify" db-relationship-path="paintings"/>
+	<obj-relationship name="artist" source="Painting" target="Artist" deleteRule="Nullify" db-relationship-path="artist"/>
+	<obj-relationship name="gallery" source="Painting" target="Gallery" deleteRule="Nullify" db-relationship-path="gallery"/>
+</data-map>

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainNode.driver.xml
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainNode.driver.xml?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainNode.driver.xml (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/UntitledDomainNode.driver.xml Tue Dec 22 13:46:28 2009
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<driver project-version="3.0.0.1" class="org.apache.derby.jdbc.EmbeddedDriver">
+	<url value="jdbc:derby:memory:testdb;create=true "/>
+	<connectionPool min="1" max="1"/>
+	<login/>
+</driver>

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/cayenne.xml
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/cayenne.xml?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/cayenne.xml (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/resources/cayenne.xml Tue Dec 22 13:46:28 2009
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<domains project-version="3.0.0.1">
+<domain name="UntitledDomain">
+	<map name="UntitledDomainMap" location="UntitledDomainMap.map.xml"/>
+
+	<node name="UntitledDomainNode"
+		 datasource="UntitledDomainNode.driver.xml"
+		 factory="org.apache.cayenne.conf.DriverDataSourceFactory"
+		 schema-update-strategy="org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy">
+			<map-ref name="UntitledDomainMap"/>
+	 </node>
+</domain>
+</domains>

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/WEB-INF/web.xml?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/WEB-INF/web.xml (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/WEB-INF/web.xml Tue Dec 22 13:46:28 2009
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE web-app
+   PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+   "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+	<display-name>Cayenne Tutorial</display-name>
+
+	<!--
+		This filter provides each request thread with a session-bound
+		DataContext
+	-->
+	<filter>
+		<filter-name>CayenneFilter</filter-name>
+		<filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class>
+	</filter>
+	<filter-mapping>
+		<filter-name>CayenneFilter</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+	<welcome-file-list>
+		<welcome-file>index.jsp</welcome-file>
+	</welcome-file-list>
+</web-app>
\ No newline at end of file

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/detail.jsp
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/detail.jsp?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/detail.jsp (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/detail.jsp Tue Dec 22 13:46:28 2009
@@ -0,0 +1,67 @@
+<%@ page language="java" contentType="text/html" %>
+<%@ page import="org.example.cayenne.persistent.*" %>
+<%@ page import="org.apache.cayenne.*" %>
+<%@ page import="java.util.*" %>
+<%@ page import="java.text.*" %>
+
+<% 
+    ObjectContext context = BaseContext.getThreadObjectContext();
+    String id = request.getParameter("id");
+
+    // find artist for id
+    Artist artist = null;
+    if(id != null && id.trim().length() > 0) {
+        artist = (Artist) DataObjectUtils.objectForPK(context, Artist.class, Integer.parseInt(id));
+    }
+
+    if("POST".equals(request.getMethod())) {
+        // if no id is saved in the hidden field, we are dealing with
+        // create new artist request
+        if(artist == null) {
+            artist = (Artist) context.newObject(Artist.class);
+        }
+
+        // note that in a real application we would so dome validation ...
+        // here we just hope the input is correct
+        artist.setName(request.getParameter("name"));
+        artist.setDateOfBirthString(request.getParameter("dateOfBirth"));
+
+        context.commitChanges();
+
+        response.sendRedirect("index.jsp");
+    }
+
+    if(artist == null) {
+        // create transient artist for the form response rendering
+        artist = new Artist();
+    }
+
+    String name = artist.getName() == null ? "" : artist.getName();
+    String dob = artist.getDateOfBirth() == null
+            ? "" : new SimpleDateFormat("yyyyMMdd").format(artist.getDateOfBirth());
+%>
+<html>
+    <head>
+        <title>Artist Details</title>
+    </head>
+    <body>
+        <h2>Artists Details</h2>
+        <form name="EditArtist" action="detail.jsp" method="POST">
+            <input type="hidden" name="id" value="<%= id != null ? id : "" %>" />
+            <table border="0">
+                <tr>
+                    <td>Name:</td>
+                    <td><input type="text" name="name" value="<%= name %>"/></td>
+                </tr>
+                <tr>
+                    <td>Date of Birth (yyyyMMdd):</td>
+                    <td><input type="text" name="dateOfBirth" value="<%= dob %>"/></td>
+                </tr>
+                <tr>
+                    <td></td>
+                    <td align="right"><input type="submit" value="Save" /></td>
+                </tr>  
+            </table>
+        </form>
+    </body>	
+</html>
\ No newline at end of file

Added: cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/index.jsp?rev=893165&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/index.jsp (added)
+++ cayenne/main/branches/STABLE-3.0/tutorials/tutorial/src/main/webapp/index.jsp Tue Dec 22 13:46:28 2009
@@ -0,0 +1,36 @@
+<%@ page language="java" contentType="text/html" %>
+<%@ page import="org.example.cayenne.persistent.*" %>
+<%@ page import="org.apache.cayenne.*" %>
+<%@ page import="org.apache.cayenne.query.*" %>
+<%@ page import="org.apache.cayenne.exp.*" %>
+<%@ page import="java.util.*" %>
+
+<% 
+    SelectQuery query = new SelectQuery(Artist.class);
+    query.addOrdering(Artist.NAME_PROPERTY, true);
+
+    ObjectContext context = BaseContext.getThreadObjectContext();
+    List artists = context.performQuery(query);
+%>
+<html>
+    <head>
+        <title>Main</title>
+    </head>
+    <body>
+        <h2>Artists:</h2>
+        
+        <% if(artists.isEmpty()) {%>
+        <p>No artists found</p>
+        <% } else { 
+            Iterator it = artists.iterator();
+            while(it.hasNext()) {
+                Artist a = (Artist) it.next();
+        %>
+        <p><a href="detail.jsp?id=<%=DataObjectUtils.intPKForObject(a)%>"> <%=a.getName()%> </a></p>
+        <%
+            }
+            } %>
+        <hr>
+        <p><a href="detail.jsp">Create new artist...</a></p>
+    </body>	
+</html>
\ No newline at end of file