2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.synopanalyzer.internal.synop;
15 import java.util.List;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
20 * The {@link SynopMobile} is responsible for analyzing Mobile station
21 * specifics Synop messages
23 * @author Jonarzz - Initial contribution
26 public class SynopMobile extends Synop {
27 private float latitude;
28 private float longitude;
30 private int verticalQuadrantMultiplier;
31 private int horizontalQuadrantMultiplier;
33 public SynopMobile(List<String> stringArray) {
37 setLongitudeAndQuadrant();
41 protected void setHorizontalVisibilityInt() {
43 if (stringArray.size() < 6 || !isValidString((temp = stringArray.get(5)))) {
44 horizontalVisibilityInt = INITIAL_VALUE;
49 horizontalVisibilityInt = Integer.parseInt(temp.substring(3, 5));
50 } catch (NumberFormatException e) {
51 horizontalVisibilityInt = INITIAL_VALUE;
56 protected void setTemperatureString() {
58 if (stringArray.size() < 8 || !isValidString((temp = stringArray.get(7)))) {
62 temperatureString = temp.substring(1, 5);
66 protected void setWindString() {
68 if (stringArray.size() < 7 || !isValidString((temp = stringArray.get(6)))) {
76 protected void setPressureString() {
80 private void setLatitude() {
82 if (stringArray.size() < 4 || !isValidString((temp = stringArray.get(3)))) {
86 String latitudeString = temp.substring(2, 5);
90 tempInt = Integer.parseInt(latitudeString);
91 } catch (NumberFormatException e) {
92 latitude = INITIAL_VALUE;
96 latitude = (float) tempInt / 10;
99 private void setLongitudeAndQuadrant() {
101 if (stringArray.size() < 5 || !isValidString((temp = stringArray.get(4)))) {
105 setQuadrantMultipliers(temp.charAt(0));
106 setLongitude(temp.substring(1, 5));
109 private void setQuadrantMultipliers(char q) {
112 verticalQuadrantMultiplier = 1;
113 horizontalQuadrantMultiplier = 1;
116 verticalQuadrantMultiplier = -1;
117 horizontalQuadrantMultiplier = 1;
120 verticalQuadrantMultiplier = -1;
121 horizontalQuadrantMultiplier = -1;
124 verticalQuadrantMultiplier = 1;
125 horizontalQuadrantMultiplier = -1;
128 verticalQuadrantMultiplier = 0;
129 horizontalQuadrantMultiplier = 0;
134 private void setLongitude(String str) {
138 tempInt = Integer.parseInt(str);
139 } catch (NumberFormatException e) {
140 longitude = INITIAL_VALUE;
144 longitude = (float) tempInt / 10;
147 public float getLatitude() {
151 public float getLongitude() {
155 public int getVerticalQuadrantMultiplier() {
156 return verticalQuadrantMultiplier;
159 public int getHorizontalQuadrantMultiplier() {
160 return horizontalQuadrantMultiplier;