1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.mycore.iiif.image.parser;
20
21 import org.mycore.iiif.image.model.MCRIIIFImageTargetRotation;
22
23 public class MCRIIIFRotationParser {
24
25 private final String rotation;
26
27 public MCRIIIFRotationParser(String rotation) {
28 this.rotation = rotation;
29 }
30
31 public MCRIIIFImageTargetRotation parse() {
32 boolean mirror = this.rotation.startsWith("!");
33
34 String rotationNumberString = mirror ? this.rotation.substring(1) : this.rotation;
35 Double rotationNumber;
36 try {
37 rotationNumber = Double.parseDouble(rotationNumberString);
38 } catch (NumberFormatException e) {
39 throw new IllegalArgumentException(rotationNumberString + " cannot parsed to a rotation value!");
40 }
41
42 if (rotationNumber < 0 || rotationNumber > 360) {
43 throw new IllegalArgumentException(rotationNumber + " is not a valid rotation value!");
44 }
45
46 return new MCRIIIFImageTargetRotation(mirror, rotationNumber);
47 }
48 }