PreloadedTimeScales.java
- /* Contributed in the public domain.
- * Licensed to CS GROUP (CS) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * CS licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.orekit.time;
- import java.util.Collection;
- import java.util.concurrent.ConcurrentHashMap;
- import java.util.concurrent.ConcurrentMap;
- import java.util.function.BiFunction;
- import org.orekit.frames.EOPEntry;
- import org.orekit.frames.EOPHistory;
- import org.orekit.utils.IERSConventions;
- /**
- * A set of time scales that creates most time scales when constructed. The exceptions are
- * {@link #getUT1(IERSConventions, boolean)} and {@link #getGMST(IERSConventions,
- * boolean)} where six different instances exist based on conventions and simple EOP
- * settings.
- *
- * @author Evan Ward
- * @since 10.1
- */
- class PreloadedTimeScales extends AbstractTimeScales {
- /** TAI time scale. */
- private final TAIScale tai;
- /** UTC time scale. */
- private final UTCScale utc;
- /** TT time scale. */
- private final TTScale tt;
- /** Galileo time scale. */
- private final GalileoScale gst;
- /** GLONASS time scale. */
- private final GLONASSScale glonass;
- /** QZSS time scale. */
- private final QZSSScale qzss;
- /** GPS time scale. */
- private final GPSScale gps;
- /** TCG time scale. */
- private final TCGScale tcg;
- /** Tdb time scale. */
- private final TDBScale tdb;
- /** TCB time scale. */
- private final TCBScale tcb;
- /** IRNSS time scale. */
- private final IRNSSScale irnss;
- /** BDT time scale. */
- private final BDTScale bdt;
- /** Provider of EOP data. */
- private final BiFunction<
- ? super IERSConventions,
- ? super TimeScales,
- ? extends Collection<? extends EOPEntry>> eopSupplier;
- /** Cached EOP data. */
- private final ConcurrentMap<IERSConventions, Collection<? extends EOPEntry>> eopMap;
- /**
- * Create a new set of time scales from the given data.
- *
- * @param leapSeconds for UTC.
- * @param eopSupplier provides EOP for UT1.
- */
- PreloadedTimeScales(
- final Collection<? extends OffsetModel> leapSeconds,
- final BiFunction<
- ? super IERSConventions,
- ? super TimeScales,
- ? extends Collection<? extends EOPEntry>> eopSupplier) {
- tai = new TAIScale();
- tt = new TTScale();
- gps = new GPSScale();
- qzss = new QZSSScale();
- gst = new GalileoScale();
- irnss = new IRNSSScale();
- bdt = new BDTScale();
- tcg = new TCGScale(tt, tai);
- utc = new UTCScale(tai, leapSeconds);
- glonass = new GLONASSScale(utc);
- tdb = new TDBScale(tt, getJ2000Epoch());
- tcb = new TCBScale(tdb, tai);
- final int n = IERSConventions.values().length;
- eopMap = new ConcurrentHashMap<>(n);
- this.eopSupplier = eopSupplier;
- }
- @Override
- public TAIScale getTAI() {
- return tai;
- }
- @Override
- public UTCScale getUTC() {
- return utc;
- }
- @Override
- protected EOPHistory getEopHistory(final IERSConventions conventions,
- final boolean simpleEOP) {
- final Collection<? extends EOPEntry> data;
- synchronized (this) {
- data = eopMap.computeIfAbsent(conventions, c -> eopSupplier.apply(c, this));
- }
- return new EOPHistory(conventions, EOPHistory.DEFAULT_INTERPOLATION_DEGREE,
- data, simpleEOP, this);
- }
- @Override
- public TTScale getTT() {
- return tt;
- }
- @Override
- public GalileoScale getGST() {
- return gst;
- }
- @Override
- public GLONASSScale getGLONASS() {
- return glonass;
- }
- @Override
- public QZSSScale getQZSS() {
- return qzss;
- }
- @Override
- public GPSScale getGPS() {
- return gps;
- }
- @Override
- public TCGScale getTCG() {
- return tcg;
- }
- @Override
- public TDBScale getTDB() {
- return tdb;
- }
- @Override
- public TCBScale getTCB() {
- return tcb;
- }
- @Override
- public IRNSSScale getIRNSS() {
- return irnss;
- }
- @Override
- public BDTScale getBDT() {
- return bdt;
- }
- }