EphemerisFileWriter.java
- /* Copyright 2016 Applied Defense Solutions (ADS)
- * Licensed to CS GROUP (CS) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * ADS licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.orekit.files.general;
- import java.io.BufferedWriter;
- import java.io.IOException;
- import java.nio.charset.StandardCharsets;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import org.orekit.utils.TimeStampedPVCoordinates;
- /**
- * An interface for writing out ephemeris files to disk.
- *
- * <p>
- * An {@link EphemerisFile} consists of one or more satellites each an ID unique
- * within the file. The ephemeris for each satellite consists of one or more
- * segments.
- *
- * <p>
- * Ephemeris file formats may have additional settings that need to be
- * configured to be compliant with their formats.
- *
- * @author Hank Grabowski
- * @since 9.0
- *
- */
- public interface EphemerisFileWriter {
- /**
- * Write the passed in {@link EphemerisFile} using the passed in
- * {@link Appendable}.
- *
- * @param writer
- * a configured Appendable to feed with text
- * @param ephemerisFile
- * a populated ephemeris file to serialize into the buffer
- * @param <C> type of the Cartesian coordinates
- * @param <S> type of the segment
- * @throws IOException
- * if any buffer writing operations fail or if the underlying
- * format doesn't support a configuration in the EphemerisFile
- * (for example having multiple satellites in one file, having
- * the origin at an unspecified celestial body, etc.)
- */
- <C extends TimeStampedPVCoordinates, S extends EphemerisFile.EphemerisSegment<C>>
- void write(Appendable writer, EphemerisFile<C, S> ephemerisFile) throws IOException;
- /**
- * Write the passed in {@link EphemerisFile} to a file at the output path
- * specified.
- *
- * @param outputFilePath
- * a file path that the corresponding file will be written to
- * @param ephemerisFile
- * a populated ephemeris file to serialize into the buffer
- * @param <C> type of the Cartesian coordinates
- * @param <S> type of the segment
- * @throws IOException
- * if any file writing operations fail or if the underlying
- * format doesn't support a configuration in the EphemerisFile
- * (for example having multiple satellites in one file, having
- * the origin at an unspecified celestial body, etc.)
- */
- default <C extends TimeStampedPVCoordinates, S extends EphemerisFile.EphemerisSegment<C>>
- void write(final String outputFilePath, EphemerisFile<C, S> ephemerisFile)
- throws IOException {
- try (BufferedWriter writer =
- Files.newBufferedWriter(Paths.get(outputFilePath), StandardCharsets.UTF_8)) {
- write(writer, ephemerisFile);
- }
- }
- }