/* This file is part of the db4o object database http://www.db4o.com Copyright (C) 2004 - 2011 Versant Corporation http://www.versant.com db4o is free software; you can redistribute it and/or modify it under the terms of version 3 of the GNU General Public License as published by the Free Software Foundation. db4o 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. */ package com.db4o.events; /** * Provides the interface to register event handlers for * {@link com.db4o.ObjectContainer} events.<br> * EventRegistry methods represent events available. * An EventRegistry instance can be obtained from the {@link EventRegistryFactory}.{@link EventRegistryFactory#forObjectContainer(com.db4o.ObjectContainer) forObjectContainer}. * A new callback can be registered for an event with the following code: * <code>EventRegistry registry = EventRegistryFactory.forObjectContainer(container);<br/> * registry.created().addListener(new EventListener4(){...});</code> * @see EventRegistryFactory * @see EventListener4 */ public interface EventRegistry { /** * This event is fired upon a query start and can be used to gather * query statistics. * The query object is available from {@link QueryEventArgs} * event parameter.<br> * @sharpen.event com.db4o.events.QueryEventArgs * @return event * @see QueryEventArgs */ public Event4<QueryEventArgs> queryStarted(); /** * This event is fired upon a query end and can be used to gather * query statistics. * The query object is available from {@link QueryEventArgs} * event parameter.<br> * @sharpen.event com.db4o.events.QueryEventArgs * @return event * @see QueryEventArgs */ public Event4<QueryEventArgs> queryFinished(); /** * This event is fired before an object is saved for the first time. * The object can be obtained from {@link CancellableObjectEventArgs} * event parameter. The action can be cancelled using * {@link CancellableObjectEventArgs#cancel()} * @sharpen.event com.db4o.events.CancellableObjectEventArgs * @return event * @see CancellableObjectEventArgs * @see com.db4o.ObjectContainer#store(Object) */ public Event4<CancellableObjectEventArgs> creating(); /** * This event is fired before an object is activated. * The object can be obtained from {@link CancellableObjectEventArgs} * event parameter. The action can be cancelled using * {@link CancellableObjectEventArgs#cancel()} * @sharpen.event com.db4o.events.CancellableObjectEventArgs * @return event * @see CancellableObjectEventArgs * @see com.db4o.ObjectContainer#activate(Object, int) */ public Event4<CancellableObjectEventArgs> activating(); /** * This event is fired before an object is updated. * The object can be obtained from {@link CancellableObjectEventArgs} * event parameter. The action can be cancelled using * {@link CancellableObjectEventArgs#cancel()} * * @sharpen.event com.db4o.events.CancellableObjectEventArgs * @return event * @see CancellableObjectEventArgs * @see com.db4o.ObjectContainer#store(Object) */ public Event4<CancellableObjectEventArgs> updating(); /** * This event is fired before an object is deleted. * The object can be obtained from {@link CancellableObjectEventArgs} * event parameter. The action can be cancelled using * {@link CancellableObjectEventArgs#cancel()}<br><br> * Note, that this event is not available in networked client/server * mode and will throw an exception when attached to a client ObjectContainer. * * @sharpen.event com.db4o.events.CancellableObjectEventArgs * @return event * @see CancellableObjectEventArgs * @see com.db4o.ObjectContainer#delete(Object) */ public Event4<CancellableObjectEventArgs> deleting(); /** * This event is fired before an object is deactivated. * The object can be obtained from {@link CancellableObjectEventArgs} * event parameter. The action can be cancelled using * {@link CancellableObjectEventArgs#cancel()} * * @sharpen.event com.db4o.events.CancellableObjectEventArgs * @return event * @see CancellableObjectEventArgs * @see com.db4o.ObjectContainer#deactivate(Object, int) */ public Event4 deactivating(); /** * This event is fired after an object is activated. * The object can be obtained from the {@link ObjectInfoEventArgs} * event parameter. <br><br> * The event can be used to trigger some post-activation * functionality. * * @sharpen.event com.db4o.events.ObjectInfoEventArgs * @return event * @see ObjectInfoEventArgs * @see com.db4o.ObjectContainer#activate(Object, int) */ public Event4<ObjectInfoEventArgs> activated(); /** * This event is fired after an object is created (saved for the first time). * The object can be obtained from the {@link ObjectInfoEventArgs} * event parameter.<br><br> * The event can be used to trigger some post-creation * functionality. * * @sharpen.event com.db4o.events.ObjectInfoEventArgs * @return event * @see ObjectEventArgs * @see com.db4o.ObjectContainer#store(Object) */ public Event4<ObjectInfoEventArgs> created(); /** * This event is fired after an object is updated. * The object can be obtained from the {@link ObjectInfoEventArgs} * event parameter.<br><br> * The event can be used to trigger some post-update * functionality. * * @sharpen.event com.db4o.events.ObjectInfoEventArgs * @return event * @see ObjectInfoEventArgs * @see com.db4o.ObjectContainer#store(Object) */ public Event4<ObjectInfoEventArgs> updated(); /** * This event is fired after an object is deleted. * The object can be obtained from the {@link ObjectInfoEventArgs} * event parameter.<br><br> * The event can be used to trigger some post-deletion * functionality.<br><br> * Note, that this event is not available in networked client/server * mode and will throw an exception when attached to a client ObjectContainer. * * @sharpen.event com.db4o.events.ObjectInfoEventArgs * @return event * @see ObjectEventArgs * @see com.db4o.ObjectContainer#delete(Object) */ public Event4<ObjectInfoEventArgs> deleted(); /** * This event is fired after an object is deactivated. * The object can be obtained from the {@link ObjectInfoEventArgs} * event parameter.<br><br> * The event can be used to trigger some post-deactivation * functionality. * * @sharpen.event com.db4o.events.ObjectInfoEventArgs * @return event * @see ObjectEventArgs * @see com.db4o.ObjectContainer#delete(Object) */ public Event4<ObjectInfoEventArgs> deactivated(); /** * This event is fired just before a transaction is committed. * The transaction and a list of the modified objects can * be obtained from the {@link CommitEventArgs} * event parameter.<br><br> * Committing event gives a user a chance to interrupt the commit * and rollback the transaction. * * @sharpen.event com.db4o.events.CommitEventArgs * @return event * @see CommitEventArgs * @see com.db4o.ObjectContainer#commit() */ public Event4<CommitEventArgs> committing(); /** * This event is fired after a transaction has been committed. * The transaction and a list of the modified objects can * be obtained from the {@link CommitEventArgs} * event parameter.<br><br> * The event can be used to trigger some post-commit functionality. * * @sharpen.event com.db4o.events.CommitEventArgs * @return event * @see CommitEventArgs * @see com.db4o.ObjectContainer#commit() */ public Event4<CommitEventArgs> committed(); /** * This event is fired when a persistent object is instantiated. * The object can be obtained from the {@link ObjectInfoEventArgs} * event parameter. * * @sharpen.event com.db4o.events.ObjectInfoEventArgs * @return event * @see ObjectInfoEventArgs */ public Event4<ObjectInfoEventArgs> instantiated(); /** * This event is fired when a new class is registered with metadata. * The class information can be obtained from {@link ClassEventArgs} * event parameter. * * @sharpen.event com.db4o.events.ClassEventArgs * @return event * @see ClassEventArgs */ public Event4<ClassEventArgs> classRegistered(); /** * This event is fired when the {@link com.db4o.ObjectContainer#close} is * called. * * @sharpen.event com.db4o.events.ObjectContainerEventArgs * @return event */ public Event4<ObjectContainerEventArgs> closing(); /** * This event is fired when the {@link com.db4o.ObjectContainer} has * finished its startup procedure. * * @sharpen.event com.db4o.events.ObjectContainerEventArgs * @return event */ public Event4<ObjectContainerEventArgs> opened(); }