1 /* Copyright 2002-2025 CS GROUP 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 package org.orekit.files.ccsds.ndm.adm.aem; 18 19 import java.util.ArrayList; 20 import java.util.Collections; 21 import java.util.List; 22 23 import org.orekit.files.ccsds.section.CommentsContainer; 24 import org.orekit.files.ccsds.section.Data; 25 import org.orekit.utils.TimeStampedAngularCoordinates; 26 27 /** 28 * The Attitude Ephemerides data blocks class contain list of attitude data points. 29 * <p> 30 * Beware that the Orekit getters and setters all rely on SI units. The parsers 31 * and writers take care of converting these SI units into CCSDS mandatory units. 32 * The {@link org.orekit.utils.units.Unit Unit} class provides useful 33 * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and 34 * {@link org.orekit.utils.units.Unit#toSI(double) toSI} methods in case the callers 35 * already use CCSDS units instead of the API SI units. The general-purpose 36 * {@link org.orekit.utils.units.Unit Unit} class (without an 's') and the 37 * CCSDS-specific {@link org.orekit.files.ccsds.definitions.Units Units} class 38 * (with an 's') also provide some predefined units. These predefined units and the 39 * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and 40 * {@link org.orekit.utils.units.Unit#toSI(double) toSI} conversion methods are indeed 41 * what the parsers and writers use for the conversions. 42 * </p> 43 * @author Bryan Cazabonne 44 */ 45 public class AemData extends CommentsContainer implements Data { 46 47 /** List of data lines. */ 48 private final List<TimeStampedAngularCoordinates> attitudeDataLines; 49 50 /** 51 * Constructor. 52 */ 53 public AemData() { 54 attitudeDataLines = new ArrayList<>(); 55 } 56 57 /** Add a data point. 58 * @param data data point to add 59 * @return always return {@code true} 60 */ 61 public boolean addData(final TimeStampedAngularCoordinates data) { 62 refuseFurtherComments(); 63 attitudeDataLines.add(data); 64 return true; 65 } 66 67 /** Get an unmodifiable view of the data points. 68 * @return unmodifiable view of the data points 69 */ 70 public List<TimeStampedAngularCoordinates> getAngularCoordinates() { 71 return Collections.unmodifiableList(attitudeDataLines); 72 } 73 74 }