@Override public void fromBinary(final byte[] bytes) { final byte[] otherBytes = new byte[bytes.length - 1]; System.arraycopy(bytes, 1, otherBytes, 0, otherBytes.length); final byte[] kryoBytes = new byte[] {bytes[0]}; final ByteBuffer buf = ByteBuffer.wrap(otherBytes); final int filterBinaryLength = VarintUtils.readUnsignedInt(buf); final byte[] filterBinary = new byte[filterBinaryLength]; buf.get(filterBinary); final int typeNameBinaryLength = VarintUtils.readUnsignedInt(buf); final byte[] typeNameBinary = new byte[typeNameBinaryLength]; buf.get(typeNameBinary); final byte[] geometrySimpBinary = new byte[buf.remaining()]; buf.get(geometrySimpBinary); serializationFormatOptionProvider = new FeatureSerializationOptionProvider(); serializationFormatOptionProvider.fromBinary(kryoBytes); filterOptionProvider = new CQLFilterOptionProvider(); filterOptionProvider.fromBinary(filterBinary); typeNameProvider = new TypeNameOptionProvider(); typeNameProvider.fromBinary(typeNameBinary); simpOptionProvider = new GeometrySimpOptionProvider(); simpOptionProvider.fromBinary(geometrySimpBinary); }
&& (typeNameProvider.getTypeName() != null) && !typeNameProvider.getTypeName().trim().isEmpty()) { internalTypeNameProvider = typeNameProvider; } else {
@Override public byte[] toBinary() { final byte[] filterBinary = filterOptionProvider.toBinary(); final byte[] typeNameBinary = typeNameProvider.toBinary(); final byte[] simpBinary = simpOptionProvider.toBinary(); final byte[] backingBuffer = new byte[filterBinary.length + typeNameBinary.length + simpBinary.length + VarintUtils.unsignedIntByteLength(filterBinary.length) + VarintUtils.unsignedIntByteLength(typeNameBinary.length)]; final ByteBuffer buf = ByteBuffer.wrap(backingBuffer); VarintUtils.writeUnsignedInt(filterBinary.length, buf); buf.put(filterBinary); VarintUtils.writeUnsignedInt(typeNameBinary.length, buf); buf.put(typeNameBinary); buf.put(simpBinary); return ArrayUtils.addAll(serializationFormatOptionProvider.toBinary(), backingBuffer); }
@Override public boolean apply(final GeoWaveData<SimpleFeature> input) { if ((internalTypeNameProvider != null) && !internalTypeNameProvider.typeNameMatches(input.getTypeName())) { return false; } if ((internalFilterProvider != null) && !internalFilterProvider.evaluate(input.getValue())) { return false; } if ((internalSimpOptionProvider != null)) { final Geometry simpGeom = internalSimpOptionProvider.simplifyGeometry( (Geometry) input.getValue().getDefaultGeometry()); if (!internalSimpOptionProvider.filterGeometry(simpGeom)) { return false; } input.getValue().setDefaultGeometry(simpGeom); } return true; } });