Package org.geoserver.importer

Source Code of org.geoserver.importer.DirectoryTest

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

import java.io.File;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static junit.framework.Assert.assertEquals;
import junit.framework.TestCase;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.geoserver.importer.mosaic.Mosaic;
import static org.geoserver.importer.ImporterTestUtils.unpack;

public class DirectoryTest extends TestCase {

    public void testMosaicAuxillaryFiles() throws Exception {
        File unpack = ImporterTestUtils.unpack("mosaic/bm.zip");

        // all types of junk!
        String[] aux = new String[] {
            "aux", "rrd", "xml", "tif.aux.xml", "tfw"
        };
        File[] tifs = unpack.listFiles();
        for (int i = 0; i < tifs.length; i++) {
            File file = tifs[i];
            for (int j = 0; j < aux.length; j++) {
                new File(unpack, file.getName().replace("tif",aux[j])).createNewFile();
            }
        }

        Mosaic m = new Mosaic(unpack);
        m.prepare();

        assertEquals(4, m.getFiles().size());
        for (int i = 0; i < m.getFiles().size(); i++) {
            assertEquals("GeoTIFF", m.getFiles().get(1).getFormat().getName());
        }
        // make sure the junk was actually picked up
        for (FileData f: m.getFiles()) {
            assertEquals(aux.length, ((SpatialFile) f).getSuppFiles().size());
        }
    }

    public void testSingleSpatialFile() throws Exception {
        File dir = unpack("shape/archsites_epsg_prj.zip");

        Directory d = new Directory(dir);
        d.prepare();
       
        List<FileData> files = d.getFiles();
       
        assertEquals(1, files.size());
        assertTrue( files.get(0) instanceof SpatialFile);

        SpatialFile spatial = (SpatialFile) files.get(0);
        assertEquals("shp", FilenameUtils.getExtension(spatial.getFile().getName()));

        assertNotNull(spatial.getPrjFile().getName());
        assertEquals("prj", FilenameUtils.getExtension(spatial.getPrjFile().getName()));
       
        assertEquals(2, spatial.getSuppFiles().size());

        Set<String> exts = new HashSet<String>(Arrays.asList("shx", "dbf"));
        for (File supp : spatial.getSuppFiles()) {
            exts.remove(FilenameUtils.getExtension(supp.getName()));
        }

        assertTrue(exts.isEmpty());
    }
   
    public void testShapefileWithMacOSXDirectory() throws Exception {
        File dir = unpack("shape/archsites_epsg_prj.zip");
       
        File osxDir = new File(dir,"__MACOSX");
        osxDir.mkdir();
        new File(osxDir, ".archsites.shp").createNewFile();
        new File(osxDir, ".archsites.dbf").createNewFile();
        new File(osxDir, ".archsites.prj").createNewFile();
       
        Directory d = new Directory(dir);
        d.prepare();
       
        assertNotNull(d.getFormat());
        assertEquals(DataStoreFormat.class, d.getFormat().getClass());
        List<FileData> files = d.getFiles();
        assertEquals(1, files.size());
        assertEquals(DataStoreFormat.class, files.get(0).getFormat().getClass());
    }
   
    public void testShapefileWithExtraFiles() throws Exception {
        File dir = unpack("shape/archsites_epsg_prj.zip");
       
        // 'extra' files
        new File(dir, "archsites.shp.xml").createNewFile();
        new File(dir, "archsites.sbx").createNewFile();
        new File(dir, "archsites.sbn").createNewFile();
        new File(dir, "archsites.shp.ed.lock").createNewFile();
       
        Directory d = new Directory(dir);
        d.prepare();
       
        assertNotNull(d.getFormat());
        assertEquals(DataStoreFormat.class, d.getFormat().getClass());
        List<FileData> files = d.getFiles();
        assertEquals(1, files.size());
        assertEquals(DataStoreFormat.class, files.get(0).getFormat().getClass());
    }
   
    public void testMultipleSpatialFile() throws Exception {
        File dir = unpack("shape/archsites_epsg_prj.zip");
        unpack("shape/bugsites_esri_prj.tar.gz", dir);

        Directory d = new Directory(dir);
        d.prepare();

        assertEquals(2, d.getFiles().size());
        assertTrue( d.getFiles().get(0) instanceof SpatialFile);
        assertTrue( d.getFiles().get(1) instanceof SpatialFile);
    }

    public void testMultipleSpatialASpatialFile() throws Exception {
        File dir = unpack("shape/archsites_epsg_prj.zip");
        unpack("shape/bugsites_esri_prj.tar.gz", dir);
        FileUtils.touch(new File(dir, "foo.txt")); //TODO: don't rely on alphabetical order
       
        Directory d = new Directory(dir);
        d.prepare();
       
        assertEquals(3, d.getFiles().size());
        assertTrue( d.getFiles().get(0) instanceof SpatialFile);
        assertTrue( d.getFiles().get(1) instanceof SpatialFile);
        assertTrue( d.getFiles().get(2) instanceof ASpatialFile);
    }

}
TOP

Related Classes of org.geoserver.importer.DirectoryTest

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.