001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2002-2006, GeoTools Project Managment Committee (PMC)
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation;
009: * version 2.1 of the License.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: */
016: package org.geotools.data;
017:
018: import java.io.IOException;
019:
020: /**
021: * This class describes a featureID based locking service.
022: *
023: * <p>
024: * AbstractFeatureLocking, and others, may use this API to request locks on the
025: * basis of FeatureID.
026: * </p>
027: *
028: * <p>
029: * This class is also used as a public api to manage locks.
030: * </p>
031: *
032: * @author Jody Garnett, Refractions Research
033: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/api/src/main/java/org/geotools/data/LockingManager.java $
034: */
035: public interface LockingManager {
036: /**
037: * Check if any locks exist held by the authorization <code>lockID</code>.
038: *
039: * <p>
040: * (remember that the lock may have expired)
041: * </p>
042: *
043: * @param authID Authorization for lock
044: *
045: * @return <code>true</code> if lock was found
046: */
047: boolean exists(String authID);
048:
049: /**
050: * Release locks held by the authorization <code>lockID</code>.
051: *
052: * <p>
053: * (remember that the lock may have expired)
054: * </p>
055: *
056: * @param authID Authorization for lock
057: * @param transaction Transaction with authorization for lockID
058: *
059: * @return <code>true</code> if lock was found and released
060: *
061: * @throws IOException DOCUMENT ME!
062: */
063: boolean release(String authID, Transaction transaction)
064: throws IOException;
065:
066: /**
067: * Refresh locks held by the authorization <code>lockID</code>.
068: *
069: * <p>
070: * All features locked with the provied <code>lockID</code> will be locked
071: * for additional time (the origional duration requested).
072: * </p>
073: *
074: * <p>
075: * (remember that the lock may have expired)
076: * </p>
077: *
078: * @param authID Authorization for lock
079: * @param transaction Transaction with authorization for lockID
080: *
081: * @return <code>true</code> if lock was found and refreshed
082: *
083: * @throws IOException DOCUMENT ME!
084: */
085: boolean refresh(String authID, Transaction transaction)
086: throws IOException;
087:
088: /**
089: * FeatureID based unlocking.
090: *
091: * @param typeName
092: * @param authID
093: * @param transaction
094: * @param featureLock
095: *
096: * @throws IOException DOCUMENT ME!
097: */
098: void unLockFeatureID(String typeName, String authID,
099: Transaction transaction, FeatureLock featureLock)
100: throws IOException;
101:
102: /**
103: * FeatureID based locking.
104: *
105: * @param typeName
106: * @param authID
107: * @param transaction
108: * @param featureLock
109: *
110: * @throws IOException DOCUMENT ME!
111: */
112: void lockFeatureID(String typeName, String authID,
113: Transaction transaction, FeatureLock featureLock)
114: throws IOException;
115: }
|