/** * Resolves the {@code FieldType} corresponding to the {@code value}'s class * * @see #forBinding(Class) */ public static FieldType forValue(@Nullable Object value) { if (value == null) { return NULL; } Class<?> fieldClass = value.getClass(); return forBinding(fieldClass); }
/** * Resolves the {@code FieldType} corresponding to the {@code value}'s class * * @see #forBinding(Class) */ public static FieldType forValue(@Nullable Object value) { if (value == null) { return NULL; } Class<?> fieldClass = value.getClass(); return forBinding(fieldClass); }
public DefaultGeometryDiffImpl(String s) { String[] tokens = s.split("\t"); Preconditions.checkArgument(tokens.length == 2, "Wrong difference definition:", s); oldGeom = Optional.fromNullable((Geometry) TextValueSerializer .fromString(FieldType.forBinding(Geometry.class), tokens[0])); newGeom = Optional.fromNullable((Geometry) TextValueSerializer .fromString(FieldType.forBinding(Geometry.class), tokens[1])); }
public DefaultGeometryDiffImpl(String s) { String[] tokens = s.split("\t"); Preconditions.checkArgument(tokens.length == 2, "Wrong difference definition:", s); oldGeom = Optional.fromNullable((Geometry) TextValueSerializer .fromString(FieldType.forBinding(Geometry.class), tokens[0])); newGeom = Optional.fromNullable((Geometry) TextValueSerializer .fromString(FieldType.forBinding(Geometry.class), tokens[1])); }
public GeometryAttributeDiff(String s) { String[] tokens = s.split("\t"); if (tokens[0].equals("M")) { type = TYPE.MODIFIED; diff = new LCSGeometryDiffImpl(s.substring(s.indexOf("\t") + 1)); } else if (tokens[0].equals("A")) { Preconditions.checkArgument(tokens.length == 3); type = TYPE.ADDED; String wkt = tokens[1]; newGeometry = (Geometry) TextValueSerializer .fromString(FieldType.forBinding(Geometry.class), wkt); } else if (tokens[0].equals("R")) { Preconditions.checkArgument(tokens.length == 3); type = TYPE.REMOVED; String wkt = tokens[1]; oldGeometry = (Geometry) TextValueSerializer .fromString(FieldType.forBinding(Geometry.class), wkt); } else { throw new IllegalArgumentException("Wrong difference definition:" + s); } }
public GeometryAttributeDiff(String s) { String[] tokens = s.split("\t"); if (tokens[0].equals("M")) { type = TYPE.MODIFIED; diff = new LCSGeometryDiffImpl(s.substring(s.indexOf("\t") + 1)); } else if (tokens[0].equals("A")) { Preconditions.checkArgument(tokens.length == 3); type = TYPE.ADDED; String wkt = tokens[1]; newGeometry = (Geometry) TextValueSerializer .fromString(FieldType.forBinding(Geometry.class), wkt); } else if (tokens[0].equals("R")) { Preconditions.checkArgument(tokens.length == 3); type = TYPE.REMOVED; String wkt = tokens[1]; oldGeometry = (Geometry) TextValueSerializer .fromString(FieldType.forBinding(Geometry.class), wkt); } else { throw new IllegalArgumentException("Wrong difference definition:" + s); } }
@Nullable public Geometry applyOn(@Nullable Geometry obj) { Preconditions.checkState(canBeAppliedOn(obj)); String wkt = obj == null ? "" : obj.toText(); String res = (String) diffMatchPatch.patch_apply(patches, wkt)[0]; if (!res.isEmpty()) { return (Geometry) TextValueSerializer.fromString(FieldType.forBinding(Geometry.class), res); } return null; }
@Override public Converter createConverter(Class<?> source, Class<?> target, Hints hints) { final FieldType sourceBinding = FieldType.forBinding(source); final FieldType targetBinding = FieldType.forBinding(target); if (UNKNOWN == sourceBinding || UNKNOWN == targetBinding) { return null; } final boolean sourceIsArray = sourceBinding.getBinding().isArray(); final boolean targetIsArray = targetBinding.getBinding().isArray(); if (!sourceIsArray && !targetIsArray) { return null; } if (String.class.equals(sourceBinding.getBinding())) { return FROM_STRING; } if (String.class.equals(targetBinding.getBinding())) { return TO_STRING; } return null; }
@Nullable public Geometry applyOn(@Nullable Geometry obj) { Preconditions.checkState(canBeAppliedOn(obj)); String wkt = obj == null ? "" : obj.toText(); String res = (String) diffMatchPatch.patch_apply(patches, wkt)[0]; if (!res.isEmpty()) { return (Geometry) TextValueSerializer.fromString(FieldType.forBinding(Geometry.class), res); } return null; }
@Override public Converter createConverter(Class<?> source, Class<?> target, Hints hints) { final FieldType sourceBinding = FieldType.forBinding(source); final FieldType targetBinding = FieldType.forBinding(target); if (UNKNOWN == sourceBinding || UNKNOWN == targetBinding) { return null; } final boolean sourceIsMap = Map.class.isAssignableFrom(sourceBinding.getBinding()); final boolean targetIsMap = Map.class.isAssignableFrom(targetBinding.getBinding()); if (!(sourceIsMap || targetIsMap)) { return null; } if (String.class.equals(sourceBinding.getBinding())) { return FROM_STRING; } if (String.class.equals(targetBinding.getBinding())) { return TO_STRING; } return null; }
@Override public Converter createConverter(Class<?> source, Class<?> target, Hints hints) { final FieldType sourceBinding = FieldType.forBinding(source); final FieldType targetBinding = FieldType.forBinding(target); if (UNKNOWN == sourceBinding || UNKNOWN == targetBinding) { return null; } final boolean sourceIsMap = Map.class.isAssignableFrom(sourceBinding.getBinding()); final boolean targetIsMap = Map.class.isAssignableFrom(targetBinding.getBinding()); if (!(sourceIsMap || targetIsMap)) { return null; } if (String.class.equals(sourceBinding.getBinding())) { return FROM_STRING; } if (String.class.equals(targetBinding.getBinding())) { return TO_STRING; } return null; }
@Override public Converter createConverter(Class<?> source, Class<?> target, Hints hints) { final FieldType sourceBinding = FieldType.forBinding(source); final FieldType targetBinding = FieldType.forBinding(target); if (UNKNOWN == sourceBinding || UNKNOWN == targetBinding) { return null; } final boolean sourceIsArray = sourceBinding.getBinding().isArray(); final boolean targetIsArray = targetBinding.getBinding().isArray(); if (!sourceIsArray && !targetIsArray) { return null; } if (String.class.equals(sourceBinding.getBinding())) { return FROM_STRING; } if (String.class.equals(targetBinding.getBinding())) { return TO_STRING; } return null; }
public static String toString(@NonNull RevFeatureType ft) { StringBuilder builder = new StringBuilder(ft.getClass().getSimpleName()); builder.append('(').append(toShortString(ft.getId())).append(")["); boolean first = true; for (PropertyDescriptor desc : ft.descriptors()) { if (first) { first = false; } else { builder.append(", "); } builder.append(desc.getName().getLocalPart()); builder.append(": "); Class<?> binding = desc.getType().getBinding(); FieldType fieldType = FieldType.forBinding(binding); builder.append(binding.getSimpleName()); builder.append("->"); builder.append(fieldType); } builder.append(']'); return builder.toString(); }
public @Override @NonNull RevFeatureType createFeatureType(@NonNull ObjectId id, @NonNull FeatureType ftype) { Collection<PropertyDescriptor> descriptors = ftype.getDescriptors(); descriptors.forEach(d -> { Class<?> binding = d.getType().getBinding(); Objects.requireNonNull(binding, "got null binding for attribute " + d.getName().getLocalPart()); FieldType fieldType = FieldType.forBinding(binding); if (FieldType.NULL == fieldType || FieldType.UNKNOWN == fieldType) { String msg = String.format( "Attribute %s of FeatureType %s is of an unsupported type: %s", d.getName().getLocalPart(), ftype.getName().getLocalPart(), binding.getName()); throw new IllegalArgumentException(msg); } }); return new RevFeatureTypeImpl(id, ftype); }
public @Override @NonNull RevFeatureType createFeatureType(@NonNull ObjectId id, @NonNull FeatureType ftype) { Collection<PropertyDescriptor> descriptors = ftype.getDescriptors(); descriptors.forEach(d -> { Class<?> binding = d.getType().getBinding(); Objects.requireNonNull(binding, "got null binding for attribute " + d.getName().getLocalPart()); FieldType fieldType = FieldType.forBinding(binding); if (FieldType.NULL == fieldType || FieldType.UNKNOWN == fieldType) { String msg = String.format( "Attribute %s of FeatureType %s is of an unsupported type: %s", d.getName().getLocalPart(), ftype.getName().getLocalPart(), binding.getName()); throw new IllegalArgumentException(msg); } }); FlatBufferBuilder fbb = newBuilder(); int objOffset = encoder.writeSimpleFeatureType(fbb, (SimpleFeatureType) ftype); encoder.writeRevisionObject(ObjectType.SimpleFeatureType, objOffset, fbb); return (RevFeatureType) encoder.decode(id, copy(fbb.dataBuffer())); }
private void printAttributeDescriptor(Writer w, PropertyDescriptor attrib) throws IOException { print(w, attrib.getName().toString()); print(w, "\t"); print(w, FieldType.forBinding(attrib.getType().getBinding()).name()); print(w, "\t"); print(w, Integer.toString(attrib.getMinOccurs())); print(w, "\t"); print(w, Integer.toString(attrib.getMaxOccurs())); print(w, "\t"); print(w, Boolean.toString(attrib.isNillable())); PropertyType attrType = attrib.getType(); if (attrType instanceof GeometryType) { GeometryType gt = (GeometryType) attrType; CoordinateReferenceSystem crs = gt.getCoordinateReferenceSystem(); String crsText = CrsTextSerializer.serialize(crs); print(w, "\t"); println(w, crsText); } else { println(w, ""); } }
private void printFeatureType(Ansi ansi, RevFeatureType ft, boolean useDefaultKeyword) { ImmutableList<PropertyDescriptor> attribs = ft.descriptors(); ansi.fg(Color.YELLOW).a(useDefaultKeyword ? "DEFAULT " : "").a("FEATURE TYPE ID: ").reset() .a(ft.getId().toString()).newline().newline(); ansi.a(useDefaultKeyword ? "DEFAULT " : "").a("FEATURE TYPE ATTRIBUTES").newline(); for (PropertyDescriptor attrib : attribs) { ansi.fg(Color.YELLOW).a(attrib.getName() + ": ").reset() .a("<" + FieldType.forBinding(attrib.getType().getBinding()) + ">").newline(); } }
private void printFeatureType(Ansi ansi, RevFeatureType ft, boolean useDefaultKeyword) { ImmutableList<PropertyDescriptor> attribs = ft.descriptors(); ansi.fg(Color.YELLOW).a(useDefaultKeyword ? "DEFAULT " : "").a("FEATURE TYPE ID: ").reset() .a(ft.getId().toString()).newline().newline(); ansi.a(useDefaultKeyword ? "DEFAULT " : "").a("FEATURE TYPE ATTRIBUTES").newline(); for (PropertyDescriptor attrib : attribs) { ansi.fg(Color.YELLOW).a(attrib.getName() + ": ").reset() .a("<" + FieldType.forBinding(attrib.getType().getBinding()) + ">").newline(); } }
private void printFeatureType(Ansi ansi, RevFeatureType ft, boolean useDefaultKeyword) { ImmutableList<PropertyDescriptor> attribs = ft.descriptors(); ansi.fg(Color.YELLOW).a(useDefaultKeyword ? "DEFAULT " : "").a("FEATURE TYPE ID: ").reset() .a(ft.getId().toString()).newline().newline(); ansi.a(useDefaultKeyword ? "DEFAULT " : "").a("FEATURE TYPE ATTRIBUTES").newline(); for (PropertyDescriptor attrib : attribs) { ansi.fg(Color.YELLOW).a(attrib.getName() + ": ").reset() .a("<" + FieldType.forBinding(attrib.getType().getBinding()) + ">").newline(); } }
@Override public void funnel(PropertyDescriptor descriptor, PrimitiveSink into) { NameFunnel.funnel(descriptor.getName(), into); PropertyType attrType = descriptor.getType(); NameFunnel.funnel(attrType.getName(), into); FieldType type = FieldType.forBinding(attrType.getBinding()); into.putInt(type.getTag()); into.putBoolean(descriptor.isNillable()); into.putInt(descriptor.getMaxOccurs()); into.putInt(descriptor.getMinOccurs()); if (descriptor instanceof GeometryDescriptor) { CoordinateReferenceSystem crs; crs = ((GeometryDescriptor) descriptor).getCoordinateReferenceSystem(); String srsName; if (crs == null) { srsName = RevObjects.NULL_CRS_IDENTIFIER; } else { srsName = CRS.toSRS(crs); } NullableStringFunnel.funnel(srsName, into); } } };