@Override public SimpleFeatureType convertType( SimpleFeatureType featureType, VectorFormat format, ImportData data, ImportTask item) { SimpleFeatureType converted = DEFAULT.convertType(featureType, format, data, item); String featureTypeName = convertTypeName(featureType.getTypeName()); // trim the length of the name // by default, postgis table/index names need to fit in 64 characters // with the "spatial_" prefix and "_geometry" suffix, that leaves 47 chars // and we should leave room to append integers to make the name unique too if (featureTypeName.length() > 45) { SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder(); featureTypeName = featureTypeName.substring(0, 45); typeBuilder.setName(featureTypeName); typeBuilder.addAll(featureType.getAttributeDescriptors()); converted = typeBuilder.buildFeatureType(); } return converted; } };
@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()); }
featureType = featureDataConverter.convertType(featureType, format, data, task); UpdateMode updateMode = task.getUpdateMode(); final String uniquifiedFeatureTypeName;
featureType = featureDataConverter.convertType(featureType, format, data, task); UpdateMode updateMode = task.getUpdateMode(); final String uniquifiedFeatureTypeName;
@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()); } }