public String toString() { switch (type) { case ADDED: return "[MISSING] -> " + TextValueSerializer.asString(Optional.fromNullable((Object) newGeometry.orNull())); case REMOVED: return TextValueSerializer.asString(Optional.fromNullable((Object) oldGeometry.orNull())) + " -> [MISSING]"; case MODIFIED: default: return diff.toString(); } }
@SuppressWarnings("unchecked") @Override public boolean canBeAppliedOn(Optional<?> obj) { switch (type) { case ADDED: return obj == null; case REMOVED: return obj.equals(oldGeometry); case MODIFIED: default: return diff.canBeAppliedOn((Optional<Geometry>) obj); } }
@SuppressWarnings("unchecked") @Override public Optional<?> applyOn(Optional<?> obj) { Preconditions.checkState(canBeAppliedOn(obj)); switch (type) { case ADDED: return newGeometry; case REMOVED: return null; case MODIFIED: default: return diff.applyOn((Optional<Geometry>) obj); } }
@Override public boolean equals(Object o) { if (!(o instanceof GeometryAttributeDiff)) { return false; } GeometryAttributeDiff d = (GeometryAttributeDiff) o; if (oldGeometry == null && newGeometry == null) { return Objects.equal(oldGeometry, oldGeometry) && Objects.equal(newGeometry, d.newGeometry) && Objects.equal(type, d.type); } else { return diff.equals(d.diff); } }
@Override public String asText() { switch (type) { case ADDED: return type.name().toCharArray()[0] + "\t" + TextValueSerializer.asString(Optional.fromNullable((Object) newGeometry.orNull())); case REMOVED: return type.name().toCharArray()[0] + "\t" + TextValueSerializer.asString(Optional.fromNullable((Object) oldGeometry.orNull())); case MODIFIED: default: return type.name().toCharArray()[0] + "\t" + diff.asText(); } }