1   /* Copyright 2022-2025 Luc Maisonobe
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  
18  package org.orekit.files.ccsds.ndm.adm.acm;
19  
20  import org.orekit.files.ccsds.definitions.FrameFacade;
21  import org.orekit.files.ccsds.section.CommentsContainer;
22  
23  /** Metadata for covariance history.
24   * <p>
25   * Beware that the Orekit getters and setters all rely on SI units. The parsers
26   * and writers take care of converting these SI units into CCSDS mandatory units.
27   * The {@link org.orekit.utils.units.Unit Unit} class provides useful
28   * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and
29   * {@link org.orekit.utils.units.Unit#toSI(double) toSI} methods in case the callers
30   * already use CCSDS units instead of the API SI units. The general-purpose
31   * {@link org.orekit.utils.units.Unit Unit} class (without an 's') and the
32   * CCSDS-specific {@link org.orekit.files.ccsds.definitions.Units Units} class
33   * (with an 's') also provide some predefined units. These predefined units and the
34   * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and
35   * {@link org.orekit.utils.units.Unit#toSI(double) toSI} conversion methods are indeed
36   * what the parsers and writers use for the conversions.
37   * </p>
38   * @author Luc Maisonobe
39   * @since 12.0
40   */
41  public class AttitudeCovarianceHistoryMetadata extends CommentsContainer {
42  
43      /** Covariance identification number. */
44      private String covID;
45  
46      /** Identification number of previous covariance. */
47      private String covPrevID;
48  
49      /** Basis of this covariance time history data. */
50      private String covBasis;
51  
52      /** Identification number of the covariance determination or simulation upon which this covariance is based. */
53      private String covBasisID;
54  
55      /** Reference frame of the covariance. */
56      private FrameFacade covReferenceFrame;
57  
58      /** Covariance element set type. */
59      private AttitudeCovarianceType covType;
60  
61      /** Empty constructor.
62       * <p>
63       * This constructor is not strictly necessary, but it prevents spurious
64       * javadoc warnings with JDK 18 and later.
65       * </p>
66       * @since 12.0
67       */
68      public AttitudeCovarianceHistoryMetadata() {
69          // nothing to do
70      }
71  
72      /** {@inheritDoc} */
73      @Override
74      public void validate(final double version) {
75          super.validate(version);
76          checkNotNull(covType, AttitudeCovarianceHistoryMetadataKey.COV_TYPE.name());
77      }
78  
79      /** Get covariance identification number.
80       * @return covariance identification number
81       */
82      public String getCovID() {
83          return covID;
84      }
85  
86      /** Set covariance identification number.
87       * @param covID covariance identification number
88       */
89      public void setCovID(final String covID) {
90          refuseFurtherComments();
91          this.covID = covID;
92      }
93  
94      /** Get identification number of previous covariance.
95       * @return identification number of previous covariance
96       */
97      public String getCovPrevID() {
98          return covPrevID;
99      }
100 
101     /** Set identification number of previous covariance.
102      * @param covPrevID identification number of previous covariance
103      */
104     public void setCovPrevID(final String covPrevID) {
105         refuseFurtherComments();
106         this.covPrevID = covPrevID;
107     }
108 
109     /** Get basis of this covariance time history data.
110      * @return basis of this covariance time history data
111      */
112     public String getCovBasis() {
113         return covBasis;
114     }
115 
116     /** Set basis of this covariance time history data.
117      * @param covBasis basis of this covariance time history data
118      */
119     public void setCovBasis(final String covBasis) {
120         refuseFurtherComments();
121         this.covBasis = covBasis;
122     }
123 
124     /** Get identification number of the orbit determination or simulation upon which this covariance is based.
125      * @return identification number of the orbit determination or simulation upon which this covariance is based
126      */
127     public String getCovBasisID() {
128         return covBasisID;
129     }
130 
131     /** Set identification number of the orbit determination or simulation upon which this covariance is based.
132      * @param covBasisID identification number of the orbit determination or simulation upon which this covariance is based
133      */
134     public void setCovBasisID(final String covBasisID) {
135         refuseFurtherComments();
136         this.covBasisID = covBasisID;
137     }
138 
139     /** Get reference frame of the covariance.
140      * @return reference frame of the covariance
141      */
142     public FrameFacade getCovReferenceFrame() {
143         return covReferenceFrame;
144     }
145 
146     /** Set reference frame of the covariance.
147      * @param covReferenceFrame the reference frame to be set
148      */
149     public void setCovReferenceFrame(final FrameFacade covReferenceFrame) {
150         refuseFurtherComments();
151         this.covReferenceFrame = covReferenceFrame;
152     }
153 
154     /** Get covariance element set type.
155      * @return covariance element set type
156      */
157     public AttitudeCovarianceType getCovType() {
158         return covType;
159     }
160 
161     /** Set covariance element set type.
162      * @param covType covariance element set type
163      */
164     public void setCovType(final AttitudeCovarianceType covType) {
165         refuseFurtherComments();
166         this.covType = covType;
167     }
168 
169 }