001: /*
002: * Enhydra Java Application Server Project
003: *
004: * The contents of this file are subject to the Enhydra Public License
005: * Version 1.1 (the "License"); you may not use this file except in
006: * compliance with the License. You may obtain a copy of the License on
007: * the Enhydra web site ( http://www.enhydra.org/ ).
008: *
009: * Software distributed under the License is distributed on an "AS IS"
010: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
011: * the License for the specific terms governing rights and limitations
012: * under the License.
013: *
014: * The Initial Developer of the Enhydra Application Server is Lutris
015: * Technologies, Inc. The Enhydra Application Server and portions created
016: * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
017: * All Rights Reserved.
018: *
019: * Contributor(s):
020: *
021: * $Id: DiscFactory.java,v 1.1 2006/02/23 08:47:29 slobodan Exp $
022: */
023:
024: package jtaDiscRack.business.disc;
025:
026: import jtaDiscRack.business.JtaDiscRackBusinessException;
027: import jtaDiscRack.business.StaticXaTransactionSupport;
028: import jtaDiscRack.data.disc.*;
029: import jtaDiscRack.business.person.*;
030: import jtaDiscRack.data.person.PersonDO;
031: import com.lutris.appserver.server.sql.ObjectId;
032:
033: /**
034: * Used to find the instances of disc.
035: */
036: public class DiscFactory extends StaticXaTransactionSupport {
037:
038: /**
039: * The findDiscsForPerson method performs a database query to return an
040: * array of <CODE>Disc</CODE> objects representing all the rows in the
041: * <CODE>disc</CODE> table that have and owner matching <CODE>Person
042: * owner</CODE>.
043: *
044: * @param owner.
045: * The owner of the discs
046: * @return array of discs.
047: * @exception DiscRackBusinessException
048: * If there is a problem retrieving disc information.
049: */
050: public static Disc[] findDiscsForPerson(Person owner)
051: throws JtaDiscRackBusinessException {
052: Disc[] theDiscArray = null;
053:
054: initTransaction();
055:
056: boolean doCommit = true;
057:
058: try {
059: DiscQuery query = new DiscQuery();
060: // set query
061: query.setQueryOwner(PersonDO.createExisting(owner
062: .getHandle()));
063: // Order discs alphabetically by artist
064: query.addOrderByArtist();
065: DiscDO[] DOarray = query.getDOArray();
066: theDiscArray = new Disc[DOarray.length];
067: for (int i = 0; i < DOarray.length; i++)
068: theDiscArray[i] = new Disc(DOarray[i]);
069: } catch (Exception ex) {
070: doCommit = false;
071: throw new JtaDiscRackBusinessException(
072: "Exception in findDiscsForPerson()", ex);
073: } finally {
074: if (doCommit) {
075: commitTransaction();
076: } else {
077: rollbackTransaction();
078: }
079: }
080: return theDiscArray;
081: }
082:
083: /**
084: * The findDiscByID method performs a database query to return a <CODE>Disc</CODE>
085: * object representing the row in the <CODE>disc</CODE> table that matches
086: * the object id.
087: *
088: * @param id,
089: * the object id of the disc table.
090: * @return the disc. null if there isn't a person associated the id
091: * @exception DiscRackBusinessException
092: * if there is a problem retrieving person information.
093: */
094: public static Disc findDiscByID(String id)
095: throws JtaDiscRackBusinessException {
096: Disc theDisc = null;
097:
098: initTransaction();
099:
100: boolean doCommit = true;
101:
102: try {
103: DiscQuery query = new DiscQuery();
104: // set query
105: query.setQueryOId(new ObjectId(id));
106: // Throw an exception if more than one user by this name is found
107: query.requireUniqueInstance();
108: DiscDO theDiscDO = query.getNextDO();
109: theDisc = new Disc(theDiscDO);
110: return theDisc;
111: } catch (Exception ex) {
112: doCommit = false;
113: throw new JtaDiscRackBusinessException(
114: "Exception in findDiscByID()", ex);
115: } finally {
116: if (doCommit) {
117: commitTransaction();
118: } else {
119: rollbackTransaction();
120: }
121: }
122: }
123: }
|