KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > jdbc > core > support > AbstractInterruptibleBatchPreparedStatementSetter


1 /*
2  * Copyright 2002-2006 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.springframework.jdbc.core.support;
18
19 import java.sql.PreparedStatement JavaDoc;
20 import java.sql.SQLException JavaDoc;
21
22 import org.springframework.jdbc.core.InterruptibleBatchPreparedStatementSetter;
23
24 /**
25  * Abstract implementation of the InterruptibleBatchPreparedStatementSetter
26  * interface, combining the check for available values and setting of those
27  * into a single callback method (<code>setValuesIfAvailable</code>).
28  *
29  * @author Juergen Hoeller
30  * @since 2.0
31  * @see #setValuesIfAvailable
32  */

33 public abstract class AbstractInterruptibleBatchPreparedStatementSetter
34         implements InterruptibleBatchPreparedStatementSetter {
35
36     private boolean exhausted;
37
38
39     /**
40      * This implementation calls <code>setValuesAndCheck</code>
41      * and sets this instance's exhaustion flag accordingly.
42      */

43     public final void setValues(PreparedStatement JavaDoc ps, int i) throws SQLException JavaDoc {
44         this.exhausted = !setValuesIfAvailable(ps, i);
45     }
46
47     /**
48      * This implementation return this instance's current exhaustion flag.
49      */

50     public final boolean isBatchExhausted(int i) {
51         return this.exhausted;
52     }
53
54     /**
55      * This implementation returns <code>Integer.MAX_VALUE</code>.
56      * Can be overridden in subclasses to lower the maximum batch size.
57      */

58     public int getBatchSize() {
59         return Integer.MAX_VALUE;
60     }
61
62
63     /**
64      * Check for available values and set them on the given PreparedStatement.
65      * If no values are available anymore, return <code>false</code>.
66      * @param ps PreparedStatement we'll invoke setter methods on
67      * @param i index of the statement we're issuing in the batch, starting from 0
68      * @return whether there were values to apply (that is, whether the applied
69      * parameters should be added to the batch and this method should be called
70      * for a further iteration)
71      * @throws SQLException if thrown by JDBC API methods
72      */

73     protected abstract boolean setValuesIfAvailable(PreparedStatement JavaDoc ps, int i) throws SQLException JavaDoc;
74
75 }
76
Popular Tags