/* (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.writer; import java.util.List; import org.geoserver.backuprestore.Backup; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.CoverageStoreInfo; import org.geoserver.catalog.DataStoreInfo; import org.geoserver.catalog.LayerGroupInfo; import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.NamespaceInfo; import org.geoserver.catalog.ResourceInfo; import org.geoserver.catalog.StyleInfo; import org.geoserver.catalog.WorkspaceInfo; import org.geoserver.config.util.XStreamPersisterFactory; import org.springframework.batch.core.StepExecution; import org.springframework.batch.item.ItemWriter; import org.springframework.core.io.Resource; /** * Concrete Spring Batch {@link ItemWriter}. * * Writes unmarshalled items into the temporary {@link Catalog} in memory. * * @author Alessio Fabiani, GeoSolutions * */ public class CatalogItemWriter<T> extends CatalogWriter<T> { public CatalogItemWriter(Class<T> clazz, Backup backupFacade, XStreamPersisterFactory xStreamPersisterFactory) { super(clazz, backupFacade, xStreamPersisterFactory); } @Override protected void initialize(StepExecution stepExecution) { if (this.getXp() == null) { setXp(this.xstream.getXStream()); } } @SuppressWarnings("unchecked") @Override public void write(List<? extends T> items) { for (T item : items) { try { if (item instanceof WorkspaceInfo) { getCatalog().add((WorkspaceInfo) item); } else if (item instanceof NamespaceInfo) { getCatalog().add((NamespaceInfo) item); } else if (item instanceof DataStoreInfo) { getCatalog().add((DataStoreInfo) item); } else if (item instanceof CoverageStoreInfo) { getCatalog().add((CoverageStoreInfo) item); } else if (item instanceof ResourceInfo) { getCatalog().add((ResourceInfo) item); } else if (item instanceof LayerInfo) { getCatalog().add((LayerInfo) item); } else if (item instanceof StyleInfo) { getCatalog().add((StyleInfo) item); } else if (item instanceof LayerGroupInfo) { getCatalog().add((LayerGroupInfo) item); } } catch (Exception e) { logValidationExceptions((T) null, e); } } } @Override public void afterPropertiesSet() throws Exception { // Nothing to do. } /** * Setter for resource. Represents a file that can be written. * * @param resource */ @Override public void setResource(Resource resource) { // Nothing to do } }