Author: arminw
Date: Thu Nov  8 07:29:20 2007
New Revision: 593197

URL: http://svn.apache.org/viewvc?rev=593197&view=rev
Log:
add example for use of OJB's xdoclet-module

Added:
    db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/
    db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/
    db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Author.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/AuthorDetail.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/BasicObject.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Book.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/CD.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/DVD.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Medium.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/ProductGroup.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Publisher.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/PublisherImpl.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Review.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/SampleTest.java

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Author.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Author.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Author.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Author.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,153 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The Author class
+ * 
+ * FK's only used in a 1:1 reference can use an "anonymous field" (no FK field 
in java class).
+ * @ojb.class
+ * @ojb.field name="fkAuthorDetail" jdbc-type="INTEGER"
+ */
+public class Author extends BasicObject
+{
+    /**
+     * @ojb.field
+     */
+    private String name;
+    // This field is used by a 1:1 and target of an 1:n reference in class 
PublisherImpl
+    // so it's not recommended to use an "anonymous field". But we can declare 
it as 
+    // private field without getter/setter with a specific PersistentField 
implementation
+    // class called 'direct' (the OJB shortcut name)
+    /**
+     * @ojb.field field-class="direct"
+     */
+    private Integer fkPublisher;
+    /**
+     * @ojb.reference foreignkey="fkPublisher" auto-retrieve="true"
+     *                auto-update="create" auto-delete="none" proxy="true"
+     */
+    private Publisher publisher;
+    /**
+     * @ojb.reference foreignkey="fkAuthorDetail" auto-retrieve="true"
+     *                auto-update="create" auto-delete="none" proxy="true"
+     */
+    private AuthorDetail authorDetail;
+    /**
+     * @ojb.collection element-class-ref="org.apache.ojb.sample.Medium"
+     * indirection-table="MEDIUM_AUTHOR"
+     * foreignkey="authorId"
+     * auto-retrieve="true"
+     * auto-update="create" 
+     * auto-delete="none" 
+     * proxy="true"
+     */
+    private List media;
+
+    public Author()
+    {
+    }
+
+    public Author(String name, List books)
+    {
+        this.name = name;
+        this.media = books;
+    }
+
+    public void addMedia(Medium medium)
+    {
+        if (media == null)
+        {
+            media = new ArrayList();
+        }
+        if (!media.contains(medium))
+        {
+            media.add(medium);
+            medium.addAuthor(this);
+        }
+    }
+
+    public boolean removeMedia(Medium medium)
+    {
+        boolean result = false;
+        if (media != null)
+        {
+            result = media.remove(medium);
+            if (result) medium.removeAuthor(this);
+        }
+        return result;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public List getMedia()
+    {
+        return media;
+    }
+
+    public Publisher getPublisher()
+    {
+        return publisher;
+    }
+
+    public void setPublisher(Publisher publisher)
+    {
+        if(this.publisher != publisher)
+        {
+            Publisher old = this.publisher;
+            this.publisher = publisher;
+            if(publisher != null)
+            {
+                publisher.addAuthor(this);
+            }
+            if(old != null)
+            {
+                old.removeAuthor(this);
+            }
+        }
+    }
+
+    public AuthorDetail getAuthorDetail()
+    {
+        return authorDetail;
+    }
+
+    public void setAuthorDetail(AuthorDetail authorDetail)
+    {
+        if(this.authorDetail != authorDetail)
+        {
+            AuthorDetail old = this.authorDetail;
+            this.authorDetail = authorDetail;
+            if(authorDetail != null) authorDetail.setAuthor(this);
+            if(old != null) old.setAuthor(null);
+        }
+    }
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/AuthorDetail.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/AuthorDetail.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/AuthorDetail.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/AuthorDetail.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,85 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Details class of Author class
+ * 
+ * @ojb.class
+ * @version $Id$
+ */
+public class AuthorDetail extends BasicObject
+{
+    /**
+     * @ojb.field
+     */
+    private String bio;
+    // use PersistentFieldDirectImpl, no getter/setter required
+    /**
+     * @ojb.field field-class="direct"
+     */
+    private Integer fkAuthor;
+    /**
+     * @ojb.reference foreignkey="fkAuthor" auto-retrieve="true"
+     *                auto-update="create" auto-delete="none" proxy="true"
+     */
+    private Author author;
+
+    public AuthorDetail()
+    {
+    }
+
+    public AuthorDetail(String bio)
+    {
+        this.bio = bio;
+    }
+
+    public String getBio()
+    {
+        return bio;
+    }
+
+    public void setBio(String bio)
+    {
+        this.bio = bio;
+    }
+
+    public Author getAuthor()
+    {
+        return author;
+    }
+
+    public void setAuthor(Author author)
+    {
+        if(this.author != author)
+        {
+            Author old = this.author;
+            this.author = author;
+            if(author != null)
+            {
+                author.setAuthorDetail(this);
+            }
+            if(old != null)
+            {
+                old.setAuthorDetail(null);
+            }
+        }
+    }
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/BasicObject.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/BasicObject.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/BasicObject.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/BasicObject.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,77 @@
+package org.apache.ojb.sample;
+
+import java.io.Serializable;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * A base class.
+ * 
+ * IMPORTANT: Don't declare a 'ojb.class' tag, because this is only a base 
class
+ * and we only need the base fields in the sub-classes (xdoclet shouldn't 
generate
+ * the table- or mapping-info for this class).
+ * 
+ * @version $Id$
+ */
+class BasicObject implements Serializable
+{
+    /**
+     * @ojb.field autoincrement="ojb" primarykey="true" field-class="direct"
+     */
+    Integer id;
+
+    /**
+     * @ojb.field locking="true" field-class="direct"
+     */
+    Integer version;
+
+    public Integer getId()
+    {
+        return id;
+    }
+
+    public Integer getVersion()
+    {
+        return version;
+    }
+
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj.getClass().equals(this.getClass()))
+        {
+            BasicObject tmp = (BasicObject) obj;
+            if (tmp.getId() != null)
+            {
+                return tmp.getId().equals(this.getId());
+            }
+            else
+            {
+                return tmp == this;
+            }
+        }
+        return false;
+    }
+
+    public int hashCode()
+    {
+        // this could cause problems, but I don't know a better way
+        return id != null ? getId().hashCode() : 0;
+    }
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Book.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Book.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Book.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Book.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,40 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Date;
+
+/**
+ * The Book class
+ * 
+ * @ojb.class
+ * @version $Id$
+ */
+public class Book extends Medium
+{
+    public Book()
+    {
+    }
+
+    public Book(String title, Date publicationDate, byte[] cover)
+    {
+        super(title, publicationDate, cover);
+    }
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/CD.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/CD.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/CD.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/CD.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,40 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Date;
+
+/**
+ * The CD class
+ * 
+ * @ojb.class
+ * @version $Id$
+ */
+public class CD extends Medium
+{
+    public CD()
+    {
+    }
+
+    public CD(String title, Date publicationDate, byte[] cover)
+    {
+        super(title, publicationDate, cover);
+    }
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/DVD.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/DVD.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/DVD.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/DVD.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,40 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Date;
+
+/**
+ * The DVD class
+ * 
+ * @ojb.class
+ * @version $Id$
+ */
+public class DVD extends Medium
+{
+    public DVD()
+    {
+    }
+
+    public DVD(String title, Date publicationDate, byte[] cover)
+    {
+        super(title, publicationDate, cover);
+    }
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Medium.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Medium.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Medium.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Medium.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,234 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+
+/**
+ * A "medium" base class
+ * 
+ * FK's only used in a 1:1 reference can use an "anonymous field" (no FK field 
in java class).
+ * @ojb.class generate-table-info="false"
+ * @ojb.field name="fkPublisher" jdbc-type="INTEGER"
+ * @version $Id$
+ */
+public abstract class Medium extends BasicObject
+{
+    /**
+     * @ojb.field
+     */
+    private String title;
+    /**
+     * @ojb.field jdbc-type="TIMESTAMP" conversion="JavaData2SqlTimestamp"
+     */
+    private Date publicationDate;
+    /**
+     * @ojb.field jdbc-type="LONGVARBINARY"
+     */
+    private byte[] cover;
+    // This field is used by a 1:1 and target of an 1:n reference in class 
ProductGroup
+    // so it's not recommended to use an "anonymous field". But we can declare 
it as 
+    // private field without getter/setter with a specific PersistentField 
implementation
+    // class called 'direct' (the OJB shortcut name)
+    /**
+     * @ojb.field field-class="direct"
+     */
+    private Integer fkProductGroup;
+    
+    /**
+     * @ojb.reference foreignkey="fkProductGroup" auto-retrieve="true"
+     *                auto-update="create" auto-delete="none" proxy="true"
+     */
+    private ProductGroup productGroup;
+    /**
+     * @ojb.reference foreignkey="fkPublisher" auto-retrieve="true"
+     *                auto-update="create" auto-delete="none" proxy="true"
+     */
+    private Publisher publisher;
+    
+    
+    /**
+     * @ojb.collection element-class-ref="org.apache.ojb.sample.Author"
+     * indirection-table="MEDIUM_AUTHOR"
+     * foreignkey="mediumId"
+     * auto-retrieve="true"
+     * auto-update="create" 
+     * auto-delete="none" 
+     * proxy="true"
+     */
+    private List authors;
+    /**
+     * @ojb.collection element-class-ref="org.apache.ojb.sample.Review"
+     * foreignkey="fkMedium"
+     * auto-retrieve="true"
+     * auto-update="create" 
+     * auto-delete="none" 
+     * proxy="true"
+     */
+    private List reviews;
+
+    public Medium()
+    {
+    }
+
+    public Medium(String title, Date publicationDate, byte[] cover)
+    {
+        this.title = title;
+        this.publicationDate = publicationDate;
+        this.cover = cover;
+    }
+
+    public String toString()
+    {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", id).append("title", title).append(
+                        "publicationDate", publicationDate).append("version",
+                        version).append(
+                        "cover", cover).append("authors.size",
+                        authors != null ? authors.size() : 0).append(
+                        "reviews.size", reviews != null ? reviews.size() : 0)
+                .append("publisher", publisher).toString();
+    }
+
+    public void addAuthor(Author author)
+    {
+        if (authors == null)
+        {
+            authors = new ArrayList();
+        }
+        if (!authors.contains(author))
+        {
+            authors.add(author);
+            author.addMedia(this);
+        }
+    }
+
+    public boolean removeAuthor(Author author)
+    {
+        boolean result = false;
+        if (authors != null)
+        {
+            result = authors.remove(author);
+            if (result) author.removeMedia(this);
+        }
+        return result;
+    }
+
+    public void addReview(Review review)
+    {
+        if (reviews == null)
+        {
+            reviews = new ArrayList();
+        }
+        if(!reviews.contains(review))
+        {
+            reviews.add(review);
+            review.setMedium(this);
+        }
+    }
+
+    public boolean removeReview(Review review)
+    {
+        boolean result = false;
+        if (reviews != null) result = reviews.remove(review);
+        if(result)
+        {
+            review.setMedium(null);
+        }
+        return result;
+    }
+
+    public String getTitle()
+    {
+        return title;
+    }
+
+    public void setTitle(String title)
+    {
+        this.title = title;
+    }
+
+    public Date getPublicationDate()
+    {
+        return publicationDate;
+    }
+
+    public void setPublicationDate(Date publicationDate)
+    {
+        this.publicationDate = publicationDate;
+    }
+
+    public byte[] getCover()
+    {
+        return cover;
+    }
+
+    public void setCover(byte[] cover)
+    {
+        this.cover = cover;
+    }
+
+    public List getAuthors()
+    {
+        return authors;
+    }
+
+    public List getReviews()
+    {
+        return reviews;
+    }
+
+    public Publisher getPublisher()
+    {
+        return publisher;
+    }
+
+    public void setPublisher(Publisher publisher)
+    {
+        this.publisher = publisher;
+    }
+
+    public ProductGroup getProductGroup()
+    {
+        return productGroup;
+    }
+
+    public void setProductGroup(ProductGroup productGroup)
+    {
+        if(this.productGroup != productGroup)
+        {
+            ProductGroup old = this.productGroup;
+            this.productGroup = productGroup;
+            if(productGroup != null)
+            {
+                productGroup.addMedium(this);
+            }
+            if(old != null)
+            {
+                old.removeMedium(this);
+            }
+        }
+    }
+}
\ No newline at end of file

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/ProductGroup.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/ProductGroup.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/ProductGroup.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/ProductGroup.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,91 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The ProductGroup class
+ * 
+ * @ojb.class
+ * @version $Id$
+ */
+public class ProductGroup extends BasicObject
+{
+    /**
+     * @ojb.field
+     */
+    private String name;
+    /**
+     * @ojb.collection element-class-ref="org.apache.ojb.sample.Medium"
+     * foreignkey="fkProductGroup"
+     * auto-retrieve="true"
+     * auto-update="create" 
+     * auto-delete="none" 
+     * proxy="true"
+     */
+    private List media;
+
+    public ProductGroup()
+    {
+    }
+
+    public ProductGroup(String name)
+    {
+        this.name = name;
+    }
+
+    public List getMedia()
+    {
+        return media;
+    }
+
+    public void addMedium(Medium medium)
+    {
+        if (media == null) media = new ArrayList();
+        if (!media.contains(medium))
+        {
+            media.add(medium);
+            medium.setProductGroup(this);
+        }
+    }
+
+    public boolean removeMedium(Medium medium)
+    {
+        boolean result = false;
+        if (media != null) result = media.remove(medium);
+        if(result)
+        {
+            medium.setProductGroup(null);
+        }
+        return result;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+}
\ No newline at end of file

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Publisher.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Publisher.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Publisher.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Publisher.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,44 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * The Publisher interface
+ *
+ * @ojb.class generate-table-info="false"
+ * @version $Id$
+ */
+public interface Publisher extends Serializable
+{
+    public Integer getId();
+
+    public String getName();
+
+    public void setName(String name);
+
+    public List getAuthors();
+
+    public boolean removeAuthor(Author author);
+
+    public void addAuthor(Author author);
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/PublisherImpl.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/PublisherImpl.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/PublisherImpl.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/PublisherImpl.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,101 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The Publisher implementation class
+ * 
+ * @ojb.class
+ * @version $Id$
+ */
+public class PublisherImpl extends BasicObject implements Publisher
+{
+    /**
+     * @ojb.field
+     */
+    private String name;
+    
+    /**
+     * @ojb.collection element-class-ref="org.apache.ojb.sample.Author"
+     * foreignkey="fkPublisher"
+     * auto-retrieve="true"
+     * auto-update="create" 
+     * auto-delete="none" 
+     * proxy="true"
+     */
+    private List authors;
+
+    public PublisherImpl()
+    {
+    }
+
+    public PublisherImpl(String name)
+    {
+        this.name = name;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public List getAuthors()
+    {
+        return authors;
+    }
+
+    public void setAuthors(List authors)
+    {
+        this.authors = authors;
+    }
+
+    public void addAuthor(Author author)
+    {
+        if (authors == null)
+        {
+            authors = new ArrayList();
+        }
+        if (!authors.contains(author))
+        {
+            authors.add(author);
+            author.setPublisher(this);
+        }
+    }
+
+
+    public boolean removeAuthor(Author author)
+    {
+        boolean result = false;
+        if (authors != null) result = authors.remove(author);
+        if(result)
+        {
+            author.setPublisher(null);
+        }
+        return result;
+    }
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Review.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Review.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Review.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/Review.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,147 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+
+/**
+ * The Review class
+ * 
+ * @ojb.class
+ * @ojb.field name="fkAuthor" jdbc-type="INTEGER"
+ * @version $Id$
+ */
+public class Review extends BasicObject
+{
+    /**
+     * @ojb.field
+     */
+    private Integer vote;
+    /**
+     * @ojb.field
+     */
+    private String summary;
+    // This field is used by a 1:1 and target of an 1:n reference in class 
Medium
+    // so it's not recommended to use an "anonymous field". But we can declare 
it as 
+    // private field without getter/setter with a specific PersistentField 
implementation
+    // class called 'direct' (the OJB shortcut name)
+    /**
+     * @ojb.field field-class="direct"
+     */
+    private Integer fkMedium;
+    
+    /**
+     * @ojb.reference foreignkey="fkAuthor" auto-retrieve="true"
+     *                auto-update="create" auto-delete="none" proxy="true"
+     */
+    private Author author;
+    /**
+     * @ojb.reference foreignkey="fkMedium" auto-retrieve="true"
+     *                auto-update="create" auto-delete="none" proxy="true"
+     */
+    private Medium medium;
+
+    public Review()
+    {
+    }
+
+    public Review(String summary, Integer vote, Medium medium)
+    {
+        this.summary = summary;
+        this.vote = vote;
+        setMedium(medium);
+    }
+
+    public Review(String summary, Integer vote)
+    {
+        this.summary = summary;
+        this.vote = vote;
+    }
+
+    public Review(String summary)
+    {
+        this.summary = summary;
+    }
+
+    public Integer getVote()
+    {
+        return vote;
+    }
+
+    public void setVote(Integer vote)
+    {
+        this.vote = vote;
+    }
+
+    public Integer getFkMedium()
+    {
+        return fkMedium;
+    }
+
+    public String getSummary()
+    {
+        return summary;
+    }
+
+    public void setSummary(String summary)
+    {
+        this.summary = summary;
+    }
+
+    public Author getAuthor()
+    {
+        return author;
+    }
+
+    public void setAuthor(Author author)
+    {
+        this.author = author;
+    }
+
+    public Medium getMedium()
+    {
+        return medium;
+    }
+
+    public void setMedium(Medium medium)
+    {
+        if(this.medium != medium)
+        {
+            Medium old = this.medium;
+            this.medium = medium;
+            if(medium != null)
+            {
+                medium.addReview(this);
+            }
+            if(old != null)
+            {
+                old.removeReview(this);
+            }
+        }
+    }
+
+    public String toString()
+    {
+        return ToStringBuilder.reflectionToString(this,
+                ToStringStyle.MULTI_LINE_STYLE, false);
+    }
+}

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/SampleTest.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/SampleTest.java?rev=593197&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/SampleTest.java
 (added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/sample/java/org/apache/ojb/sample/SampleTest.java
 Thu Nov  8 07:29:20 2007
@@ -0,0 +1,99 @@
+package org.apache.ojb.sample;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.lang.Object;
+import java.util.Date;
+
+import junit.framework.TestCase;
+import org.apache.ojb.broker.PersistenceBroker;
+import org.apache.ojb.broker.PersistenceBrokerFactory;
+import org.apache.ojb.broker.platforms.Platform;
+
+/**
+ * This class
+ *
+ * @version $Id$
+ */
+public class SampleTest extends TestCase
+{
+    public PersistenceBroker broker;
+    byte[] cover = new byte[]{10,11,12,13,14,15,16,17,18,19,20};
+
+    public void test_A()
+    {
+        String name = ojbTestMethodIdentifier();
+
+        ProductGroup pg = new ProductGroup(name);
+        Book book = new Book(name, new Date(), cover);
+        CD cd = new CD(name, new Date(), cover);
+        DVD dvd = new DVD(name, new Date(), cover);
+        pg.addMedium(book);
+        pg.addMedium(cd);
+        pg.addMedium(dvd);
+        Review review_book_1 = new Review(name, new Integer(5), book);
+        Review review_book_2 = new Review(name, new Integer(6), book);
+        Review review_book_3 = new Review(name, new Integer(6), book);
+        Review review_dvd_1 = new Review(name, new Integer(6), dvd);
+
+    }
+
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        assertNotNull(broker = 
PersistenceBrokerFactory.defaultPersistenceBroker());
+        // enable batch mode for all used PB instances
+        broker.serviceConnectionManager().setBatchMode(true);
+    }
+
+    public void tearDown() throws Exception
+    {
+        if(broker != null)
+        {
+            try
+            {
+                if(broker.isInTransaction()) broker.abortTransaction();
+                broker.close();
+            }
+            catch(Exception ignore)
+            {
+            }
+        }
+        super.tearDown();
+    }
+
+    /**
+     * Returns a string based identifier for the current test compounded by
+     * test method name and current system time:
+     * <br/>
+     * _testMethodName_123349886_
+     *
+     * @return A string based test method identifier.
+     */
+    String ojbTestMethodIdentifier()
+    {
+        return "_" + getName() + "_" + System.currentTimeMillis() + "_";
+    }
+
+    public static void main(String[] args)
+    {
+        junit.textui.TestRunner.main(new String[]{SampleTest.class.getName()});
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to