Skip to content

Commit b8b66a6

Browse files
committed
refactor transformation inheritance across versions to allow for better type checks
1 parent e04caa6 commit b8b66a6

24 files changed

Lines changed: 266 additions & 190 deletions

src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* <p>Readers can deserialize and retain metadata for unknown/extension transform types
1515
* without failing hard.
1616
*/
17-
public final class GenericCoordinateTransformation extends CoordinateTransformation {
17+
public class GenericCoordinateTransformation extends CoordinateTransformation {
1818
public final Map<String, Object> raw = new LinkedHashMap<>();
1919

2020
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)

src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import javax.annotation.Nullable;
77

8-
public final class IdentityCoordinateTransformation extends CoordinateTransformation {
8+
public class IdentityCoordinateTransformation extends CoordinateTransformation {
99
@Nullable public final String path;
1010

1111
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)

src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import javax.annotation.Nullable;
77
import java.util.List;
88

9-
public final class ScaleCoordinateTransformation extends CoordinateTransformation {
9+
public class ScaleCoordinateTransformation extends CoordinateTransformation {
1010
@Nullable public final List<Double> scale;
1111
@Nullable public final String path;
1212

src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import javax.annotation.Nullable;
77
import java.util.List;
88

9-
public final class TranslationCoordinateTransformation extends CoordinateTransformation {
9+
public class TranslationCoordinateTransformation extends CoordinateTransformation {
1010
@Nullable public final List<Double> translation;
1111
@Nullable public final String path;
1212

src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ private static CoordinateTransformation mapTransform(
266266
if (ct instanceof GenericCoordinateTransformation) {
267267
GenericCoordinateTransformation t = (GenericCoordinateTransformation) ct;
268268
dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic =
269-
new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation(ct.type);
269+
new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation(ct.getType());
270270
for (Map.Entry<String, Object> entry : t.raw.entrySet()) {
271271
generic.raw.put(entry.getKey(), convertRawValue(entry.getValue()));
272272
}
@@ -360,7 +360,7 @@ private static CoordinateTransformation mapTransform(
360360
}
361361
return generic;
362362
}
363-
return new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation(ct.type);
363+
return new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation(ct.getType());
364364
}
365365

366366
private static Object convertRawValue(Object value) {

src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -169,20 +169,20 @@ private static void addTransformationEdges(
169169
if (transformation == null) {
170170
return;
171171
}
172-
String edgeName = transformation.name != null ? transformation.name : inheritedName;
173-
SceneReferenceResolver.ResolvedCoordinateSystem input = resolver.resolve(transformation.input);
174-
SceneReferenceResolver.ResolvedCoordinateSystem output = resolver.resolve(transformation.output);
172+
String edgeName = transformation.getName() != null ? transformation.getName() : inheritedName;
173+
SceneReferenceResolver.ResolvedCoordinateSystem input = resolver.resolve(transformation.getInput());
174+
SceneReferenceResolver.ResolvedCoordinateSystem output = resolver.resolve(transformation.getOutput());
175175

176-
if (transformation.input != null && input == null) {
177-
warnings.add("Unresolved scene input coordinate system: " + transformation.input);
176+
if (transformation.getInput() != null && input == null) {
177+
warnings.add("Unresolved scene input coordinate system: " + transformation.getInput());
178178
}
179-
if (transformation.output != null && output == null) {
180-
warnings.add("Unresolved scene output coordinate system: " + transformation.output);
179+
if (transformation.getOutput() != null && output == null) {
180+
warnings.add("Unresolved scene output coordinate system: " + transformation.getOutput());
181181
}
182182

183183
edges.add(new SceneTransformationGraph.Edge(
184184
edgeName,
185-
transformation.type,
185+
transformation.getType(),
186186
input != null ? input.id : null,
187187
output != null ? output.id : null,
188188
normalizeCoordinateTransformPath(extractPath(transformation))));

src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@
22

33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
56

67
import javax.annotation.Nullable;
78
import java.util.List;
89

9-
public final class AffineCoordinateTransformation extends CoordinateTransformation {
10+
public final class AffineCoordinateTransformation extends BaseCoordinateTransformation {
1011
@Nullable public final List<List<Double>> affine;
1112
@Nullable public final String path;
1213

1314
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
1415
public AffineCoordinateTransformation(
15-
@Nullable @JsonProperty("input") String input,
16-
@Nullable @JsonProperty("output") String output,
16+
@Nullable @JsonProperty("input") @JsonDeserialize(using = CoordinateSystemRefSerde.Deserializer.class) String input,
17+
@Nullable @JsonProperty("output") @JsonDeserialize(using = CoordinateSystemRefSerde.Deserializer.class) String output,
1718
@Nullable @JsonProperty("name") String name,
1819
@Nullable @JsonProperty("affine") List<List<Double>> affine,
1920
@Nullable @JsonProperty("path") String path
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform;
2+
3+
import javax.annotation.Nullable;
4+
5+
abstract class BaseCoordinateTransformation implements CoordinateTransformation {
6+
public final String type;
7+
@Nullable public final String input;
8+
@Nullable public final String output;
9+
@Nullable public final String name;
10+
11+
protected BaseCoordinateTransformation(
12+
String type,
13+
@Nullable String input,
14+
@Nullable String output,
15+
@Nullable String name
16+
) {
17+
this.type = type;
18+
this.input = input;
19+
this.output = output;
20+
this.name = name;
21+
}
22+
23+
@Override
24+
public String getType() {
25+
return type;
26+
}
27+
28+
@Override
29+
public String getInput() {
30+
return input;
31+
}
32+
33+
@Override
34+
public String getOutput() {
35+
return output;
36+
}
37+
38+
@Override
39+
public String getName() {
40+
return name;
41+
}
42+
}

src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@
22

33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
56

67
import javax.annotation.Nullable;
78

8-
public final class BijectionCoordinateTransformation extends CoordinateTransformation {
9+
public final class BijectionCoordinateTransformation extends BaseCoordinateTransformation {
910
@Nullable public final CoordinateTransformation forward;
1011
@Nullable public final CoordinateTransformation inverse;
1112

1213
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
1314
public BijectionCoordinateTransformation(
14-
@Nullable @JsonProperty("input") String input,
15-
@Nullable @JsonProperty("output") String output,
15+
@Nullable @JsonProperty("input") @JsonDeserialize(using = CoordinateSystemRefSerde.Deserializer.class) String input,
16+
@Nullable @JsonProperty("output") @JsonDeserialize(using = CoordinateSystemRefSerde.Deserializer.class) String output,
1617
@Nullable @JsonProperty("name") String name,
1718
@Nullable @JsonProperty("forward") CoordinateTransformation forward,
1819
@Nullable @JsonProperty("inverse") CoordinateTransformation inverse

src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@
22

33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
56

67
import javax.annotation.Nullable;
78
import java.util.List;
89

9-
public final class ByDimensionCoordinateTransformation extends CoordinateTransformation {
10+
public final class ByDimensionCoordinateTransformation extends BaseCoordinateTransformation {
1011
@Nullable public final List<ByDimensionTransformation> transformations;
1112

1213
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
1314
public ByDimensionCoordinateTransformation(
14-
@Nullable @JsonProperty("input") String input,
15-
@Nullable @JsonProperty("output") String output,
15+
@Nullable @JsonProperty("input") @JsonDeserialize(using = CoordinateSystemRefSerde.Deserializer.class) String input,
16+
@Nullable @JsonProperty("output") @JsonDeserialize(using = CoordinateSystemRefSerde.Deserializer.class) String output,
1617
@Nullable @JsonProperty("name") String name,
1718
@Nullable @JsonProperty("transformations") List<ByDimensionTransformation> transformations
1819
) {

0 commit comments

Comments
 (0)