001: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
002:
003: This file is part of the db4o open source object database.
004:
005: db4o is free software; you can redistribute it and/or modify it under
006: the terms of version 2 of the GNU General Public License as published
007: by the Free Software Foundation and as clarified by db4objects' GPL
008: interpretation policy, available at
009: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
010: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
011: Suite 350, San Mateo, CA 94403, USA.
012:
013: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
014: WARRANTY; without even the implied warranty of MERCHANTABILITY or
015: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
016: for more details.
017:
018: You should have received a copy of the GNU General Public License along
019: with this program; if not, write to the Free Software Foundation, Inc.,
020: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
021: package com.db4o.ext;
022:
023: import com.db4o.*;
024:
025: /**
026: * callback methods.
027: * <br><br>
028: * This interface only serves as a list of all available callback methods.
029: * Every method is called individually, independantly of implementing this interface.<br><br>
030: * <b>Using callbacks</b><br>
031: * Simply implement one or more of the listed methods in your application classes to
032: * do tasks before activation, deactivation, delete, new or update, to cancel the
033: * action about to be performed and to respond to the performed task.
034: * <br><br>Callback methods are typically used for:
035: * <br>- cascaded delete
036: * <br>- cascaded update
037: * <br>- cascaded activation
038: * <br>- restoring transient members on instantiation
039: * <br><br>Callback methods follow regular calling conventions. Methods in superclasses
040: * need to be called explicitely.
041: * <br><br>All method calls are implemented to occur only once, upon one event.
042: */
043: public interface ObjectCallbacks {
044:
045: /**
046: * called before an Object is activated.
047: * @param container the <code>ObjectContainer</code> the object is stored in.
048: * @return false to prevent activation.
049: */
050: public boolean objectCanActivate(ObjectContainer container);
051:
052: /**
053: * called before an Object is deactivated.
054: * @param container the <code>ObjectContainer</code> the object is stored in.
055: * @return false to prevent deactivation.
056: */
057: public boolean objectCanDeactivate(ObjectContainer container);
058:
059: /**
060: * called before an Object is deleted.
061: * <br><br>In a client/server setup this callback method will be executed on
062: * the server.
063: * @param container the <code>ObjectContainer</code> the object is stored in.
064: * @return false to prevent the object from being deleted.
065: */
066: public boolean objectCanDelete(ObjectContainer container);
067:
068: /**
069: * called before an Object is stored the first time.
070: * @param container the <code>ObjectContainer</code> is about to be stored to.
071: * @return false to prevent the object from being stored.
072: */
073: public boolean objectCanNew(ObjectContainer container);
074:
075: /**
076: * called before a persisted Object is updated.
077: * @param container the <code>ObjectContainer</code> the object is stored in.
078: * @return false to prevent the object from being updated.
079: */
080: public boolean objectCanUpdate(ObjectContainer container);
081:
082: /**
083: * called upon activation of an object.
084: * @param container the <code>ObjectContainer</code> the object is stored in.
085: */
086: public void objectOnActivate(ObjectContainer container);
087:
088: /**
089: * called upon deactivation of an object.
090: * @param container the <code>ObjectContainer</code> the object is stored in.
091: */
092: public void objectOnDeactivate(ObjectContainer container);
093:
094: /**
095: * called after an object was deleted.
096: * <br><br>In a client/server setup this callback method will be executed on
097: * the server.
098: * @param container the <code>ObjectContainer</code> the object was stored in.
099: */
100: public void objectOnDelete(ObjectContainer container);
101:
102: /**
103: * called after a new object was stored.
104: * @param container the <code>ObjectContainer</code> the object is stored to.
105: */
106: public void objectOnNew(ObjectContainer container);
107:
108: /**
109: * called after an object was updated.
110: * @param container the <code>ObjectContainer</code> the object is stored in.
111: */
112: public void objectOnUpdate(ObjectContainer container);
113: }
|