Package org.geoserver.wms.eo

Source Code of org.geoserver.wms.eo.EoCatalogBuilderTest

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wms.eo;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.CoverageStoreInfo;
import org.geoserver.catalog.DimensionInfo;
import org.geoserver.catalog.LayerGroupInfo;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.MetadataMap;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.catalog.StyleInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.test.GeoServerSystemTestSupport;
import org.geotools.coverage.grid.io.StructuredGridCoverage2DReader;
import org.junit.Before;
import org.junit.Test;
import org.opengis.coverage.grid.GridCoverageReader;


/**
* EoCatalogBuilder tests
*
* @author Davide Savazzi - geo-solutions.it
*/
public class EoCatalogBuilderTest extends GeoServerSystemTestSupport {

    private Catalog catalog;
    private WorkspaceInfo ws;
    private EoCatalogBuilder builder;
    private List<String> styles;
   
    @Before
    public void setup() {
        catalog = getCatalog();
        ws = catalog.getDefaultWorkspace();
        builder = new EoCatalogBuilder(catalog);
       
        styles = new ArrayList<String>();
        styles.add("black");
        styles.add("blue");
        styles.add("brown");
        styles.add("cyan");
        styles.add("green");
        styles.add("magenta");
        styles.add("orange");
        styles.add("red");
        styles.add("white");
        styles.add("yellow");
    }
   
    private void checkStyles(LayerInfo layer) {
        assertEquals(10, layer.getStyles().size());
       
        List<String> stylesNotFound = new ArrayList<String>(styles);
        for (StyleInfo style : layer.getStyles()) {
            stylesNotFound.remove(style.getName());
        }
       
        assertEquals(0, stylesNotFound.size());
    }
   
    private void checkTimeDimension(LayerInfo layer) {
        ResourceInfo resource = layer.getResource();
        MetadataMap metadata = resource.getMetadata();
       
        DimensionInfo timeDimension = (DimensionInfo) metadata.get("time");
        assertNotNull(timeDimension);       
    }
   
    @Test
    public void testEoMasksLayerCreation() {
        String groupName = "EO-Dataset";
        String maskName = "Masks";
       
        LayerInfo layer = builder.createEoMasksLayer(ws, groupName, maskName, getUrl("EO_Airmass"));
        assertNotNull(layer);
        assertEquals(groupName + "_" + maskName, layer.getName());
       
        layer = catalog.getLayerByName(layer.getName());
        assertEquals(EoLayerType.BITMASK.name(), layer.getMetadata().get(EoLayerType.KEY));       
        checkTimeDimension(layer);
        checkStyles(layer);
    }
  
    @Test
    public void testEoParametersLayerCreation() {
        String groupName = "EO-Dataset";
        String paramName = "Params";
       
        LayerInfo layer = builder.createEoParametersLayer(ws, groupName, paramName, getUrl("EO_Airmass"));
        assertNotNull(layer);
        assertEquals(groupName + "_" + paramName, layer.getName());
       
        layer = catalog.getLayerByName(layer.getName());
        assertEquals(EoLayerType.GEOPHYSICAL_PARAMETER.name(), layer.getMetadata().get(EoLayerType.KEY));
        checkTimeDimension(layer);
    }
   
    @Test
    public void testEoOutlineLayerCreation() throws Exception {
        String groupName = "EO-Dataset";
       
        LayerInfo browseLayer = builder.createEoBrowseImageLayer(ws, groupName, getUrl("EO_Nat"));
        assertNotNull(browseLayer);
        assertEquals(groupName + "_BROWSE", browseLayer.getName());
        assertEquals(EoLayerType.BROWSE_IMAGE.name(), browseLayer.getMetadata().get(EoLayerType.KEY));  
        checkTimeDimension(browseLayer);
       
        CoverageInfo coverage = (CoverageInfo) browseLayer.getResource();
        StructuredGridCoverage2DReader reader = (StructuredGridCoverage2DReader) coverage.getGridCoverageReader(null, null);
        LayerInfo layer = builder.createEoOutlineLayer(getUrl("EO_Nat"), ws, groupName, coverage.getNativeCoverageName(), reader);
        assertNotNull(layer);
        assertEquals(groupName + "_outlines", layer.getName());
        checkTimeDimension(layer);
       
        layer = catalog.getLayerByName(layer.getName());
        assertEquals(EoLayerType.COVERAGE_OUTLINE.name(), layer.getMetadata().get(EoLayerType.KEY));       
        checkStyles(layer);
    }
   
    @Test
    public void testEoBandsLayerCreation() {
        try {
            builder.createEoMosaicLayer(ws, "EO-Band", EoLayerType.BAND_COVERAGE, getUrl("EO_Airmass"), true);
            fail("The layer must not be created because it doesn't have custom dimensions");
        } catch (IllegalArgumentException e) {
        }
       
        LayerInfo layer = builder.createEoMosaicLayer(ws, "EO-Band", EoLayerType.BAND_COVERAGE, getUrl("EO_Channels"), true);
        layer = catalog.getLayerByName("EO-Band");
        assertEquals(EoLayerType.BAND_COVERAGE.name(), layer.getMetadata().get(EoLayerType.KEY));
       
        // check dimensions
        checkTimeDimension(layer);
        DimensionInfo customDimension = (DimensionInfo) layer.getResource().getMetadata().get(ResourceInfo.CUSTOM_DIMENSION_PREFIX + "CHANNEL");
        assertNotNull(customDimension);       
    }
   
    @Test
    public void testEoBandsLayerUsage() {
        try {
            builder.createEoMosaicLayer(ws, "EO-Band-2", EoLayerType.BAND_COVERAGE, getUrl("EO_Airmass"), true);
            fail("The layer must not be created because it doesn't have custom dimensions");
        } catch (IllegalArgumentException e) {
        }
       
        LayerInfo layer = builder.createEoMosaicLayer(ws, "EO-Band-2", EoLayerType.BAND_COVERAGE, getUrl("EO_Channels"), true);
        layer = catalog.getLayerByName("EO-Band-2");
        assertEquals(EoLayerType.BAND_COVERAGE.name(), layer.getMetadata().get(EoLayerType.KEY));
       
        // check dimensions
        checkTimeDimension(layer);
        DimensionInfo customDimension = (DimensionInfo) layer.getResource().getMetadata().get(ResourceInfo.CUSTOM_DIMENSION_PREFIX + "CHANNEL");
        assertNotNull(customDimension);       
    }
   
    @Test
    public void testStoreCreation() throws URISyntaxException {
        CoverageStoreInfo store = builder.createEoMosaicStore(ws, "EO-store", getUrl("EO_Airmass"));
        try {
            assertNotNull(store);
            assertEquals(ws, store.getWorkspace());
            assertEquals("EO-store", store.getName());
            assertEquals("ImageMosaic", store.getType());
           
            store = catalog.getStoreByName("EO-store", CoverageStoreInfo.class);
            assertNotNull(store);
            assertEquals(ws, store.getWorkspace());
            assertEquals("EO-store", store.getName());
            assertEquals("ImageMosaic", store.getType());
        } finally {
            catalog.remove(store);
        }
    }

    @Test
    public void testEoLayerGroupCreation() {   
        String groupName = "EO-Dataset2";
        String groupTitle = "title";
       
        LayerGroupInfo group = builder.createEoLayerGroup(ws, groupName, groupTitle, getUrl("EO_Nat"), getUrl("EO_Channels"), "airmass", getUrl("EO_Airmass"), null, null);
        assertNotNull(group);
        assertEquals(groupName, group.getName());
        assertEquals(groupTitle, group.getTitle());
        assertEquals(3, group.getLayers().size());
        assertEquals(LayerGroupInfo.Mode.EO, group.getMode());
        assertNotNull(group.getRootLayer());
        assertEquals(groupName + "_BROWSE", group.getRootLayer().getName());
    }
   
    private String getUrl(String resource) {
        return getClass().getResource(resource).toExternalForm();
    }
   
}
TOP

Related Classes of org.geoserver.wms.eo.EoCatalogBuilderTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.