/* (c) 2016 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.backuprestore.reader; import org.geoserver.backuprestore.Backup; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.util.CloseableIterator; import org.geoserver.config.util.XStreamPersisterFactory; import org.opengis.filter.Filter; import org.springframework.batch.core.StepExecution; import org.springframework.batch.item.ItemReader; import org.springframework.core.io.Resource; /** * Concrete Spring Batch {@link ItemReader}. * * Reads resource items from in memory {@link Catalog}. * * @author Alessio Fabiani, GeoSolutions * */ public class CatalogItemReader<T> extends CatalogReader<T> { CloseableIterator<T> catalogIterator; public CatalogItemReader(Class<T> clazz, Backup backupFacade, XStreamPersisterFactory xStreamPersisterFactory) { super(clazz, backupFacade, xStreamPersisterFactory); } protected void initialize(StepExecution stepExecution) { } @Override public void setResource(Resource resource) { // Nothing to do } @Override public void afterPropertiesSet() throws Exception { // Nothing to do } @Override protected T doRead() throws Exception { try { if (catalogIterator.hasNext()) { T item = (T) catalogIterator.next(); return item; } } catch (Exception e) { logValidationExceptions((T) null, e); } return null; } @Override @SuppressWarnings("unchecked") protected void doOpen() throws Exception { this.catalogIterator = (CloseableIterator<T>) getCatalog().list(this.clazz, Filter.INCLUDE); } @Override protected void doClose() throws Exception { catalogIterator.close(); } }