1 /* Contributed in the public domain.
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.data;
18
19 import org.orekit.annotation.DefaultDataContext;
20 import org.orekit.bodies.CelestialBodies;
21 import org.orekit.forces.gravity.potential.GravityFields;
22 import org.orekit.frames.Frames;
23 import org.orekit.frames.FramesFactory;
24 import org.orekit.models.earth.GeoMagneticFields;
25 import org.orekit.models.earth.ionosphere.KlobucharIonoCoefficientsLoader;
26 import org.orekit.time.TimeScales;
27 import org.orekit.time.TimeScalesFactory;
28
29 /**
30 * Provides auxiliary data for portions of the application.
31 *
32 * @author Evan Ward
33 * @since 10.1
34 */
35 public interface DataContext {
36
37 /**
38 * Get the default data context that is used to implement the static factories ({@link
39 * TimeScalesFactory}, {@link FramesFactory}, etc) and loaders that feed themselves
40 * (e.g. {@link KlobucharIonoCoefficientsLoader}). It is used to maintain
41 * compatibility with auxiliary data loading in Orekit 10.0.
42 *
43 * @return Orekit's default data context.
44 */
45 @DefaultDataContext
46 static LazyLoadedDataContext getDefault() {
47 return DefaultDataContextHolder.getInstance();
48 }
49
50 /**
51 * Set the default data context that is used to implement Orekit's static factories.
52 *
53 * <p> Calling this method will not modify any instances already retrieved from
54 * Orekit's static factories. In general this method should only be called at
55 * application start up before any of the static factories are used.
56 *
57 * @param context the new data context.
58 * @see #getDefault()
59 */
60 static void setDefault(final LazyLoadedDataContext context) {
61 DefaultDataContextHolder.setInstance(context);
62 }
63
64 /**
65 * Get a factory for constructing {@link org.orekit.time.TimeScale}s based on the auxiliary data in
66 * this context.
67 *
68 * @return the set of common time scales using this data context.
69 */
70 TimeScales getTimeScales();
71
72 /**
73 * Get a factory constructing {@link org.orekit.frames.Frame}s based on the auxiliary data in this
74 * context.
75 *
76 * @return the set of common reference frames using this data context.
77 */
78 Frames getFrames();
79
80 /**
81 * Get a factory constructing {@link org.orekit.bodies.CelestialBody}s based on the auxiliary data in
82 * this context.
83 *
84 * @return the set of common celestial bodies using this data context.
85 */
86 CelestialBodies getCelestialBodies();
87
88 /**
89 * Get a factory constructing gravity fields based on the auxiliary data in this
90 * context.
91 *
92 * @return the gravity fields using this data context.
93 */
94 GravityFields getGravityFields();
95
96 /**
97 * Get a factory constructing {@link org.orekit.models.earth.GeoMagneticField}s based on the auxiliary
98 * data in this context.
99 *
100 * @return the geomagnetic fields using this data context.
101 */
102 GeoMagneticFields getGeoMagneticFields();
103
104 }