public Object get(int index) { Object v = values[index]; if (v == NULL) { v = feature.get(index).orNull(); values[index] = v; } return v; }
protected void testFeatureReadWrite(Feature feature) throws Exception { RevFeature newFeature = RevFeature.builder().build(feature); ByteArrayOutputStream output = new ByteArrayOutputStream(); serializer.write(newFeature, output); byte[] data = output.toByteArray(); assertTrue(data.length > 0); ByteArrayInputStream input = new ByteArrayInputStream(data); RevFeature feat = (RevFeature) serializer.read(newFeature.getId(), input); assertNotNull(feat); assertEquals(newFeature.getValues().size(), feat.getValues().size()); for (int i = 0; i < newFeature.getValues().size(); i++) { Object expected = newFeature.getValues().get(i).orNull(); String msg = "At index " + i + ": " + (expected == null ? null : expected.getClass().getSimpleName()); Object actual = feat.get(i).orNull(); assertEquals(msg, expected, actual); } }
public void writeFeature(RevFeature feature, String tag) throws StreamWriterException { out.writeStartElement(tag); writeElement("id", feature.getId().toString()); out.writeStartArray("attribute"); for (int i = 0; i < feature.size(); i++) { Object value = feature.get(i).orNull(); final FieldType type = FieldType.forValue(value); String valueString = TextValueSerializer.asString(value); out.writeStartArrayElement("attribute"); writeElement("type", type.toString()); writeElement("value", valueString); out.writeEndArrayElement(); } out.writeEndArray(); out.writeEndElement(); }
public Geometry get(int index, GeometryFactory gf) { Object v = values[index]; if (v == NULL) { v = feature.get(index, gf).orNull(); values[index] = v; } return (Geometry) v; }
public Object get(int index) { Object v = values[index]; if (v == NULL) { v = feature.get(index).orNull(); values[index] = v; } return v; }
public Geometry get(int index, GeometryFactory gf) { Object v = values[index]; if (v == NULL) { v = feature.get(index, gf).orNull(); values[index] = v; } return (Geometry) v; }
/** * Sets all the missing attributes as having been modified for the last time by the passed * commit. * * @param commit */ public void setFirstVersion(RevFeature feature, RevCommit commit) { for (int i = 0; i < attributes.size(); i++) { String attr = attributes.get(i); if (!changes.containsKey(attr)) { Optional<Object> value = feature.get(i); changes.put(attr, new ValueAndCommit(value, commit)); } } }
/** * Sets all the missing attributes as having been modified for the last time by the passed * commit. * * @param commit */ public void setFirstVersion(RevFeature feature, RevCommit commit) { for (int i = 0; i < attributes.size(); i++) { String attr = attributes.get(i); if (!changes.containsKey(attr)) { Optional<Object> value = feature.get(i); changes.put(attr, new ValueAndCommit(value, commit)); } } }
private @Nullable Node materialize(@Nullable Node node, Map<ObjectId, RevFeature> objects) { Node materialized = null; if (null != node) { ObjectId objectId = node.getObjectId(); RevFeature f = objects.get(objectId); Preconditions.checkState(f != null, "Feature %s of node '%s' not found", objectId, node.getName()); Map<String, Object> atts = new HashMap<>(); extraDataProperties.forEach((attName, attIndex) -> { Optional<Object> value = f.get(attIndex.intValue()); atts.put(attName, value.orNull()); }); Map<String, Object> extraData = new HashMap<>(node.getExtraData()); extraData.put(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA, atts); String name = node.getName(); ObjectId metadataId = node.getMetadataId().or(ObjectId.NULL); TYPE type = node.getType(); Envelope orNull = node.bounds().orNull(); materialized = Node.create(name, objectId, metadataId, type, orNull, extraData); } return materialized; } }
private @Nullable Node materialize(@Nullable Node node, Map<ObjectId, RevFeature> objects) { Node materialized = null; if (null != node) { ObjectId objectId = node.getObjectId(); RevFeature f = objects.get(objectId); Preconditions.checkState(f != null, "Feature %s of node '%s' not found", objectId, node.getName()); Map<String, Object> atts = new HashMap<>(); extraDataProperties.forEach((attName, attIndex) -> { Optional<Object> value = f.get(attIndex.intValue()); atts.put(attName, value.orNull()); }); Map<String, Object> extraData = new HashMap<>(node.getExtraData()); extraData.put(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA, atts); String name = node.getName(); ObjectId metadataId = node.getMetadataId().or(ObjectId.NULL); TYPE type = node.getType(); Envelope orNull = node.bounds().orNull(); materialized = RevObjectFactory.defaultInstance().createNode(name, objectId, metadataId, type, orNull, extraData); } return materialized; } }
private Feature merge(RevFeature featureA, RevFeature featureB, RevFeature ancestor, RevFeatureType featureType) { SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder( (SimpleFeatureType) featureType.type()); ImmutableList<PropertyDescriptor> descriptors = featureType.descriptors(); for (int i = 0; i < descriptors.size(); i++) { final PropertyDescriptor descriptor = descriptors.get(i); final boolean isGeom = descriptor instanceof GeometryDescriptor; Name name = descriptor.getName(); Object valueAncestor = ancestor.get(i).orNull(); Object valueA = featureA.get(i).orNull(); Object valueB = featureB.get(i).orNull(); final boolean valueAEqualsAncestor = valueEquals(isGeom, valueA, valueAncestor); if (valueAEqualsAncestor) { featureBuilder.set(name, valueB); } else { Object merged = valueA; featureBuilder.set(name, merged); } } return featureBuilder.buildFeature(nodeRefA.name()); }
private Feature merge(RevFeature featureA, RevFeature featureB, RevFeature ancestor, RevFeatureType featureType) { SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder( (SimpleFeatureType) featureType.type()); ImmutableList<PropertyDescriptor> descriptors = featureType.descriptors(); for (int i = 0; i < descriptors.size(); i++) { final PropertyDescriptor descriptor = descriptors.get(i); final boolean isGeom = descriptor instanceof GeometryDescriptor; Name name = descriptor.getName(); Object valueAncestor = ancestor.get(i).orNull(); Object valueA = featureA.get(i).orNull(); Object valueB = featureB.get(i).orNull(); final boolean valueAEqualsAncestor = valueEquals(isGeom, valueA, valueAncestor); if (valueAEqualsAncestor) { featureBuilder.set(name, valueB); } else { Object merged = valueA; featureBuilder.set(name, merged); } } return featureBuilder.buildFeature(nodeRefA.name()); }
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 void writeFeature(RevFeature feature, DataOutput data) throws IOException { writeUnsignedVarInt(feature.size(), data); for (int i = 0; i < feature.size(); i++) { Object field = feature.get(i).orNull(); FieldType type = FieldType.forValue(field); data.writeByte(type.getTag()); valueEncoder.encode(type, field, data); } }
public void writeFeature(RevFeature feature, DataOutput data) throws IOException { writeUnsignedVarInt(feature.size(), data); for (int i = 0; i < feature.size(); i++) { Object field = feature.get(i).orNull(); FieldType type = FieldType.forValue(field); data.writeByte(type.getTag()); valueEncoder.encode(type, field, data); } }
@Override protected void print(RevFeature feature, Writer w) throws IOException { for (int i = 0; i < feature.size(); i++) { Optional<Object> opt = feature.get(i); final FieldType type = FieldType.forValue(opt); String valueString = TextValueSerializer.asString(opt); println(w, type.toString() + "\t" + valueString); } w.flush(); }
@Override protected void print(RevFeature feature, Writer w) throws IOException { for (int i = 0; i < feature.size(); i++) { Optional<Object> opt = feature.get(i); final FieldType type = FieldType.forValue(opt); String valueString = TextValueSerializer.asString(opt); println(w, type.toString() + "\t" + valueString); } w.flush(); }
private List<DiffEntry> createDiffEntries(List<RevFeature> left, List<RevFeature> right) { final java.util.function.Function<RevFeature, String> fid = (f) -> String .valueOf(f.get(1).get());// ip Map<String, RevFeature> lEntries = left.stream().collect(Collectors.toMap(fid, f -> f)); Map<String, RevFeature> rEntries = right.stream().collect(Collectors.toMap(fid, f -> f)); MapDifference<String, RevFeature> difference = Maps.difference(lEntries, rEntries); List<DiffEntry> entries = new ArrayList<>(); difference.entriesOnlyOnLeft().forEach((k, v) -> entries.add(entry(k, v, null))); difference.entriesOnlyOnRight().forEach((k, v) -> entries.add(entry(k, null, v))); difference.entriesDiffering() .forEach((k, v) -> entries.add(entry(k, v.leftValue(), v.rightValue()))); return entries; }
int idx = oldAttributes.indexOf(newAttributes.get(i)); if (idx != -1) { Optional<Object> oldValue = oldFeature.get(idx); builder.addValue(oldValue.orNull()); } else {
int idx = oldAttributes.indexOf(newAttributes.get(i)); if (idx != -1) { Optional<Object> oldValue = oldFeature.get(idx); builder.addValue(oldValue.orNull()); } else {