001 package org.odmg; 002 003 004 import org.apache.ojb.odmg.oql.EnhancedOQLQuery; 005 006 007 /** 008 * The factory interface for a particular ODMG implementation. 009 * Each ODMG implementation will have a class that implements this interface. 010 * @author David Jordan (as Java Editor of the Object Data Management Group) 011 * @version ODMG 3.0 012 */ 013 014 public interface Implementation 015 { 016 /** 017 * Create a <code>Transaction</code> object and associate it with the current thread. 018 * @return The newly created <code>Transaction</code> instance. 019 * @see org.odmg.Transaction 020 */ 021 public Transaction newTransaction(); 022 023 /** 024 * Get the current <code>Transaction</code> for the thread. 025 * @return The current <code>Transaction</code> object or null if there is none. 026 * @see org.odmg.Transaction 027 */ 028 public Transaction currentTransaction(); 029 030 /** 031 * Create a new <code>Database</code> object. 032 * @return The new <code>Database</code> object. 033 * @see org.odmg.Database 034 */ 035 public Database newDatabase(); 036 037 /** 038 * Create a new <code>OQLQuery</code> object. 039 * @return The new <code>OQLQuery</code> object. 040 * @see org.odmg.OQLQuery 041 */ 042 public EnhancedOQLQuery newOQLQuery(); 043 044 /** 045 * Create a new <code>DList</code> object. 046 * @return The new <code>DList</code> object. 047 * @see org.odmg.DList 048 */ 049 public DList newDList(); 050 051 /** 052 * Create a new <code>DBag</code> object. 053 * @return The new <code>DBag</code> object. 054 * @see org.odmg.DBag 055 */ 056 public DBag newDBag(); 057 058 /** 059 * Create a new <code>DSet</code> object. 060 * @return The new <code>DSet</code> object. 061 * @see org.odmg.DSet 062 */ 063 public DSet newDSet(); 064 065 /** 066 * Create a new <code>DArray</code> object. 067 * @return The new <code>DArray</code> object. 068 * @see org.odmg.DArray 069 */ 070 public DArray newDArray(); 071 072 /** 073 * Create a new <code>DMap</code> object. 074 * @return The new <code>DMap</code> object. 075 * @see org.odmg.DMap 076 */ 077 public DMap newDMap(); 078 079 /** 080 * Get a <code>String</code> representation of the object's identifier. 081 * @param obj The object whose identifier is being accessed. 082 * @return The object's identifier in the form of a String 083 */ 084 public String getObjectId(Object obj); 085 086 /** 087 * Get the <code>Database</code> that contains the object <code>obj</code>. 088 * @param obj The object. 089 * @return The <code>Database</code> that contains the object. 090 */ 091 public Database getDatabase(Object obj); 092 }