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