1 /* Copyright 2022-2025 Luc Maisonobe
2 * Licensed to CS GROUP (CS) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * CS licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.orekit.files.sp3;
18
19 import java.util.HashMap;
20 import java.util.Map;
21
22 import org.orekit.errors.OrekitIllegalArgumentException;
23 import org.orekit.errors.OrekitMessages;
24
25 /** Enumerate for data used.
26 * @author Luc Maisonobe
27 * @since 12.0
28 */
29 public enum DataUsed {
30
31 /** Undifferenciated carrier phase. */
32 UNDIFFERENTIATED_CARRIER_PHASE("u"),
33
34 /** Change in undifferenciated carrier phase. */
35 CHANGE_IN_UNDIFFERENTIATED_CARRIER_PHASE("du"),
36
37 /** 2-receiver/1-satellite carrier phase. */
38 TWO_RECEIVER_ONE_SATELLITE_CARRIER_PHASE("s"),
39
40 /** Change in 2-receiver/1-satellite carrier phase. */
41 CHANGE_IN_TWO_RECEIVER_ONE_SATELLITE_CARRIER_PHASE("ds"),
42
43 /** 2-receiver/2-satellite carrier phase. */
44 TWO_RECEIVER_TWO_SATELLITE_CARRIER_PHASE("d"),
45
46 /** Change in 2-receiver/2-satellite carrier phase. */
47 CHANGE_IN_TWO_RECEIVER_TWO_SATELLITE_CARRIER_PHASE("dd"),
48
49 /** Undifferenciated code phase. */
50 UNDIFFERENTIATED_CODE_PHASE("U"),
51
52 /** Change in undifferenciated code phase. */
53 CHANGE_IN_UNDIFFERENTIATED_CODE_PHASE("dU"),
54
55 /** 2-receiver/1-satellite code phase. */
56 TWO_RECEIVER_ONE_SATELLITE_CODE_PHASE("S"),
57
58 /** Change in 2-receiver/1-satellite code phase. */
59 CHANGE_IN_TWO_RECEIVER_ONE_SATELLITE_CODE_PHASE("dS"),
60
61 /** 2-receiver/2-satellite code phase. */
62 TWO_RECEIVER_TWO_SATELLITE_CODE_PHASE("D"),
63
64 /** Change in 2-receiver/2-satellite code phase. */
65 CHANGE_IN_TWO_RECEIVER_TWO_SATELLITE_CODE_PHASE("dD"),
66
67 /** Satellite Laser Ranging. */
68 SATELLITE_LASER_RANGING("SLR"),
69
70 /** Mixed data. */
71 MIXED("mixed"),
72
73 /** Orbit data. */
74 ORBIT("ORBIT");
75
76 /** Numbers map. */
77 private static final Map<String, DataUsed> MAP = new HashMap<>();
78 static {
79 for (final DataUsed dataUsed : values()) {
80 MAP.put(dataUsed.getKey(), dataUsed);
81 }
82 }
83
84 /** Key for the data used. */
85 private final String key;
86
87 /** Simple constructor.
88 * @param key for the data used
89 */
90 DataUsed(final String key) {
91 this.key = key;
92 }
93
94 /** Get the key for the data used.
95 * @return key for the data used
96 */
97 public String getKey() {
98 return key;
99 }
100
101 /** Parse the string to get the data used.
102 * @param s string to parse
103 * @param fileName file name to generate the error message
104 * @param version format version
105 * @return the data used corresponding to the string
106 * @exception IllegalArgumentException if the string does not correspond to a data used
107 */
108 public static DataUsed parse(final String s, final String fileName, final char version) {
109 final DataUsed dataUsed = MAP.get(s);
110 if (dataUsed == null) {
111 throw new OrekitIllegalArgumentException(OrekitMessages.SP3_INVALID_HEADER_ENTRY, "data used", s, fileName, version);
112 }
113 return dataUsed;
114 }
115
116 }