1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.cdm;
18
19 import java.io.IOException;
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.orekit.files.ccsds.definitions.BodyFacade;
24 import org.orekit.files.ccsds.section.AbstractWriter;
25 import org.orekit.files.ccsds.section.XmlStructureKey;
26 import org.orekit.files.ccsds.utils.generation.Generator;
27
28
29
30
31
32
33
34 public class CdmMetadataWriter extends AbstractWriter {
35
36
37 private final CdmMetadata metadata;
38
39
40
41
42 public CdmMetadataWriter(final CdmMetadata metadata) {
43 super(XmlStructureKey.metadata.name(), null);
44 this.metadata = metadata;
45 }
46
47
48 @Override
49 protected void writeContent(final Generator generator) throws IOException {
50
51 generator.writeComments(metadata.getComments());
52
53
54 generator.writeEntry(CdmMetadataKey.OBJECT.name(),
55 metadata.getObject(), null, true);
56 generator.writeEntry(CdmMetadataKey.OBJECT_DESIGNATOR.name(),
57 metadata.getObjectDesignator(), null, true);
58 generator.writeEntry(CdmMetadataKey.CATALOG_NAME.name(),
59 metadata.getCatalogName(), null, true);
60 generator.writeEntry(CdmMetadataKey.OBJECT_NAME.name(),
61 metadata.getObjectName(), null, true);
62 generator.writeEntry(CdmMetadataKey.INTERNATIONAL_DESIGNATOR.name(),
63 metadata.getInternationalDes(), null, true);
64 generator.writeEntry(CdmMetadataKey.OBJECT_TYPE.name(),
65 metadata.getObjectType(), false);
66
67
68 generator.writeEntry(CdmMetadataKey.OPERATOR_CONTACT_POSITION.name(),
69 metadata.getOperatorContactPosition(), null, false);
70 generator.writeEntry(CdmMetadataKey.OPERATOR_ORGANIZATION.name(),
71 metadata.getOperatorOrganization(), null, false);
72 generator.writeEntry(CdmMetadataKey.OPERATOR_PHONE.name(),
73 metadata.getOperatorPhone(), null, false);
74 generator.writeEntry(CdmMetadataKey.OPERATOR_EMAIL.name(),
75 metadata.getOperatorEmail(), null, false);
76
77
78 generator.writeEntry(CdmMetadataKey.EPHEMERIS_NAME.name(),
79 metadata.getEphemName(), null, true);
80 generator.writeEntry(CdmMetadataKey.COVARIANCE_METHOD.name(),
81 metadata.getCovarianceMethod(), true);
82 generator.writeEntry(CdmMetadataKey.MANEUVERABLE.name(),
83 metadata.getManeuverable().getValue(), null, true);
84 if (metadata.getOrbitCenter() != null) {
85 generator.writeEntry(CdmMetadataKey.ORBIT_CENTER.name(),
86 metadata.getOrbitCenter().getName(), null, false);
87 }
88 generator.writeEntry(CdmMetadataKey.REF_FRAME.name(),
89 metadata.getRefFrame().getName(), null, true);
90
91 if (metadata.getGravityModel() != null) {
92 final String model =
93 new StringBuilder().
94 append(metadata.getGravityModel()).
95 append(": ").
96 append(metadata.getGravityDegree()).
97 append("D ").
98 append(metadata.getGravityOrder()).
99 append('O').
100 toString();
101 generator.writeEntry(CdmMetadataKey.GRAVITY_MODEL.name(), model, null, false);
102 }
103
104
105 generator.writeEntry(CdmMetadataKey.ATMOSPHERIC_MODEL.name(), metadata.getAtmosphericModel(), null, false);
106
107
108 if (metadata.getNBodyPerturbations() != null && !metadata.getNBodyPerturbations().isEmpty()) {
109 final List<String> names = new ArrayList<>();
110 for (BodyFacade bf : metadata.getNBodyPerturbations()) {
111 names.add(bf.getName());
112 }
113 generator.writeEntry(CdmMetadataKey.N_BODY_PERTURBATIONS.name(), names, false);
114 }
115
116 if (metadata.getSolarRadiationPressure() != null) {
117 generator.writeEntry(CdmMetadataKey.SOLAR_RAD_PRESSURE.name(), metadata.getSolarRadiationPressure().name(),
118 null, false);
119 }
120 if (metadata.getEarthTides() != null) {
121 generator.writeEntry(CdmMetadataKey.EARTH_TIDES.name(), metadata.getEarthTides().name(),
122 null, false);
123 }
124 if (metadata.getIntrackThrust() != null) {
125 generator.writeEntry(CdmMetadataKey.INTRACK_THRUST.name(), metadata.getIntrackThrust().name(),
126 null, false);
127 }
128
129 }
130
131 }
132