/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2001 Michael Powers This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see http://www.gnu.org */ package net.wotonomy.control; import java.util.List; import java.util.Map; // swing dependency for undo manager //import javax.swing.undo.UndoManager; /** * EditingContext provides transactional support for fetching, editing, and * committing changes made on a collection of objects to a parent object store. * This subclasses EOEditingContext to provide java-friendly conveniences. * * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 894 $ */ public class EditingContext extends EOEditingContext { /** * Default constructor creates a new editing context that uses the default * object store. If the default object store has not been set, an exception is * thrown. */ public EditingContext() { this(defaultParentObjectStore()); } /** * Creates a new editing context that uses the specified object store as its * parent object store. */ public EditingContext(EOObjectStore anObjectStore) { super(anObjectStore); } /** * Returns a List of objects associated with the object with the specified id * for the specified property relationship, or may return a placeholder array * that will defer the fetch until needed (aka an array fault). All objects must * be registered in the specified editing context. This implementation calls to * its parent object store's implementation if the requested source object is * not registered in this editing context. The specified relationship key must * produce a result of type Collection for the source object or an exception is * thrown. */ public List getArrayFaultWithSourceGlobalID(EOGlobalID aGlobalID, String aRelationshipKey, EOEditingContext aContext) { return arrayFaultWithSourceGlobalID(aGlobalID, aRelationshipKey, aContext); } /** * Returns a snapshot of the specified object as it existed when it was last * read or committed to the parent object store. */ public Map getCommittedSnapshotForObject(Object anObject) { return committedSnapshotForObject(anObject); } /** * Returns a snapshot of the specified object as it existed before the edits * triggered by the current event loop were processed. */ public Map getCurrentEventSnapshotForObject(Object anObject) { return currentEventSnapshotForObject(anObject); } /** * Returns the delegate for this editing context, or null if no delegate has * been set. */ public Object getDelegate() { return delegate(); } /** * Returns a List of all objects marked as deleted in this editing context. */ public List getDeletedObjects() { return deletedObjects(); } /** * Returns a List of registered editors of this editing context. */ public List getEditors() { return editors(); } /** * Returns the object for the specified id. If the object's data has not been * fetched, it will be fetched when needed. */ public Object getFaultForGlobalID(EOGlobalID aGlobalID) { return faultForGlobalID(aGlobalID, this); } /** * Returns a fault representing an object of the specified entity type with * values from the specified dictionary. */ public Object getFaultForRawRow(Map aDictionary, String anEntityName) { return faultForRawRow(aDictionary, anEntityName); } /** * Returns the fetch timestamp for this editing context. */ public double getFetchTimestamp() { return fetchTimestamp(); } /** * Returns the id for the specified object, or null if the object is not * registered in this context. */ public EOGlobalID getGlobalIDForObject(Object anObject) { return globalIDForObject(anObject); } /** * Returns a List of the objects that have been inserted into this editing * context. */ public List getInsertedObjects() { return insertedObjects(); } /** * Returns the message handler for this editing context, or null if no message * handler has been set. */ public Object getMessageHandler() { return messageHandler(); } /** * Returns the object registered in this editing context for the specified id, * or null if that id is not registered. */ public Object getObjectForGlobalID(EOGlobalID aGlobalID) { return objectForGlobalID(aGlobalID); } /** * Returns a List of objects the meet the criteria of the supplied * specification. */ public List getObjectsWithFetchSpecification(EOFetchSpecification aFetchSpec) { return objectsWithFetchSpecification(aFetchSpec); } /** * Returns the parent object store for this editing context. The result will not * be null. */ public EOObjectStore getParentObjectStore() { return parentObjectStore(); } /** * Returns a List of all objects registered in this editing context. */ public List geRegisteredObjects() { return registeredObjects(); } /** * Returns the root object store, which is the parent of all parent object * stores of this editing context. */ public EOObjectStore getRootObjectStore() { return rootObjectStore(); } /** * Returns a list of all objects marked as modified, but not inserted or * deleted, in this editing context. */ public List getUpdatedObjects() { return updatedObjects(); } // static methods public static double getDefaultFetchTimestampLag() { return defaultFetchTimestampLag(); } /** * Returns the default parent object store for all object stores created with * the parameterless constructor. */ public static EOObjectStore getDefaultParentObjectStore() { return defaultParentObjectStore(); } } /* * $Log$ Revision 1.2 2006/02/16 16:47:14 cgruber Move some classes in to * "internal" packages and re-work imports, etc. * * Also use UnsupportedOperationExceptions where appropriate, instead of * WotonomyExceptions. * * Revision 1.1 2006/02/16 13:19:57 cgruber Check in all sources in * eclipse-friendly maven-enabled packages. * * Revision 1.2 2003/08/06 23:07:52 chochos general code cleanup (mostly, * removing unused imports) * * Revision 1.1 2002/03/26 21:46:36 mpowers Contributing EditingContext as a * java-friendly convenience. * * */