Package org.locationtech.udig.catalog.shp.tests

Source Code of org.locationtech.udig.catalog.shp.tests.BasicHotlinkTest

/*
*    uDig - User Friendly Desktop Internet GIS client
*    http://udig.refractions.net
*    (C) 2012, Refractions Research Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* (http://www.eclipse.org/legal/epl-v10.html), and the Refractions BSD
* License v1.0 (http://udig.refractions.net/files/bsd3-v10.html).
*/
package org.locationtech.udig.catalog.shp.tests;

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

import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.locationtech.udig.catalog.IGeoResource;
import org.locationtech.udig.catalog.IService;
import org.locationtech.udig.catalog.ServiceExtension;
import org.locationtech.udig.catalog.document.IDocument;
import org.locationtech.udig.catalog.document.IDocument.ContentType;
import org.locationtech.udig.catalog.document.IHotlinkSource.HotlinkDescriptor;
import org.locationtech.udig.catalog.internal.shp.ShpServiceExtension;
import org.locationtech.udig.document.source.BasicHotlinkDescriptorParser;
import org.locationtech.udig.document.source.BasicHotlinkSource;
import org.locationtech.udig.tool.info.tests.Activator;

import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.data.simple.SimpleFeatureStore;
import org.geotools.factory.CommonFactoryFinder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.opengis.filter.FilterFactory2;
import org.osgi.framework.Bundle;

@SuppressWarnings("nls")
public class BasicHotlinkTest {

    private IService service;
    private IGeoResource resource;
    private BasicHotlinkDescriptorParser parser;
   
    @Before
    public void setUp() throws Exception {
        assertNotNull("Please run as Plugin Test", Activator.getDefault());

        Bundle bundle = Activator.getDefault().getBundle();
        File directory = FileLocator.getBundleFile(bundle);
        assertTrue("Test Directory", directory.isDirectory());

        File shapefile = new File(new File(directory, "internal"), "australia.shp");
        assertTrue("Sample File", shapefile.isFile());

        ServiceExtension factory = new ShpServiceExtension();
        Map<String, Serializable> params = factory.createParams(shapefile.toURI().toURL());
        service = factory.createService(null, params);

        List<IGeoResource> members = (List<IGeoResource>) service
                .resources(new NullProgressMonitor());
        resource = members.get(0);

        final List<HotlinkDescriptor> descriptors = new ArrayList<HotlinkDescriptor>();
        descriptors.add(new HotlinkDescriptor("File", "File Description", "FILE", ContentType.FILE, ""));
        descriptors.add(new HotlinkDescriptor("Web", "Web Description", "LINK", ContentType.WEB, ""));

        parser = new BasicHotlinkDescriptorParser(resource);
        parser.setDescriptors(descriptors);

    }

    @After
    public void tearDown() throws Exception {
        if (service != null) {
            service.dispose(new NullProgressMonitor());
            service = null;
        }
    }

    @Test
    public void testBasicResolveAdaptorFactory() throws Exception {
       
        // IResolveAdapterFactory adaptorFactory = new BasicHotlinkResolveFactory();
        // assertTrue(adaptorFactory.canAdapt(resource, IHotlinkSource.class));
        //
        // IHotlinkSource hotlink = (IHotlinkSource) adaptorFactory.adapt(resource,
        // IHotlinkSource.class, new NullProgressMonitor());

        final BasicHotlinkSource hotlink = new BasicHotlinkSource(resource);
        assertNotNull(hotlink);

        List<HotlinkDescriptor> list = hotlink.getHotlinkDescriptors(null, new NullProgressMonitor());
        assertEquals("descriptors found", 2, list.size());

        SimpleFeatureStore featureStore = resource.resolve(SimpleFeatureStore.class,
                new NullProgressMonitor());
        SimpleFeatureType schema = featureStore.getSchema();
        for (HotlinkDescriptor hotlinkDescriptor : list) {
            AttributeDescriptor attributeDescriptor = schema.getDescriptor(hotlinkDescriptor
                    .getAttributeName());
            assertNotNull("confirm attribute name matches", attributeDescriptor);
            assertTrue("Confirm String",
                    String.class.isAssignableFrom(attributeDescriptor.getType().getBinding()));

            assertNotNull(hotlinkDescriptor.getType() != null);
        }
        FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
        SimpleFeatureCollection features = featureStore.getFeatures(ff.equals(ff.property("STATE"),
                ff.literal("Tasmania")));
        SimpleFeatureIterator iterator = features.features();
        assertTrue("Tasmania found", iterator.hasNext());
        SimpleFeature tasmania = iterator.next();

        List<IDocument> documents = hotlink.getDocuments(tasmania, new NullProgressMonitor());
        assertEquals("image document found", 2, documents.size());

        // IDocument imageDocument = documents.get(0);
        // assertEquals(ContentType.FILE, imageDocument.getContentType());

        // IDocument webLink = documents.get(1);
        // assertEquals(ContentType.WEB, webLink.getContentType());

    }

}
TOP

Related Classes of org.locationtech.udig.catalog.shp.tests.BasicHotlinkTest

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.