1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.rinex.navigation;
18
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import org.orekit.files.rinex.section.Label;
23 import org.orekit.files.rinex.section.RinexBaseHeader;
24 import org.orekit.files.rinex.utils.RinexFileType;
25 import org.orekit.files.rinex.utils.ParsingUtils;
26 import org.orekit.gnss.SatelliteSystem;
27 import org.orekit.time.TimeScales;
28
29
30
31
32
33 public class RinexNavigationHeader extends RinexBaseHeader {
34
35
36 public static final int LABEL_INDEX = 60;
37
38
39 private final List<IonosphericCorrection> ionosphericCorrections;
40
41
42 private final List<TimeSystemCorrection> timeSystemCorrections;
43
44
45 private int mergedFiles;
46
47
48
49 public RinexNavigationHeader() {
50 super(RinexFileType.NAVIGATION);
51 this.ionosphericCorrections = new ArrayList<>();
52 this.timeSystemCorrections = new ArrayList<>();
53 this.mergedFiles = -1;
54 }
55
56
57 @Override
58 public SatelliteSystem parseSatelliteSystem(final String line, final SatelliteSystem defaultSatelliteSystem) {
59 if (getFormatVersion() < 3.0) {
60
61
62
63 final String entry = line.substring(0, 80).toUpperCase();
64 for (final SatelliteSystem satelliteSystem : SatelliteSystem.values()) {
65 if (entry.contains(satelliteSystem.name())) {
66
67 return satelliteSystem;
68 }
69 }
70
71
72 return defaultSatelliteSystem;
73
74 } else {
75
76 return SatelliteSystem.parseSatelliteSystem(line.substring(40, 41), defaultSatelliteSystem);
77 }
78 }
79
80
81 @Override
82 public void parseProgramRunByDate(final String line, final TimeScales timeScales) {
83 parseProgramRunByDate(ParsingUtils.parseString(line, 0, 20),
84 ParsingUtils.parseString(line, 20, 20),
85 ParsingUtils.parseString(line, 40, 20),
86 timeScales);
87 }
88
89
90
91
92
93 public List<IonosphericCorrection> getIonosphericCorrections() {
94 return ionosphericCorrections;
95 }
96
97
98
99
100
101 public void addIonosphericCorrection(final IonosphericCorrection ionosphericCorrection) {
102 this.ionosphericCorrections.add(ionosphericCorrection);
103 }
104
105
106
107
108
109
110
111
112 public List<TimeSystemCorrection> getTimeSystemCorrections() {
113 return timeSystemCorrections;
114 }
115
116
117
118
119
120 public void addTimeSystemCorrections(final TimeSystemCorrection timeSystemCorrection) {
121 this.timeSystemCorrections.add(timeSystemCorrection);
122 }
123
124
125
126
127
128 public int getMergedFiles() {
129 return mergedFiles;
130 }
131
132
133
134
135
136 public void setMergedFiles(final int mergedFiles) {
137 this.mergedFiles = mergedFiles;
138 }
139
140
141 @Override
142 public void checkType(final String line, final String name) {
143 checkType(line, 20, name);
144 }
145
146
147 @Override
148 public int getLabelIndex() {
149 return LABEL_INDEX;
150 }
151
152
153 @Override
154 public boolean matchFound(final Label label, final String line) {
155 return label.matches(line.substring(getLabelIndex()).trim());
156 }
157
158 }