void doIndirectImport(ImportTask task) throws IOException { if (!task.getStore().isEnabled()) { task.getStore().setEnabled(true); if (task.progress().isCanceled()) { return; task.setState(ImportTask.State.RUNNING); TransformChain tx = task.getTransform(); if (!doPreTransform(task, task.getData(), tx)) { return; DataFormat format = task.getData().getFormat(); if (format instanceof VectorFormat) { try { currentlyProcessing.put(task.getContext().getId(), task); loadIntoDataStore( task, (DataStoreInfo) task.getStore(), (VectorFormat) format, (VectorTransformChain) tx); canceled = task.progress().isCanceled(); FeatureTypeInfo featureType = (FeatureTypeInfo) task.getLayer().getResource(); featureType.getAttributes().clear(); if (task.getUpdateMode() == UpdateMode.CREATE) { addToCatalog(task);
ImportTask task = new ImportTask(data); task.setDirect(false); task.setStore(targetStore); prep(task); task.setState(State.READY); task.setError(null); task.setTransform(new RasterTransformChain()); context.addTask(task); return Arrays.asList(task); if (t.getTransform() == null) { t.setTransform( format instanceof VectorFormat ? new VectorTransformChain() : new RasterTransformChain()); t.setDirect(direct); t.setStore(targetStore); t.getLayer().setName(targetStore.getName()); t.getLayer().getResource().setName(targetStore.getName()); t.setUpdateMode(UpdateMode.APPEND); ImportTask t = new ImportTask(data); t.setDirect(direct); t.setStore(targetStore); prep(t); tasks.add(t);
boolean prep(ImportTask task) { if (task.getState() == ImportTask.State.COMPLETE) { return true; DataFormat format = task.getData().getFormat(); if (format == null) { task.setState(State.NO_FORMAT); return false; if (task.getStore() == null) { task.setError(new Exception("No target store for task")); task.setState(State.ERROR); return false; if (!formatMatchesStore(format, task.getStore())) { String msg = task.getStore() instanceof DataStoreInfo ? "Unable to import raster data into vector store" : "Unable to import vector data into raster store"; task.setError(new Exception(msg)); task.setState(State.BAD_FORMAT); return false; if (task.getLayer() == null || task.getLayer().getResource() == null) { task.setError(new Exception("Task has no layer configuration")); task.setState(State.ERROR); return false; LayerInfo l = task.getLayer(); ResourceInfo r = l.getResource();
void run(ImportTask task) throws IOException { if (task.getState() == ImportTask.State.COMPLETE) { return; } task.setState(ImportTask.State.RUNNING); if (task.isDirect()) { //direct import, simply add configured store and layers to catalog doDirectImport(task); } else { //indirect import, read data from the source and into the target datastore doIndirectImport(task); } }
public void apply(ImportTask task, ImportData data) throws Exception { DataStoreInfo storeInfo = (DataStoreInfo) task.getStore(); DataAccess store = storeInfo.getDataStore(null); if (store instanceof JDBCDataStore) { createIndex( task, (JDBCDataStore) store); } else { task.addMessage(Level.WARNING, "Cannot create index on non database target. Not a big deal."); } }
if (task.getStore().getId() == null) { StoreInfo store = task.getStore(); store.setName(findUniqueStoreName(task.getStore())); WorkspaceInfo ws = task.getContext().getTargetWorkspace(); if (ws == null && task.getContext().getTargetStore() != null) { ws = task.getContext().getTargetStore().getWorkspace(); catalog.add(task.getStore()); task.setState(ImportTask.State.RUNNING); TransformChain tx = (TransformChain) task.getTransform(); if (!doPreTransform(task, task.getData(), tx)) { return; if (!doPostTransform(task, task.getData(), tx)) { return; task.setState(ImportTask.State.COMPLETE); task.setState(ImportTask.State.ERROR); task.setError(e);
void loadIntoDataStore(ImportTask task, DataStoreInfo store, VectorFormat format, VectorTransformChain tx) throws Exception { ImportData data = task.getData(); FeatureReader reader = format.read(data, task); SimpleFeatureType featureType = (SimpleFeatureType) reader.getFeatureType(); UpdateMode updateMode = task.getUpdateMode(); final String uniquifiedFeatureTypeName; if (updateMode == UpdateMode.CREATE) { task.setOriginalLayerName(featureTypeName); task.getLayer().getResource().setName(uniquifiedFeatureTypeName); task.getLayer().getResource().setNativeName(uniquifiedFeatureTypeName); ProgressMonitor monitor = task.progress(); task.clearMessages(); task.setTotalToProcess(format.getFeatureCount(task.getData(), task)); writer.write(); task.setNumberProcessed(++cnt); task.addMessage(Level.WARNING,skipped + " features were skipped.");
assertEquals(ImportTask.State.READY, task.getState()); assertEquals("archsites", task.getLayer().getResource().getName()); TransformChain transformChain = task.getTransform(); transformChain.add(new PostScriptTransform("test.sh", Collections.emptyList())); importer.run(context); Catalog cat = getCatalog(); assertNotNull(cat.getLayerByName("archsites")); assertEquals(ImportTask.State.COMPLETE, task.getState()); runChecks("archsites");
@Test public void testImportShapefilesWithExtraFiles() throws Exception { File dir = tmpDir(); unpack("shape/archsites_epsg_prj.zip", dir); // make some 'extra' files new File(dir, "archsites.sbn").createNewFile(); new File(dir, "archsites.sbx").createNewFile(); new File(dir, "archsites.shp.xml").createNewFile(); ImportContext context = importer.createContext(new Directory(dir)); assertEquals(1, context.getTasks().size()); ImportTask task = context.getTasks().get(0); assertEquals(ImportTask.State.READY, task.getState()); assertEquals("archsites", task.getLayer().getResource().getName()); }
layer.setResource(ft); ImportTask task = new ImportTask(data); task.setLayer(layer); task.getMetadata().put(FeatureType.class, featureType);
FeatureWriter writer = null; Throwable error = null; ProgressMonitor monitor = task.progress(); task.clearMessages(); task.setTotalToProcess(format.getFeatureCount(task.getData(), task)); writer.write(); task.setNumberProcessed(++cnt); task.addMessage(Level.WARNING, skipped + " features were skipped.");
@Override public boolean apply(FileData input) { return FilenameUtils.getBaseName(input.getFile().getName()) .equals(item.getLayer().getName()); } })
@Override public boolean apply(ImportTask input) { final StoreInfo store = input != null ? input.getStore() : null; final Catalog catalog = store != null ? store.getCatalog() : null; final LayerInfo layer = catalog != null ? catalog.getLayer(input.getLayer().getId()) : null; return (layer == null); } });
assertEquals(ImportTask.State.READY, task.getState()); task.getTransform().add(warp); assertEquals("box_gcp_fixed", task.getLayer().getResource().getName()); CoverageStoreInfo store = (CoverageStoreInfo) task.getStore(); assertEquals("GeoTIFF", store.getFormat().getName()); assertNotNull(cat.getLayerByName("box_gcp_fixed")); assertEquals(ImportTask.State.COMPLETE, task.getState());
public ImportContext reattach(ImportContext context) { // reload store and workspace objects from catalog so they are "attached" with // the proper references to the catalog initialized context.reattach(catalog); for (ImportTask task : context.getTasks()) { StoreInfo store = task.getStore(); if (store != null && store.getId() != null) { task.setStore(catalog.getStore(store.getId(), StoreInfo.class)); // ((StoreInfoImpl) task.getStore()).setCatalog(catalog); // @todo remove if the // above sets catalog } if (task.getLayer() != null) { LayerInfo l = task.getLayer(); if (l.getDefaultStyle() != null && l.getDefaultStyle().getId() != null) { l.setDefaultStyle(catalog.getStyle(l.getDefaultStyle().getId())); } if (l.getResource() != null) { ResourceInfo r = l.getResource(); r.setCatalog(catalog); if (r.getStore() == null && resourceMatchesStore(r, store)) { r.setStore(store); } } } } return context; }
@Override public FeatureReader read(ImportData data, ImportTask task) throws IOException { File file = getFileFromData(data); // we need to get the feature type, to use for the particular parse through the file // since we put it on the metadata from the list method, we first check if that's still // available SimpleFeatureType ft = (SimpleFeatureType) task.getMetadata().get(FeatureType.class); GMLVersion version = (GMLVersion) task.getMetadata().get(GML_VERSION_KEY); if (version == null) { version = GMLVersion.GML3; } if (ft == null) { FeatureTypeInfo fti = (FeatureTypeInfo) task.getLayer().getResource(); ft = buildFeatureTypeFromInfo(fti); } return new GMLReader(new FileInputStream(file), version.getConfiguration(), ft); }
resource.getMetadata().put("recalculate-bounds", Boolean.TRUE); ImportTask task = new ImportTask(data); task.setLayer(layer); task.getMetadata().put(FeatureType.class, featureType); task.getMetadata().put(GML_VERSION_KEY, featureType.getUserData().get(GML_VERSION_KEY)); ReprojectTransform transform = new ReprojectTransform(crs, targetCRS); TransformChain<VectorTransform> chain = new VectorTransformChain(transform); task.setTransform(chain);
t.setTransform(format instanceof VectorFormat ? new VectorTransformChain() : new RasterTransformChain()); t.setDirect(direct); t.setStore(targetStore); ImportTask t = new ImportTask(data); t.setDirect(direct); t.setStore(targetStore); prep(t); tasks.add(t);
@Test public void testImportDirectoryWithRasterDirect() throws Exception { File dir = tmpDir(); unpack("shape/archsites_epsg_prj.zip", dir); unpack("shape/bugsites_esri_prj.tar.gz", dir); unpack("geotiff/EmissiveCampania.tif.bz2", dir); ImportContext context = importer.createContext(new Directory(dir)); assertEquals(3, context.getTasks().size()); assertTrue(context.getData() instanceof Directory); ImportTask task = context.getTasks().get(0); assertEquals(ImportTask.State.READY, task.getState()); assertEquals("archsites", task.getLayer().getResource().getName()); assertTrue(task.getData() instanceof SpatialFile); assertEquals("Shapefile", task.getData().getFormat().getName()); task = context.getTasks().get(1); assertEquals(ImportTask.State.READY, task.getState()); assertEquals("bugsites", task.getLayer().getResource().getName()); assertTrue(task.getData() instanceof SpatialFile); assertEquals("Shapefile", task.getData().getFormat().getName()); task = context.getTasks().get(2); assertEquals(ImportTask.State.READY, task.getState()); assertEquals("EmissiveCampania", task.getLayer().getResource().getName()); assertTrue(task.getData() instanceof SpatialFile); assertEquals("GeoTIFF", task.getData().getFormat().getName()); }