public void convert(SimpleFeature from, SimpleFeature to) { Set<String> fromAttrNames = attributeNames(from); Set<String> toAttrNames = attributeNames(to); Set<String> commonNames = new HashSet<String>(fromAttrNames); commonNames.retainAll(toAttrNames); for (String attrName : commonNames) { to.setAttribute(convertAttributeName(attrName), from.getAttribute(attrName)); } }
protected String convertAttributeName(String attName) { return convertTypeName(attName); }
featureType = featureDataConverter.convertType(featureType, format, data, task); UpdateMode updateMode = task.getUpdateMode(); final String uniquifiedFeatureTypeName; featureDataConverter.convert(feature, next);
@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; } };
public SimpleFeatureType convertType(SimpleFeatureType featureType, VectorFormat format, ImportData data, ImportTask task) { SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder(); typeBuilder.setName(convertTypeName(featureType.getTypeName())); AttributeTypeBuilder attBuilder = new AttributeTypeBuilder(); for (AttributeDescriptor att : featureType.getAttributeDescriptors()) { attBuilder.init(att); typeBuilder.add(attBuilder.buildDescriptor(convertAttributeName(att.getLocalName()))); } return typeBuilder.buildFeatureType(); }
public SimpleFeature convertFeature(SimpleFeature old, SimpleFeatureType targetFeatureType) { SimpleFeatureBuilder fb = new SimpleFeatureBuilder(targetFeatureType); SimpleFeature newFeature = fb.buildFeature(old.getID()); FeatureDataConverter.DEFAULT.convert(old, newFeature); Map<Object, Object> userData = old.getUserData(); Object folderObject = userData.get("Folder"); if (folderObject != null) { String serializedFolders = serializeFolders(folderObject); newFeature.setAttribute("Folder", serializedFolders); } @SuppressWarnings("unchecked") Map<String, String> untypedExtendedData = (Map<String, String>) userData .get("UntypedExtendedData"); if (untypedExtendedData != null) { for (Entry<String, String> entry : untypedExtendedData.entrySet()) { if (targetFeatureType.getDescriptor(entry.getKey()) != null) { newFeature.setAttribute(entry.getKey(), entry.getValue()); } } } return newFeature; }
@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()); }
public SimpleFeatureType convertType( SimpleFeatureType featureType, VectorFormat format, ImportData data, ImportTask task) { SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder(); typeBuilder.setName( convertTypeName( task != null && task.getLayer().getName() != null ? task.getLayer().getName() : featureType.getTypeName())); AttributeTypeBuilder attBuilder = new AttributeTypeBuilder(); for (AttributeDescriptor att : featureType.getAttributeDescriptors()) { attBuilder.init(att); typeBuilder.add(attBuilder.buildDescriptor(convertAttributeName(att.getLocalName()))); } return typeBuilder.buildFeatureType(); }
public SimpleFeature convertFeature(SimpleFeature old, SimpleFeatureType targetFeatureType) { SimpleFeatureBuilder fb = new SimpleFeatureBuilder(targetFeatureType); SimpleFeature newFeature = fb.buildFeature(old.getID()); FeatureDataConverter.DEFAULT.convert(old, newFeature); Map<Object, Object> userData = old.getUserData(); Object folderObject = userData.get("Folder"); if (folderObject != null) { String serializedFolders = serializeFolders(folderObject); newFeature.setAttribute("Folder", serializedFolders); } @SuppressWarnings("unchecked") Map<String, String> untypedExtendedData = (Map<String, String>) userData.get("UntypedExtendedData"); if (untypedExtendedData != null) { for (Entry<String, String> entry : untypedExtendedData.entrySet()) { if (targetFeatureType.getDescriptor(entry.getKey()) != null) { newFeature.setAttribute(entry.getKey(), entry.getValue()); } } } return newFeature; }
@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()); }
public void convert(SimpleFeature from, SimpleFeature to) { Set<String> fromAttrNames = attributeNames(from); Set<String> toAttrNames = attributeNames(to); Set<String> commonNames = fromAttrNames .stream() .filter(name -> toAttrNames.contains(convertAttributeName(name))) .collect(Collectors.toSet()); for (String attrName : commonNames) { to.setAttribute(convertAttributeName(attrName), from.getAttribute(attrName)); } }
private Feature attemptNext() { SimpleFeature input = (SimpleFeature) super.next(); SimpleFeature result = featureBuilder.buildFeature(null); featureDataConverter.convert(input, result); // @hack #45678 - mask empty geometry or postgis will complain Geometry geom = (Geometry) result.getDefaultGeometry(); if (geom != null && geom.isEmpty()) { result.setDefaultGeometry(null); } try { result = vectorTransformChain.inline(task, dataStore, input, result); } catch (Exception e) { throw new RuntimeException(e); } task.setNumberProcessed(++cnt); return result; } }
protected String convertAttributeName(String attName) { return convertTypeName(attName); }
featureType = featureDataConverter.convertType(featureType, format, data, task); UpdateMode updateMode = task.getUpdateMode(); final String uniquifiedFeatureTypeName;
featureDataConverter.convert(feature, next);
@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()); } }