1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.data;
18
19 import org.orekit.bodies.LazyLoadedCelestialBodies;
20 import org.orekit.forces.gravity.potential.LazyLoadedGravityFields;
21 import org.orekit.frames.Frame;
22 import org.orekit.frames.LazyLoadedEop;
23 import org.orekit.frames.LazyLoadedFrames;
24 import org.orekit.models.earth.LazyLoadedGeoMagneticFields;
25 import org.orekit.time.LazyLoadedTimeScales;
26
27
28
29
30
31
32
33
34
35 public class LazyLoadedDataContext implements DataContext {
36
37
38 private final DataProvidersManager dataProvidersManager;
39
40 private final LazyLoadedEop eop;
41
42 private final LazyLoadedTimeScales timeScales;
43
44 private LazyLoadedFrames frames;
45
46 private LazyLoadedCelestialBodies bodies;
47
48 private final LazyLoadedGravityFields gravityFields;
49
50 private final LazyLoadedGeoMagneticFields geoMagneticFields;
51
52
53
54
55
56 public LazyLoadedDataContext() {
57 this.dataProvidersManager = new DataProvidersManager();
58 this.eop = new LazyLoadedEop(dataProvidersManager);
59 this.timeScales = new LazyLoadedTimeScales(eop);
60 this.gravityFields =
61 new LazyLoadedGravityFields(dataProvidersManager, timeScales.getTT());
62 this.geoMagneticFields = new LazyLoadedGeoMagneticFields(dataProvidersManager);
63
64
65
66 }
67
68
69
70
71
72
73
74 public DataProvidersManager getDataProvidersManager() {
75 return dataProvidersManager;
76 }
77
78 @Override
79 public LazyLoadedTimeScales getTimeScales() {
80 return timeScales;
81 }
82
83 @Override
84 public LazyLoadedFrames getFrames() {
85 synchronized (this) {
86 if (this.frames == null) {
87 this.frames = new LazyLoadedFrames(
88 eop, getTimeScales(), getCelestialBodies());
89 }
90 return this.frames;
91 }
92 }
93
94 @Override
95 public LazyLoadedCelestialBodies getCelestialBodies() {
96 synchronized (this) {
97 if (this.bodies == null) {
98 final Frame gcrf = Frame.getRoot();
99 this.bodies = new LazyLoadedCelestialBodies(
100 getDataProvidersManager(), getTimeScales(), gcrf);
101 }
102 return this.bodies;
103 }
104 }
105
106 @Override
107 public LazyLoadedGravityFields getGravityFields() {
108 return gravityFields;
109 }
110
111 @Override
112 public LazyLoadedGeoMagneticFields getGeoMagneticFields() {
113 return geoMagneticFields;
114 }
115
116 }