1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.time;
18
19 import java.util.Collection;
20 import java.util.concurrent.ConcurrentHashMap;
21 import java.util.concurrent.ConcurrentMap;
22 import java.util.function.BiFunction;
23
24 import org.orekit.frames.EOPEntry;
25 import org.orekit.frames.EOPHistory;
26 import org.orekit.utils.IERSConventions;
27
28
29
30
31
32
33
34
35
36
37 class PreloadedTimeScales extends AbstractTimeScales {
38
39
40 private final TAIScale tai;
41
42 private final UTCScale utc;
43
44 private final TTScale tt;
45
46 private final GalileoScale gst;
47
48 private final GLONASSScale glonass;
49
50 private final QZSSScale qzss;
51
52 private final GPSScale gps;
53
54 private final TCGScale tcg;
55
56 private final TDBScale tdb;
57
58 private final TCBScale tcb;
59
60 private final IRNSSScale irnss;
61
62 private final BDTScale bdt;
63
64 private final BiFunction<
65 ? super IERSConventions,
66 ? super TimeScales,
67 ? extends Collection<? extends EOPEntry>> eopSupplier;
68
69 private final ConcurrentMap<IERSConventions, Collection<? extends EOPEntry>> eopMap;
70
71
72
73
74
75
76
77 PreloadedTimeScales(
78 final Collection<? extends OffsetModel> leapSeconds,
79 final BiFunction<
80 ? super IERSConventions,
81 ? super TimeScales,
82 ? extends Collection<? extends EOPEntry>> eopSupplier) {
83 tai = new TAIScale();
84 tt = new TTScale();
85 gps = new GPSScale();
86 qzss = new QZSSScale();
87 gst = new GalileoScale();
88 irnss = new IRNSSScale();
89 bdt = new BDTScale();
90 tcg = new TCGScale(tt, tai);
91 utc = new UTCScale(tai, leapSeconds);
92 glonass = new GLONASSScale(utc);
93 tdb = new TDBScale(tt, getJ2000Epoch());
94 tcb = new TCBScale(tdb, tai);
95 final int n = IERSConventions.values().length;
96 eopMap = new ConcurrentHashMap<>(n);
97 this.eopSupplier = eopSupplier;
98 }
99
100 @Override
101 public TAIScale getTAI() {
102 return tai;
103 }
104
105 @Override
106 public UTCScale getUTC() {
107 return utc;
108 }
109
110 @Override
111 protected EOPHistory getEopHistory(final IERSConventions conventions,
112 final boolean simpleEOP) {
113 return new EOPHistory(
114 conventions,
115 eopMap.computeIfAbsent(conventions, c -> eopSupplier.apply(c, this)),
116 simpleEOP,
117 this);
118 }
119
120 @Override
121 public TTScale getTT() {
122 return tt;
123 }
124
125 @Override
126 public GalileoScale getGST() {
127 return gst;
128 }
129
130 @Override
131 public GLONASSScale getGLONASS() {
132 return glonass;
133 }
134
135 @Override
136 public QZSSScale getQZSS() {
137 return qzss;
138 }
139
140 @Override
141 public GPSScale getGPS() {
142 return gps;
143 }
144
145 @Override
146 public TCGScale getTCG() {
147 return tcg;
148 }
149
150 @Override
151 public TDBScale getTDB() {
152 return tdb;
153 }
154
155 @Override
156 public TCBScale getTCB() {
157 return tcb;
158 }
159
160 @Override
161 public IRNSSScale getIRNSS() {
162 return irnss;
163 }
164
165 @Override
166 public BDTScale getBDT() {
167 return bdt;
168 }
169
170 }
171