public @Override SimpleFeature apply(DiffObjectInfo<RevFeature> info) { DiffEntry entry = info.entry(); final String id = entry.name(); RevFeature oldFeature = info.oldValue().orElse(null); RevFeature newFeature = info.newValue().orElse(null); final ChangeType changeType = info.entry().changeType(); diffFeatureBuilder.set(BulkFeatureRetriever.DIFF_FEATURE_CHANGETYPE_ATTNAME, Integer.valueOf(changeType.value())); List<String> nativeTypeNames = this.nativeAttNames; for (int i = 0; i < nativeTypeNames.size(); i++) { String attNameFlattenedOld = flattenedAttNames.get(2 * i); String attNameFlattenedNew = flattenedAttNames.get(2 * i + 1); Object o = oldFeature == null ? null : oldFeature.get(i).orNull(); Object n = newFeature == null ? null : newFeature.get(i).orNull(); diffFeatureBuilder.set(attNameFlattenedOld, o); diffFeatureBuilder.set(attNameFlattenedNew, n); } return diffFeatureBuilder.buildFeature(id); } }
public @Override SimpleFeature apply(DiffObjectInfo<RevFeature> info) { DiffEntry entry = info.entry(); final String id = entry.name(); RevFeature oldFeature = info.oldValue().orElse(null); RevFeature newFeature = info.newValue().orElse(null); SimpleFeature oldValue; SimpleFeature newValue; oldValue = (SimpleFeature) (oldFeature == null ? null : valueBuilder.build(id, oldFeature, geometryFactory)); newValue = (SimpleFeature) (newFeature == null ? null : valueBuilder.build(id, newFeature, geometryFactory)); SimpleFeature diffFeature; diffFeatureBuilder.reset(); final ChangeType changeType = info.entry().changeType(); diffFeatureBuilder.set(BulkFeatureRetriever.DIFF_FEATURE_CHANGETYPE_ATTNAME, Integer.valueOf(changeType.value())); diffFeatureBuilder.set("old", oldValue); diffFeatureBuilder.set("new", newValue); diffFeature = diffFeatureBuilder.buildFeature(id); return diffFeature; } }
private void testLayerDiff(String layerName, String oldHead, String newHead) throws IOException { final SimpleFeatureType valueType = dataStore.getSchema(layerName); final SimpleFeatureSource source = dataStore.getDiffFeatureSource(layerName, oldHead); final SimpleFeatureType diffSchema = source.getSchema(); assertDiffSchema(diffSchema, valueType); List<DiffEntry> entries = getExpectedEntries(layerName, oldHead, newHead); dataStore.setHead(newHead); List<SimpleFeature> features = toList(source.getFeatures()); assertEquals(entries.size(), features.size()); final Map<String, DiffEntry> entriesById; final Map<String, SimpleFeature> featuresById; entriesById = Maps.uniqueIndex(entries, e -> e.name()); featuresById = Maps.uniqueIndex(features, f -> f.getID()); assertEquals(entriesById.size(), featuresById.size()); entriesById.forEach((id, entry) -> { SimpleFeature diffFeature = featuresById.get(id); assertNotNull(diffFeature); assertDiffFeature(entry, diffFeature, diffSchema, valueType); }); }