Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2006-2008 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.springframework.batch.item.database;
 
 import java.util.List;
 
Abstract org.springframework.batch.item.ItemReader for to extend when reading database records in a paging fashion.

Implementations should execute queries using paged requests of a size specified in setPageSize(int). Additional pages are requested when needed as org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.read() method is called, returning an object corresponding to current position.

Author(s):
Thomas Risberg
Dave Syer
Since:
2.0
 
 public abstract class AbstractPagingItemReader<T> extends AbstractItemCountingItemStreamItemReader<T> implements
 
 	protected Log logger = LogFactory.getLog(getClass());
 
 	private volatile boolean initialized = false;
 
 	private int pageSize = 10;
 
 	private volatile int current = 0;
 
 	private volatile int page = 0;
 
 	protected volatile List<T> results;
 
 	private Object lock = new Object();
 
 	}

The current page number.

Returns:
the current page
 
 	public int getPage() {
 		return ;
 	}

The page size configured for this reader.

Returns:
the page size
 
 	public int getPageSize() {
 		return ;
 	}

The number of rows to retrieve at a time.

Parameters:
pageSize the number of rows to fetch per page
 
 	public void setPageSize(int pageSize) {
 		this. = pageSize;
 	}

 
 	public void afterPropertiesSet() throws Exception {
 		Assert.isTrue( > 0, "pageSize must be greater than zero");
 	}
 
 	protected T doRead() throws Exception {
 
 		synchronized () {
			if ( == null ||  >= ) {
					.debug("Reading page " + getPage());
				}
				if ( >= ) {
					 = 0;
				}
			}
			int next = ++;
			if (next < .size()) {
				return .get(next);
			}
			else {
				return null;
			}
		}
	}
	abstract protected void doReadPage();
	protected void doOpen() throws Exception {
		Assert.state(!"Cannot open an already opened ItemReader, call close first");
		 = true;
	}
	protected void doClose() throws Exception {
		synchronized () {
			 = false;
			 = 0;
			 = 0;
			 = null;
		}
	}
	protected void jumpToItem(int itemIndexthrows Exception {
		synchronized () {
			 = itemIndex / ;
			 = itemIndex % ;
		}
		doJumpToPage(itemIndex);
			.debug("Jumping to page " + getPage() + " and index " + );
		}
	}
	abstract protected void doJumpToPage(int itemIndex);
New to GrepCode? Check out our FAQ X