/* (c) 2013 - 2016 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 static org.junit.Assert.assertEquals;
import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.catalog.impl.FeatureTypeInfoImpl;
import org.geoserver.catalog.impl.LayerInfoImpl;
import org.geotools.feature.AttributeTypeBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.junit.Test;
import org.opengis.feature.simple.SimpleFeatureType;
/**
*
* @author Ian Schneider <ischneider@opengeo.org>
*/
public class FeatureDataConverterTest {
@Test
public void testXMLUnsafeAttributeRenaming() {
SimpleFeatureType badatts = buildFeatureTypeWithXMLUnsafeAtts();
badatts = FeatureDataConverter.DEFAULT.convertType(badatts, null, null, null);
assertEquals("_123_number_first", badatts.getAttributeDescriptors().get(0).getLocalName());
assertEquals("i_has_spaces", badatts.getAttributeDescriptors().get(1).getLocalName());
}
@Test
public void testPostgisConversion() {
SimpleFeatureType t = FeatureDataConverter.TO_POSTGIS.convertType(buildFeatureTypeWithXMLUnsafeAtts(), null, null, null);
assertEquals("_123_number_first", t.getAttributeDescriptors().get(0).getLocalName());
assertEquals("i_has_spaces", t.getAttributeDescriptors().get(1).getLocalName());
}
SimpleFeatureType buildFeatureTypeWithXMLUnsafeAtts() {
SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
typeBuilder.setName("badatts");
AttributeTypeBuilder attBuilder = new AttributeTypeBuilder();
attBuilder.setBinding(String.class);
typeBuilder.add(attBuilder.buildDescriptor("123_number_first"));
attBuilder.setBinding(String.class);
typeBuilder.add(attBuilder.buildDescriptor("i has spaces"));
return typeBuilder.buildFeatureType();
}
@Test
public void testLayerNameFromTask() {
SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
typeBuilder.setName("badname");
SimpleFeatureType badname = typeBuilder.buildFeatureType();
ImportTask task = new ImportTask();
LayerInfo layer = new LayerInfoImpl();
ResourceInfo resource = new FeatureTypeInfoImpl((Catalog)null);
layer.setResource(resource);
layer.setName("goodname");
task.setLayer(layer);
badname = FeatureDataConverter.DEFAULT.convertType(badname, null, null, task);
assertEquals("goodname", badname.getName().getLocalPart());
}
}