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-09-11 12:30:36 sinisa Exp $
022: */
023:
024: package barracudaDiscRack.business.disc;
025:
026: import barracudaDiscRack.business.DiscRackBusinessException;
027: import barracudaDiscRack.data.disc.*;
028: import barracudaDiscRack.business.person.Person;
029: import com.lutris.dods.builder.generator.query.*;
030: import barracudaDiscRack.business.person.Person;
031: import barracudaDiscRack.data.person.PersonDO;
032: import com.lutris.appserver.server.sql.ObjectId;
033:
034: /**
035: * Used to find the instances of disc.
036: */
037: public class DiscFactory {
038:
039: /**
040: * The findDiscsForPerson method performs a database query to
041: * return an array of <CODE>Disc</CODE> objects
042: * representing all the rows in the <CODE>disc</CODE> table
043: * that have and owner matching <CODE>Person owner</CODE>.
044: *
045: * @param owner. The owner of the discs
046: * @return
047: * array of discs.
048: * @exception DiscRackBusinessException
049: * If there is a problem retrieving disc information.
050: */
051: public static Disc[] findDiscsForPerson(Person owner)
052: throws DiscRackBusinessException {
053: Disc[] theDiscArray = null;
054:
055: try {
056: DiscQuery query = new DiscQuery();
057: //set query
058: query.setQueryOwner(PersonDO.createExisting(owner
059: .getHandle()));
060: // Order discs alphabetically by artist
061: query.addOrderByArtist();
062: DiscDO[] DOarray = query.getDOArray();
063: theDiscArray = new Disc[DOarray.length];
064: for (int i = 0; i < DOarray.length; i++)
065: theDiscArray[i] = new Disc(DOarray[i]);
066: } catch (Exception ex) {
067: throw new DiscRackBusinessException(
068: "Exception in findDiscsForPerson()", ex);
069: }
070:
071: return theDiscArray;
072: }
073:
074: /**
075: * The findDiscByID method performs a database query to
076: * return a <CODE>Disc</CODE> object
077: * representing the row in the <CODE>disc</CODE> table
078: * that matches the object id.
079: *
080: * @param id, the object id of the disc table.
081: * @return
082: * the disc. null if there isn't a person associated
083: * the id
084: * @exception DiscRackBusinessException
085: * if there is a problem retrieving person information.
086: */
087: public static Disc findDiscByID(String id)
088: throws DiscRackBusinessException {
089: Disc theDisc = null;
090:
091: try {
092: DiscQuery query = new DiscQuery();
093: //set query
094: query.setQueryOId(new ObjectId(id));
095: // Throw an exception if more than one user by this name is found
096: query.requireUniqueInstance();
097: DiscDO theDiscDO = query.getNextDO();
098: theDisc = new Disc(theDiscDO);
099: return theDisc;
100: } catch (Exception ex) {
101: throw new DiscRackBusinessException(
102: "Exception in findDiscsForPerson()", ex);
103: }
104: }
105: }
|