View Javadoc
1   /*
2    * This file is part of ***  M y C o R e  ***
3    * See http://www.mycore.de/ for details.
4    *
5    * MyCoRe is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    *
10   * MyCoRe is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   *
15   * You should have received a copy of the GNU General Public License
16   * along with MyCoRe.  If not, see <http://www.gnu.org/licenses/>.
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  }