@Override public void encode(Writer out) { if (mergedFeature != null) { final ObjectId oid = mergedFeature.getId(); if (oid != null) { try { out.write(oid.toString()); } catch (IOException ioe) { Throwables.propagate(ioe); } } } }
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 public FeatureInfo apply(SimpleFeature f) { RevFeature feature = RevFeature.builder().build(f); String fid = f.getID(); String path = NodeRef.appendChild(treePath, fid); String version = feature.getId().toString(); if (returnFidsOnInsert) { insertedFids.add(new FeatureIdVersionedImpl(fid, version)); } return FeatureInfo.insert(feature, featureTypeId, path); }};
private int write(@NonNull RevFeature f, @NonNull FlatBufferBuilder builder) { final int size = f.size(); int[] valueOffsets = new int[size]; final AtomicInteger index = new AtomicInteger(); f.forEach(val -> valueOffsets[index.getAndIncrement()] = ValueSerializer.encode(val, builder)); int valuesOffset = Feature.createValuesVector(builder, valueOffsets); return Feature.createFeature(builder, valuesOffset); }
@Override public void write(RevFeature feature, OutputStream out) throws IOException { DataOutputStream data = new DataOutputStream(out); try { writeHeader(data, "feature"); data.writeInt(feature.size()); for (Optional<Object> field : feature.getValues()) { Object value = field.orNull(); FieldType type = FieldType.forValue(value); data.writeByte(type.getTag()); DataStreamValueSerializerV1.INSTANCE.encode(type, value, data); } } finally { data.flush(); } } }
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(); }
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 static RevFeature readFeature(ObjectId id, DataInput in) throws IOException { final int count = in.readInt(); final RevFeatureBuilder builder = RevFeature.builder(); for (int i = 0; i < count; i++) { final byte fieldTag = in.readByte(); final FieldType fieldType = FieldType.valueOf(fieldTag); Object value = DataStreamValueSerializerV1.INSTANCE.decode(fieldType, in); builder.addValue(value); } RevFeature built = builder.build(); return built; }
public Object get(int index) { Object v = values[index]; if (v == NULL) { v = feature.get(index).orNull(); values[index] = v; } return v; }
@Test public void testBuildWithAddProperty() throws Exception { SimpleFeature f = (SimpleFeature) points1; RevFeature feature = RevFeature.builder().build(f); RevFeatureBuilder b = RevFeature.builder(); for (Property p : f.getProperties()) { b.addProperty(p); } RevFeature built = b.build(); assertEquals(feature, built); for (int i = 0; i < f.getAttributeCount(); i++) { assertEquals(f.getAttribute(i), built.getValues().get(i).orNull()); } }
ImmutableList<PropertyDescriptor> newAttributes = targetType.descriptors(); RevFeatureBuilder builder = RevFeature.builder(); for (int i = 0; i < newAttributes.size(); i++) { int idx = oldAttributes.indexOf(newAttributes.get(i)); if (idx != -1) { Optional<Object> oldValue = oldFeature.get(idx); builder.addValue(oldValue.orNull()); } else {
protected void testFeatureReadWrite(Feature feature) throws Exception { RevFeature newFeature = RevFeatureBuilder.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++) { assertEquals(newFeature.getValues().get(i).orNull(), feat.getValues().get(i).orNull()); } }
@Test public void testRevFeatureConstructorAndAccessors() { List<Object> values = Lists.newArrayList("StringProp1_1", new Integer(1000), "POINT(1 1)"); RevFeature feature = RevFeature.builder().addAll(values).build(); assertEquals(TYPE.FEATURE, feature.getType()); assertEquals(Lists.transform(values, (v) -> Optional.fromNullable(v)), feature.getValues()); }
@Test public void testWriteFeatureSlowPath() throws IOException { ByteArrayDataOutput target = ByteStreams.newDataOutput(); encoder.writeFeature(feature, target); byte[] encoded = target.toByteArray(); RevFeature decoded = encoder.readFeature(null, ByteStreams.newDataInput(encoded)); assertTrue(decoded instanceof LazyRevFeature); assertEquals(feature, decoded); assertTrue(decoded.equals(feature)); assertEquals(feature.getValues(), decoded.getValues()); }
State(RevFeature feature) { this.feature = feature; this.values = new Object[feature.size()]; Arrays.fill(values, NULL); }
public void getBounds(Envelope bounds) { feature.forEach((v) -> { if (v instanceof Geometry) bounds.expandToInclude(((Geometry) v).getEnvelopeInternal()); }); }
@Test public void testRevFeatureConstructorAndAccessors() { List<Object> values = Lists.newArrayList("StringProp1_1", new Integer(1000), "POINT(1 1)"); RevFeature feature = RevFeatureBuilder.builder().addAll(values).build(); assertEquals(TYPE.FEATURE, feature.getType()); assertEquals(Lists.transform(values, (v) -> Optional.fromNullable(v)), feature.getValues()); }
public RevFeature readFeature(@Nullable ObjectId id, DataInput in) throws IOException { final int count = readUnsignedVarInt(in); final RevFeatureBuilder builder = RevFeature.builder(); for (int i = 0; i < count; i++) { final byte fieldTag = in.readByte(); final FieldType fieldType = FieldType.valueOf(fieldTag); Object value = valueEncoder.decode(fieldType, in); builder.addValueNoCopy(value); } RevFeature built = builder.id(id).build(); return built; }