Kontinuation commented on code in PR #2971: URL: https://github.com/apache/parquet-java/pull/2971#discussion_r1962806692
########## parquet-column/src/main/java/org/apache/parquet/schema/LogicalTypeAnnotation.java: ########## @@ -1091,6 +1135,136 @@ public int hashCode() { } } + public static class GeometryLogicalTypeAnnotation extends LogicalTypeAnnotation { + private final String crs; + + private GeometryLogicalTypeAnnotation(String crs) { + this.crs = crs; + } + + @Override + @Deprecated + public OriginalType toOriginalType() { + return null; + } + + @Override + public <T> Optional<T> accept(LogicalTypeAnnotationVisitor<T> logicalTypeAnnotationVisitor) { + return logicalTypeAnnotationVisitor.visit(this); + } + + @Override + LogicalTypeToken getType() { + return LogicalTypeToken.GEOMETRY; + } + + @Override + protected String typeParametersAsString() { + StringBuilder sb = new StringBuilder(); + sb.append("("); + sb.append(","); + if (crs != null && !crs.isEmpty()) { + sb.append(","); + sb.append(crs); + } + sb.append(")"); + return sb.toString(); + } + + public String getCrs() { + return crs; + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof GeometryLogicalTypeAnnotation)) { + return false; + } + GeometryLogicalTypeAnnotation other = (GeometryLogicalTypeAnnotation) obj; + return crs.equals(other.crs); + } + + @Override + public int hashCode() { + return Objects.hash(crs); + } + + @Override + PrimitiveStringifier valueStringifier(PrimitiveType primitiveType) { + return PrimitiveStringifier.WKB_STRINGIFIER; + } + } + + public static class GeographyLogicalTypeAnnotation extends LogicalTypeAnnotation { + private final String crs; + private final String edgeAlgorithm; + + private GeographyLogicalTypeAnnotation(String crs, String edgeAlgorithm) { + this.crs = crs; + this.edgeAlgorithm = edgeAlgorithm; + } + + @Override + @Deprecated + public OriginalType toOriginalType() { + return null; + } + + @Override + public <T> Optional<T> accept(LogicalTypeAnnotationVisitor<T> logicalTypeAnnotationVisitor) { + return logicalTypeAnnotationVisitor.visit(this); + } + + @Override + LogicalTypeToken getType() { + return LogicalTypeToken.GEOGRAPHY; + } + + @Override + protected String typeParametersAsString() { + StringBuilder sb = new StringBuilder(); + sb.append("("); + sb.append(","); + if (crs != null && !crs.isEmpty()) { + sb.append(","); + sb.append(crs); + } + if (edgeAlgorithm != null) { + sb.append(","); + sb.append(edgeAlgorithm); + } + sb.append(")"); + return sb.toString(); + } + + public String getCrs() { + return crs; + } + + public String getEdgeAlgorithm() { + return edgeAlgorithm; + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof GeographyLogicalTypeAnnotation)) { + return false; + } + GeographyLogicalTypeAnnotation other = (GeographyLogicalTypeAnnotation) obj; + return crs.equals(other.crs) && edgeAlgorithm == other.edgeAlgorithm; Review Comment: We'd better use `equals` instead of `==` to compare Strings to be safe, even when the String instances are being reused. I think this is left out when reverting edgeAlgorithm from enum to String. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@parquet.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@parquet.apache.org For additional commands, e-mail: issues-h...@parquet.apache.org