01: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
02:
03: This file is part of the db4o open source object database.
04:
05: db4o is free software; you can redistribute it and/or modify it under
06: the terms of version 2 of the GNU General Public License as published
07: by the Free Software Foundation and as clarified by db4objects' GPL
08: interpretation policy, available at
09: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11: Suite 350, San Mateo, CA 94403, USA.
12:
13: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14: WARRANTY; without even the implied warranty of MERCHANTABILITY or
15: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16: for more details.
17:
18: You should have received a copy of the GNU General Public License along
19: with this program; if not, write to the Free Software Foundation, Inc.,
20: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
21: package com.db4o.replication;
22:
23: import com.db4o.*;
24: import com.db4o.query.*;
25:
26: /**
27: * @deprecated
28: * db4o replication interface.
29: *
30: * @see com.db4o.ext.ExtObjectContainer#replicationBegin(ObjectContainer, ReplicationConflictHandler)
31: */
32: public interface ReplicationProcess {
33:
34: /**
35: * checks if an object has been modified in both ObjectContainers involved
36: * in the replication process since the last time the two ObjectContainers
37: * were replicated.
38: * @param obj - the object to check for a conflict.
39: */
40: public void checkConflict(Object obj);
41:
42: /**
43: * commits the replication task to both involved ObjectContainers.
44: * <br><br>Call this method after replication is completed to
45: * write all changes back to the database files. This method
46: * synchronizes both ObjectContainers by setting the transaction
47: * serial number {@link com.db4o.ext.ExtObjectContainer#version()} on both
48: * ObjectContainers to be equal
49: * to the higher version number among the two. A record with
50: * information about this replication task, including the
51: * synchronized version number is stored to both ObjectContainers
52: * to allow future incremental replication.
53: */
54: public void commit();
55:
56: /**
57: * returns the "peerA" ObjectContainer involved in this ReplicationProcess.
58: */
59: public ObjectContainer peerA();
60:
61: /**
62: * returns the "peerB" ObjectContainer involved in this ReplicationProcess.
63: */
64: public ObjectContainer peerB();
65:
66: /**
67: * replicates an object.
68: * <br><br>By default the version number of the object is checked in
69: * both ObjectContainers involved in the replication process. If the
70: * version number has not changed since the last time the two
71: * ObjectContainers were replicated
72: * @param obj
73: */
74: public void replicate(Object obj);
75:
76: /**
77: * ends a replication task without committing any changes.
78: */
79: public void rollback();
80:
81: /**
82: * modifies the replication policy, what to do on a call to {@link #replicate(Object)}.
83: * <br><br>If no direction is set, the replication process will be bidirectional by
84: * default.
85: * @param relicateFrom the ObjectContainer to replicate from
86: * @param replicateTo the ObjectContainer to replicate to
87: */
88: public void setDirection(ObjectContainer relicateFrom,
89: ObjectContainer replicateTo);
90:
91: /**
92: * adds a constraint to the passed Query to query only for objects that
93: * were modified since the last replication process between the two
94: * ObjectContainers involved in this replication process.
95: * @param query the Query to be constrained
96: */
97: public void whereModified(Query query);
98:
99: }
|