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: DiscGeneratorImpl.java,v 1.1 2006-09-11 12:31:47 sinisa Exp $
022: */
023:
024: package discRack.business.disc;
025:
026: import discRack.data.disc.*;
027: import discRack.spec.*;
028: import discRack.business.DiscRackBusinessException;
029: import discRack.data.person.PersonDO;
030:
031: import com.lutris.dods.builder.generator.query.*;
032: import com.lutris.appserver.server.sql.ObjectId;
033: import org.enhydra.dods.exceptions.AssertionDataObjectException;
034:
035: /**
036: * Used to find the instances of disc.
037: */
038: public class DiscGeneratorImpl implements DiscGenerator {
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 Disc[] findDiscsForPerson(Person owner)
053: throws DiscRackBusinessException {
054: DiscImpl[] 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 DiscImpl[DOarray.length];
065: for (int i = 0; i < DOarray.length; i++)
066: theDiscArray[i] = new DiscImpl(DOarray[i]);
067: } catch (Exception ex) {
068: throw new DiscRackBusinessException(
069: "Exception in findDiscsForPerson()", ex);
070: }
071:
072: return theDiscArray;
073: }
074:
075: /**
076: * The findDiscByID method performs a database query to
077: * return a <CODE>Disc</CODE> object
078: * representing the row in the <CODE>disc</CODE> table
079: * that matches the object id.
080: *
081: * @param id , the object id of the disc table.
082: * @return
083: * the disc. null if there isn't a person associated
084: * the id
085: * @exception DiscRackBusinessException
086: * if there is a problem retrieving person information.
087: */
088: public Disc findDiscByID(String id)
089: throws DiscRackBusinessException {
090: DiscImpl theDisc = null;
091:
092: try {
093: DiscQuery query = new DiscQuery();
094: //set query
095: query.setQueryOId(new ObjectId(id));
096: // Throw an exception if more than one user by this name is found
097: query.requireUniqueInstance();
098: DiscDO theDiscDO = query.getNextDO();
099: theDisc = new DiscImpl(theDiscDO);
100: return theDisc;
101: } catch (Exception ex) {
102: throw new DiscRackBusinessException(
103: "Exception in findDiscsByID()", ex);
104: }
105: }
106:
107: }
|