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.6 2005-08-30 08:12:18 draganr Exp $
022: */
023:
024: package discRack.business.disc;
025:
026: import discRack.business.DiscRackBusinessException;
027: import discRack.data.disc.*;
028: import com.lutris.dods.builder.generator.query.*;
029: import discRack.business.person.*;
030: import discRack.data.person.PersonDO;
031: import com.lutris.appserver.server.sql.ObjectId;
032:
033: import java.util.*;
034:
035: /**
036: * Used to find the instances of disc.
037: */
038: public class DiscFactory {
039:
040: /**
041: * The findDiscsForPerson method performs a database query to
042: * return an array of <CODE>Disc</CODE> objects
043: * representing all the rows in the <CODE>disc</CODE> table
044: * that have and owner matching <CODE>Person owner</CODE>.
045: *
046: * @param owner. The owner of the discs
047: * @return
048: * array of discs.
049: * @exception DiscRackBusinessException
050: * If there is a problem retrieving disc information.
051: */
052: public static Disc[] findDiscsForPerson(Person owner)
053: throws DiscRackBusinessException {
054: Disc[] theDiscArray = null;
055:
056: try {
057: DiscQuery query = new DiscQuery();
058: //set query
059: query.setQueryOwner(PersonDO.createExisting(owner
060: .getHandle()));
061: // Order discs alphabetically by artist
062: query.addOrderByArtist();
063: DiscDO[] DOarray = query.getDOArray();
064: theDiscArray = new Disc[DOarray.length];
065: for (int i = 0; i < DOarray.length; i++)
066: theDiscArray[i] = new Disc(DOarray[i]);
067: } catch (Exception ex) {
068: throw new DiscRackBusinessException(
069: "Exception in findDiscsForPerson()", ex);
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: }
|