summaryrefslogtreecommitdiff
path: root/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptorContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptorContext.java')
-rw-r--r--projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptorContext.java118
1 files changed, 118 insertions, 0 deletions
diff --git a/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptorContext.java b/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptorContext.java
new file mode 100644
index 0000000..aff0ddd
--- /dev/null
+++ b/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptorContext.java
@@ -0,0 +1,118 @@
+/*
+ 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.access;
+
+import net.wotonomy.foundation.NSArray;
+import net.wotonomy.foundation.NSMutableArray;
+import net.wotonomy.foundation.NSNotificationCenter;
+
+/**
+*
+* @author ezamudio@nasoft.com
+* @author $Author: cgruber $
+* @version $Revision: 894 $
+*/
+
+public abstract class EOAdaptorContext {
+
+ public static final String AdaptorContextBeginTransactionNotification = "AdaptorContextBeginTransaction";
+ public static final String AdaptorContextCommitTransactionNotification = "AdaptorContextCommitTransaction";
+ public static final String AdaptorContextRollbackTransactionNotification = "AdaptorContextRollbackTransaction";
+
+ protected EOAdaptor _adaptor;
+ protected NSMutableArray _channels = new NSMutableArray();
+ protected boolean _hasOpenTransaction;
+
+ public EOAdaptorContext(EOAdaptor adaptor) {
+ super();
+ _adaptor = adaptor;
+ }
+
+ public EOAdaptor adaptor() {
+ return _adaptor;
+ }
+
+ public abstract void beginTransaction();
+
+ public abstract void commitTransaction();
+
+ public abstract void rollbackTransaction();
+
+ public abstract EOAdaptorChannel createAdaptorChannel();
+
+ public abstract void handleDroppedConnection();
+
+ public NSArray channels() {
+ return new NSArray(_channels);
+ }
+
+ public boolean hasBusyChannels() {
+ for (int i = 0; i < _channels.count(); i++) {
+ EOAdaptorChannel chan = (EOAdaptorChannel)_channels.objectAtIndex(i);
+ if (chan.isFetchInProgress())
+ return true;
+ }
+ return false;
+ }
+
+ public boolean hasOpenChannels() {
+ for (int i = 0; i < _channels.count(); i++) {
+ EOAdaptorChannel chan = (EOAdaptorChannel)_channels.objectAtIndex(i);
+ if (chan.isOpen())
+ return true;
+ }
+ return false;
+ }
+
+ public boolean hasOpenTransaction() {
+ return _hasOpenTransaction;
+ }
+
+ public void transactionDidBegin() {
+ _hasOpenTransaction = true;
+ NSNotificationCenter.defaultCenter().postNotification(
+ AdaptorContextBeginTransactionNotification, this);
+ }
+
+ public void transactionDidCommit() {
+ _hasOpenTransaction = false;
+ NSNotificationCenter.defaultCenter().postNotification(
+ AdaptorContextCommitTransactionNotification, this);
+ }
+
+ public void transactionDidRollback() {
+ _hasOpenTransaction = false;
+ NSNotificationCenter.defaultCenter().postNotification(
+ AdaptorContextRollbackTransactionNotification, this);
+ }
+
+}
+/*
+ * $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.1 2003/08/13 00:37:45 chochos
+ * an almost complete implementation of the abstract adaptor-layer classes
+ *
+ */ \ No newline at end of file