1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.files.ccsds.ndm.adm.apm;
19
20 import java.io.IOException;
21
22 import org.hipparchus.geometry.euclidean.threed.Vector3D;
23 import org.orekit.files.ccsds.definitions.TimeConverter;
24 import org.orekit.files.ccsds.definitions.Units;
25 import org.orekit.files.ccsds.section.AbstractWriter;
26 import org.orekit.files.ccsds.utils.generation.Generator;
27 import org.orekit.utils.units.Unit;
28
29
30
31
32
33 class ManeuverWriter extends AbstractWriter {
34
35
36
37
38 private final double formatVersion;
39
40
41 private final Maneuver maneuver;
42
43
44 private final TimeConverter timeConverter;
45
46
47
48
49
50
51
52
53 ManeuverWriter(final double formatVersion, final String xmlTag, final String kvnTag,
54 final Maneuver maneuver, final TimeConverter timeConverter) {
55 super(xmlTag, kvnTag);
56 this.formatVersion = formatVersion;
57 this.maneuver = maneuver;
58 this.timeConverter = timeConverter;
59 }
60
61
62 @Override
63 protected void writeContent(final Generator generator) throws IOException {
64
65 generator.writeComments(maneuver.getComments());
66
67
68 generator.writeEntry(ManeuverKey.MAN_EPOCH_START.name(), timeConverter, maneuver.getEpochStart(), true, true);
69 generator.writeEntry(ManeuverKey.MAN_DURATION.name(), maneuver.getDuration(), Unit.SECOND, true);
70
71
72 generator.writeEntry(ManeuverKey.MAN_REF_FRAME.name(), maneuver.getFrame().getName(), null, false);
73
74
75 final Vector3D torque = maneuver.getTorque();
76 if (formatVersion < 2.0) {
77 generator.writeEntry(ManeuverKey.MAN_TOR_1.name(), torque.getX(), Units.N_M, true);
78 generator.writeEntry(ManeuverKey.MAN_TOR_2.name(), torque.getY(), Units.N_M, true);
79 generator.writeEntry(ManeuverKey.MAN_TOR_3.name(), torque.getZ(), Units.N_M, true);
80 } else {
81 generator.writeEntry(ManeuverKey.MAN_TOR_X.name(), torque.getX(), Units.N_M, true);
82 generator.writeEntry(ManeuverKey.MAN_TOR_Y.name(), torque.getY(), Units.N_M, true);
83 generator.writeEntry(ManeuverKey.MAN_TOR_Z.name(), torque.getZ(), Units.N_M, true);
84 generator.writeEntry(ManeuverKey.MAN_DELTA_MASS.name(), maneuver.getDeltaMass(), Unit.KILOGRAM, true);
85 }
86
87 }
88
89 }