public CoverageStoreInfo getStore() { return delegate.getStore(); }
public GridCoverageReader getGridCoverageReader( CoverageInfo info, String coverageName, Hints hints) throws IOException { return getGridCoverageReader(info.getStore(), info, coverageName, hints); }
assertEquals(cs, cv.getStore()); assertEquals(ns, cv.getNamespace()); assertEquals("EPSG:4326", cv.getSRS());
void clear(CoverageInfo info) { catalog.getResourcePool().clear(info.getStore()); }
/** * Adds into the keySet any read parameter key that's missing (due to reader growing new * parameters over time/releases */ private void addMissingParameters(TreeSet<String> keySet, CoverageInfo coverage) { AbstractGridFormat format = coverage.getStore().getFormat(); ParameterValueGroup readParameters = format.getReadParameters(); List<GeneralParameterValue> parameterValues = readParameters.values(); List<String> paramNames = parameterValues .stream() .map(p -> p.getDescriptor()) .filter(p -> p instanceof DefaultParameterDescriptor) .map(p -> p.getName().getCode()) .collect(Collectors.toList()); keySet.addAll(paramNames); }
private void initParameterDescriptors() { try { final CoverageInfo coverage = (CoverageInfo) getResourceInfo(); AbstractGridFormat format = coverage.getStore().getFormat(); ParameterValueGroup readParameters = format.getReadParameters(); List<GeneralParameterValue> parameterValues = readParameters.values(); parameterDescriptorMap = parameterValues .stream() .map(p -> p.getDescriptor()) .filter(p -> p instanceof DefaultParameterDescriptor) .map(p -> (DefaultParameterDescriptor) p) .collect( Collectors.toMap( p -> p.getName().getCode(), Function.identity())); } catch (Exception e) { LOGGER.log( Level.INFO, "Failed to initialize parameter descriptors, the UI will use generic text " + "editors", e); } }
@DeleteMapping(path = "coveragestores/{storeName}/coverages/{coverageName}") protected void coverageDelete( @PathVariable String workspaceName, @PathVariable String storeName, @PathVariable String coverageName, @RequestParam(name = "recurse", defaultValue = "false") boolean recurse) { CoverageStoreInfo ds = catalog.getCoverageStoreByName(workspaceName, storeName); CoverageInfo c = catalog.getCoverageByCoverageStore(ds, coverageName); if (c == null) { throw new RestException( String.format("Coverage '%s' not found.", coverageName), HttpStatus.NOT_FOUND); } List<LayerInfo> layers = catalog.getLayers(c); if (recurse) { // by recurse we clear out all the layers that public this resource for (LayerInfo l : layers) { catalog.remove(l); LOGGER.info("DELETE layer " + l.getName()); } } else { if (!layers.isEmpty()) { throw new RestException("coverage referenced by layer(s)", HttpStatus.FORBIDDEN); } } catalog.remove(c); catalog.getResourcePool().clear(c.getStore()); LOGGER.info("DELETE coverage " + storeName + "," + coverageName); }
@PutMapping( path = "coveragestores/{storeName}/coverages/{coverageName}", consumes = { MediaType.TEXT_XML_VALUE, MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE } ) public void coveragePut( @RequestBody CoverageInfo coverage, @PathVariable String workspaceName, @PathVariable String storeName, @PathVariable String coverageName, @RequestParam(required = false) String calculate) throws Exception { CoverageStoreInfo cs = catalog.getCoverageStoreByName(workspaceName, storeName); CoverageInfo original = catalog.getCoverageByCoverageStore(cs, coverageName); checkCoverageExists(original, workspaceName, coverageName); calculateOptionalFields(coverage, original, calculate); new CatalogBuilder(catalog).updateCoverage(original, coverage); catalog.validate(original, false).throwIfInvalid(); catalog.save(original); catalog.getResourcePool().clear(original.getStore()); LOGGER.info("PUT coverage " + storeName + "," + coverage); }
@Override public void onClick() { CoverageInfo coverageInfo = (CoverageInfo) model.getObject(); try { CoverageStoreInfo store = coverageInfo.getStore(); WorkspaceInfo workspace = store.getWorkspace(); setResponsePage( new CoverageViewEditPage( workspace.getName(), store.getName(), coverageInfo.getName(), coverageInfo, ((ResourceConfigurationPage) this.getPage()))); } catch (Exception e) { LOGGER.log( Level.SEVERE, "Failure opening the Virtual Coverage edit page", e); error(e.toString()); } } });
/** * Grabs the reader from the specified coverage * * @param ci * @throws IOException */ public static GridCoverage2DReader getCoverageReader(CoverageInfo ci) throws IOException, Exception { // get a reader for this coverage final CoverageStoreInfo store = (CoverageStoreInfo) ci.getStore(); final GridCoverageReader reader_ = ci.getGridCoverageReader(new DefaultProgressListener(), GeoTools.getDefaultHints()); if (reader_ == null) { throw new Exception( "Unable to acquire a reader for this coverage with format: " + store.getFormat().getName()); } final GridCoverage2DReader reader = (GridCoverage2DReader) reader_; return reader; }
Catalog catalog = app.getCatalog(); CatalogBuilder cb = new CatalogBuilder(catalog); cb.setStore(ci.getStore()); MetadataMap metadata = ci.getMetadata(); CoverageInfo rebuilt = null;
private LayerInfo validateBasicLayerStructure( String workspace, String layerName, String[] expectedNames) { // check the configuration elements are there too Catalog catalog = getCatalog(); // ... the store CoverageStoreInfo store = catalog.getCoverageStoreByName(workspace, "test123"); assertNotNull(store); assertThat(store.getFormat(), instanceOf(ImageMosaicFormat.class)); // ... the layer LayerInfo layer = catalog.getLayerByName(layerName); assertNotNull(layer); final CoverageInfo coverageInfo = (CoverageInfo) layer.getResource(); assertThat(coverageInfo.getStore(), equalTo(store)); // ... the resource is time enabled DimensionInfo dimension = coverageInfo.getMetadata().get(ResourceInfo.TIME, DimensionInfo.class); assertThat(dimension.getAttribute(), equalTo("timeStart")); assertThat(dimension.getDefaultValue().getStrategyType(), equalTo(Strategy.MAXIMUM)); // ... has the expected bands String[] names = coverageInfo .getDimensions() .stream() .map(cd -> cd.getName()) .toArray(String[]::new); assertThat(expectedNames, equalTo(names)); return layer; }
public static CoverageInfo localizeCoverage(final CoverageInfo info, final Catalog catalog) throws IllegalAccessException, InvocationTargetException { if (info==null || catalog==null) throw new NullArgumentException("Arguments may never be null"); final CoverageInfo localObject=catalog.getCoverageByName(info.getNamespace(),info.getName()); if (localObject !=null){ return localObject; } final CoverageInfo createdObject = catalog.getFactory().createCoverage(); // let's using the created object (see getGridCoverageReader) BeanUtils.copyProperties(createdObject, info); createdObject.setNamespace(localizeNamespace(info.getNamespace(), catalog)); createdObject.setStore(localizeCoverageStore(info.getStore(), catalog)); final CatalogBuilder builder = new CatalogBuilder(catalog); builder.attach(createdObject); return createdObject; }
public static CoverageInfo localizeCoverage(final CoverageInfo info, final Catalog catalog) throws IllegalAccessException, InvocationTargetException { if (info==null || catalog==null) throw new NullArgumentException("Arguments may never be null"); final CoverageInfo localObject=catalog.getCoverageByName(info.getNamespace(),info.getName()); if (localObject !=null){ return localObject; } final CoverageInfo createdObject = catalog.getFactory().createCoverage(); // let's using the created object (see getGridCoverageReader) BeanUtils.copyProperties(createdObject, info); createdObject.setNamespace(localizeNamespace(info.getNamespace(), catalog)); createdObject.setStore(localizeCoverageStore(info.getStore(), catalog)); final CatalogBuilder builder = new CatalogBuilder(catalog); builder.attach(createdObject); return createdObject; }
protected void handleCoverageDescription(CoverageInfo ci) throws Exception { start("wcs:CoverageDescription"); element("ows:Title", ci.getTitle()); element("ows:Abstract", ci.getDescription()); handleKeywords(ci.getKeywords()); element("wcs:Identifier", ci.getStore().getWorkspace().getName() + ":" + ci.getName()); handleMetadataLinks(ci.getMetadataLinks(), "simple"); handleDomain(ci); handleRange(ci); handleSupportedCRSs(ci); handleSupportedFormats(ci); end("wcs:CoverageDescription"); }
@Test public void testDeleteRecursive() throws Exception { assertNotNull(catalog.getCoverageStoreByName("wcs", "BlueMarble")); MockHttpServletResponse response = deleteAsServletResponse( RestBaseController.ROOT_PATH + "/workspaces/wcs/coveragestores/BlueMarble?recurse=true"); assertEquals(200, response.getStatus()); assertNull(catalog.getCoverageStoreByName("wcs", "BlueMarble")); for (CoverageInfo c : catalog.getCoverages()) { if (c.getStore().getName().equals("BlueMarble")) { fail(); } } } }
@Test public void testGridCoverageStats() throws Exception { // check the coverage is actually there Catalog catalog = getCatalog(); CoverageStoreInfo storeInfo = catalog.getCoverageStoreByName(COVERAGE_NAME); assertNotNull(storeInfo); CoverageInfo ci = catalog.getCoverageByName(COVERAGE_NAME); assertNotNull(ci); assertEquals(storeInfo, ci.getStore()); // Test on the GridCoverageStats FilterFunction_gridCoverageStats funcStat = new FilterFunction_gridCoverageStats(); GridCoverageReader reader = ci.getGridCoverageReader(null, null); GridCoverage2D gridCoverage = (GridCoverage2D) reader.read(null); double min = (Double) funcStat.evaluate(gridCoverage, "minimum"); double max = (Double) funcStat.evaluate(gridCoverage, "maximum"); assertEquals(min, 13.1369, TOLERANCE); assertEquals(max, 20.665, TOLERANCE); ImageIOUtilities.disposeImage(gridCoverage.getRenderedImage()); }
@Test public void testGridBandStats() throws Exception { // check the coverage is actually there Catalog catalog = getCatalog(); CoverageStoreInfo storeInfo = catalog.getCoverageStoreByName(COVERAGE_NAME); assertNotNull(storeInfo); CoverageInfo ci = catalog.getCoverageByName(COVERAGE_NAME); assertNotNull(ci); assertEquals(storeInfo, ci.getStore()); // Test on the GridCoverageStats final FilterFactory ff = CommonFactoryFinder.getFilterFactory(); Function minStat = ff.function("bandStats", ff.literal(0), ff.literal("minimum")); Function maxStat = ff.function("bandStats", ff.literal(0), ff.literal("maximum")); GridCoverageReader reader = ci.getGridCoverageReader(null, null); GridCoverage2D gridCoverage = (GridCoverage2D) reader.read(null); double min = (Double) minStat.evaluate(gridCoverage); double max = (Double) maxStat.evaluate(gridCoverage); assertEquals(min, 0, TOLERANCE); assertEquals(max, 0.5, TOLERANCE); ImageIOUtilities.disposeImage(gridCoverage.getRenderedImage()); }