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: import java.util.Set;
020:
021: /**
022: * This is used to represent the absense of a Transaction and the use of
023: * AutoCommit.
024: *
025: * <p>
026: * This class serves as the implementation of the constant Transaction.NONE.
027: * It is a NullObject and we feel no need to make this class public.
028: * </p>
029: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/api/src/main/java/org/geotools/data/AutoCommitTransaction.java $
030: */
031: class AutoCommitTransaction implements Transaction {
032: /**
033: * Authorization IDs are not stored by AutoCommit.
034: *
035: * <p>
036: * Authorization IDs are only stored for the duration of a Transaction.
037: * </p>
038: *
039: * @return Set of authorizations
040: *
041: * @throws UnsupportedOperationException AUTO_COMMIT does not support this
042: */
043: public Set getAuthorizations() {
044: throw new UnsupportedOperationException(
045: "Authorization IDs are not valid for AutoCommit Transaction");
046: }
047:
048: /**
049: * AutoCommit does not save State.
050: *
051: * <p>
052: * While symetry would be good, state should be commited not stored for
053: * later.
054: * </p>
055: *
056: * @param key Key that is not used to Store State
057: * @param state State we are not going to externalize
058: *
059: * @throws UnsupportedOperationException AutoCommit does not support State
060: */
061: public void putState(Object key, State state) {
062: throw new UnsupportedOperationException(
063: "AutoCommit does not support the putState opperations");
064: }
065:
066: /**
067: * AutoCommit does not save State.
068: *
069: * <p>
070: * While symetry would be good, state should be commited not stored for
071: * later.
072: * </p>
073: *
074: * @param key Key that is not used to Store State
075: *
076: * @throws UnsupportedOperationException AutoCommit does not support State
077: */
078: public void removeState(Object key) {
079: throw new UnsupportedOperationException(
080: "AutoCommit does not support the removeState opperations");
081: }
082:
083: /**
084: * I am not sure should AutoCommit be able to save sate?
085: *
086: * <p>
087: * While symetry would be good, state should be commited not stored for
088: * later.
089: * </p>
090: *
091: * @param key Key used to retrieve State
092: *
093: * @return State earlier provided with putState
094: *
095: * @throws UnsupportedOperationException As Autocommit does not support
096: * State
097: */
098: public State getState(Object key) {
099: throw new UnsupportedOperationException(
100: "AutoCommit does not support the getState opperations");
101: }
102:
103: /**
104: * Implemented as a NOP since this Transaction always commits.
105: *
106: * <p>
107: * This allows the following workflow:
108: * </p>
109: * <pre>
110: * <code>
111: * Transaction t = roads.getTransaction();
112: * try{
113: * roads.addFeatures( features );
114: * roads.getTransaction().commit();
115: * }
116: * catch( IOException erp ){
117: * //something went wrong;
118: * roads.getTransaction().rollback();
119: * }
120: * </code>
121: * </pre>
122: */
123: public void commit() {
124: // implement a NOP
125: }
126:
127: /**
128: * Implements a NOP since AUTO_COMMIT does not maintain State.
129: */
130: public void close() {
131: // no state to clean up after
132: }
133:
134: /**
135: * Auto commit mode cannot support the rollback opperation.
136: *
137: * @throws IOException if Rollback fails
138: */
139: public void rollback() throws IOException {
140: throw new IOException(
141: "AutoCommit cannot support the rollback opperation");
142: }
143:
144: /**
145: * Authorization IDs are not stored by AutoCommit.
146: *
147: * <p>
148: * Authorization IDs are only stored for the duration of a Transaction.
149: * </p>
150: *
151: * @param authID Authorization ID
152: *
153: * @throws IOException If set authorization fails
154: */
155: public void addAuthorization(String authID) throws IOException {
156: throw new IOException(
157: "Authorization IDs are not valid for AutoCommit Transaction");
158: }
159:
160: /**
161: * AutoCommit does not save State.
162: *
163: * <p>
164: * While symetry would be good, state should be commited not stored for
165: * later.
166: * </p>
167: *
168: * @param key Key that is not used to Store Property
169: *
170: * @return Property associated with key, or null
171: *
172: * @throws UnsupportedOperationException AutoCommit does not support State
173: */
174: public Object getProperty(Object key) {
175: throw new UnsupportedOperationException(
176: "AutoCommit does not support the getProperty opperations");
177: }
178:
179: /**
180: * Implementation of addProperty.
181: *
182: * @param key
183: * @param value
184: *
185: * @throws UnsupportedOperationException
186: *
187: * @see org.geotools.data.Transaction#addProperty(java.lang.Object,
188: * java.lang.Object)
189: */
190: public void putProperty(Object key, Object value) {
191: throw new UnsupportedOperationException(
192: "AutoCommit does not support the addProperty opperations");
193: }
194: }
|