1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.files.ccsds.ndm.odm.ocm;
19
20 import java.io.IOException;
21
22 import org.orekit.files.ccsds.definitions.TimeConverter;
23 import org.orekit.files.ccsds.section.AbstractWriter;
24 import org.orekit.files.ccsds.utils.generation.Generator;
25 import org.orekit.utils.units.Unit;
26
27
28
29
30
31 class OrbitDeterminationWriter extends AbstractWriter {
32
33
34 private final OrbitDetermination od;
35
36
37 private final TimeConverter timeConverter;
38
39
40
41
42
43 OrbitDeterminationWriter(final OrbitDetermination orbitDetermination,
44 final TimeConverter timeConverter) {
45 super(OcmDataSubStructureKey.od.name(), OcmDataSubStructureKey.OD.name());
46 this.od = orbitDetermination;
47 this.timeConverter = timeConverter;
48 }
49
50
51 @Override
52 protected void writeContent(final Generator generator) throws IOException {
53
54
55 generator.writeComments(od.getComments());
56
57
58 generator.writeEntry(OrbitDeterminationKey.OD_ID.name(), od.getId(), null, false);
59 generator.writeEntry(OrbitDeterminationKey.OD_PREV_ID.name(), od.getPrevId(), null, false);
60 if (od.getMethod() != null) {
61 final StringBuilder builder = new StringBuilder();
62 builder.append(od.getMethod().getName());
63 if (od.getMethod().getTool() != null) {
64 builder.append(':');
65 builder.append(od.getMethod().getTool());
66 }
67 generator.writeEntry(OrbitDeterminationKey.OD_METHOD.name(), builder.toString(), null, false);
68 }
69
70
71 generator.writeEntry(OrbitDeterminationKey.OD_EPOCH.name(), timeConverter, od.getEpoch(), false);
72 generator.writeEntry(OrbitDeterminationKey.DAYS_SINCE_FIRST_OBS.name(), od.getTimeSinceFirstObservation(), Unit.DAY, false);
73 generator.writeEntry(OrbitDeterminationKey.DAYS_SINCE_LAST_OBS.name(), od.getTimeSinceLastObservation(), Unit.DAY, false);
74 generator.writeEntry(OrbitDeterminationKey.RECOMMENDED_OD_SPAN.name(), od.getRecommendedOdSpan(), Unit.DAY, false);
75 generator.writeEntry(OrbitDeterminationKey.ACTUAL_OD_SPAN.name(), od.getActualOdSpan(), Unit.DAY, false);
76
77
78 generator.writeEntry(OrbitDeterminationKey.OBS_AVAILABLE.name(), od.getObsAvailable(), false);
79 generator.writeEntry(OrbitDeterminationKey.OBS_USED.name(), od.getObsUsed(), false);
80 generator.writeEntry(OrbitDeterminationKey.TRACKS_AVAILABLE.name(), od.getTracksAvailable(), false);
81 generator.writeEntry(OrbitDeterminationKey.TRACKS_USED.name(), od.getTracksUsed(), false);
82 generator.writeEntry(OrbitDeterminationKey.MAXIMUM_OBS_GAP.name(), od.getMaximumObsGap(), Unit.DAY, false);
83
84
85 generator.writeEntry(OrbitDeterminationKey.OD_EPOCH_EIGMAJ.name(), od.getEpochEigenMaj(), Unit.METRE, false);
86 generator.writeEntry(OrbitDeterminationKey.OD_EPOCH_EIGMED.name(), od.getEpochEigenMed(), Unit.METRE, false);
87 generator.writeEntry(OrbitDeterminationKey.OD_EPOCH_EIGMIN.name(), od.getEpochEigenMin(), Unit.METRE, false);
88 generator.writeEntry(OrbitDeterminationKey.OD_MAX_PRED_EIGMAJ.name(), od.getMaxPredictedEigenMaj(), Unit.METRE, false);
89 generator.writeEntry(OrbitDeterminationKey.OD_MIN_PRED_EIGMIN.name(), od.getMinPredictedEigenMin(), Unit.METRE, false);
90 generator.writeEntry(OrbitDeterminationKey.OD_CONFIDENCE.name(), od.getConfidence(), Unit.PERCENT, false);
91 generator.writeEntry(OrbitDeterminationKey.GDOP.name(), od.getGdop(), Unit.ONE, false);
92
93
94 generator.writeEntry(OrbitDeterminationKey.SOLVE_N.name(), od.getSolveN(), false);
95 generator.writeEntry(OrbitDeterminationKey.SOLVE_STATES.name(), od.getSolveStates(), false);
96 generator.writeEntry(OrbitDeterminationKey.CONSIDER_N.name(), od.getConsiderN(), false);
97 generator.writeEntry(OrbitDeterminationKey.CONSIDER_PARAMS.name(), od.getConsiderParameters(), false);
98 generator.writeEntry(OrbitDeterminationKey.SENSORS_N.name(), od.getSensorsN(), false);
99 generator.writeEntry(OrbitDeterminationKey.SENSORS.name(), od.getSensors(), false);
100
101
102 generator.writeEntry(OrbitDeterminationKey.WEIGHTED_RMS.name(), od.getWeightedRms(), Unit.ONE, false);
103 generator.writeEntry(OrbitDeterminationKey.DATA_TYPES.name(), od.getDataTypes(), false);
104
105 }
106
107 }