001: /*
002: * The contents of this file are subject to the
003: * Mozilla Public License Version 1.1 (the "License");
004: * you may not use this file except in compliance with the License.
005: * You may obtain a copy of the License at http://www.mozilla.org/MPL/
006: *
007: * Software distributed under the License is distributed on an "AS IS"
008: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
009: * See the License for the specific language governing rights and
010: * limitations under the License.
011: *
012: * The Initial Developer of the Original Code is Simulacra Media Ltd.
013: * Portions created by Simulacra Media Ltd are Copyright (C) Simulacra Media Ltd, 2004.
014: *
015: * All Rights Reserved.
016: *
017: * Contributor(s):
018: */
019: package org.openharmonise.rm.dsi;
020:
021: import java.util.*;
022:
023: import org.openharmonise.commons.dsi.*;
024: import org.openharmonise.commons.dsi.dml.*;
025:
026: /**
027: * An object whose data is taken from and saved to a relational database.
028: * The <code>DataStoreInterface</code> interface provides methods for
029: * accessing the information required for accessing the data directly
030: * from the database.
031: *
032: *
033: * @author Michael Bell
034: * @version $Revision: 1.1 $
035: *
036: */
037: public interface DataStoreObject {
038:
039: /**
040: * Returns the <code>ColumnRef</code> associated to the specified column
041: * name or XML node or attribute name.
042: *
043: * @param sColumn the column, XML node, or attribute name to
044: * return a column reference for
045: * @param bIsHist the historical flag, <code>true</code> if
046: * the column is in the historical database table, otherwise <code>false</code>
047: * @return ColumnRef The created ColumnRef
048: * @throws DataStoreException if any errors occur
049: */
050: public ColumnRef getInstanceColumnRef(String sColumn,
051: boolean bIsHist) throws DataStoreException;
052:
053: /**
054: * Returns a <code>JoinConditions</code> which represents the join conditions
055: * between this object and the object attribute represented by the given
056: * <code>String</code>.
057: *
058: * @param sObjectTag <code>true</code> if the returned join condition is
059: * an outer join, otherwise <code>false</code>
060: * @return a <code>JoinConditions</code> which represents the join conditions
061: * between this object and the object attribute represented by the given
062: * <code>String</code>
063: * @throws DataStoreException if any errors occur
064: */
065: public JoinConditions getInstanceJoinConditions(String sObjectTag,
066: boolean bIsOuter) throws DataStoreException;
067:
068: /**
069: * Returns a <code>List</code> of <code>DataStoreObject</code> objects
070: * which have been populated from the given <code>CachedResultSet</code>.
071: *
072: * @param resultSet the result set containing data to populate objects with
073: * @param select the select statement which produced the result set
074: * @return a <code>List</code> of <code>DataStoreObject</code> objects
075: * which have been populated from the given <code>CachedResultSet</code>
076: */
077: public List processResultSet(CachedResultSet resultSet,
078: SelectStatement select);
079:
080: /**
081: * Returns a <code>List</code> of <code>DataStoreObject</code> objects
082: * which have been populated from the given <code>CachedResultSet</code>
083: * and has the specified maximum size.
084: *
085: * @param resultSet the result set containing data to populate objects with
086: * @param select the select statement which produced the result set
087: * @param limit the maximum limit of objects to return in the list
088: * @return a <code>List</code> of <code>DataStoreObject</code> objects
089: * which have been populated from the given <code>CachedResultSet</code>
090: */
091: public List processResultSet(CachedResultSet resultSet,
092: SelectStatement select, int limit);
093:
094: /**
095: * Return the database table name associated with this class
096: */
097: public String getDBTableName();
098:
099: /**
100: * Returns the identifier associated with this object in the DB
101: */
102: public int getId();
103:
104: }
|