Interface Generator

All Superinterfaces:
AutoCloseable
All Known Implementing Classes:
AbstractGenerator, KvnGenerator, XmlGenerator

public interface Generator extends AutoCloseable
Generation interface for CCSDS messages.
Since:
11.0
Author:
Luc Maisonobe
  • Method Details

    • getOutputName

      String getOutputName()
      Get the name of the output (for error messages).
      Returns:
      name of the output
    • getFormat

      FileFormat getFormat()
      Get the generated file format.
      Returns:
      generated file format
    • getFormatter

      Formatter getFormatter()
      Used to format dates and doubles to string.
      Returns:
      formatter
    • startMessage

      void startMessage(String root, String messageTypeKey, double version) throws IOException
      Start CCSDS message.
      Parameters:
      root - root element for XML files
      messageTypeKey - key for message type
      version - format version
      Throws:
      IOException - if an I/O error occurs.
    • endMessage

      void endMessage(String root) throws IOException
      End CCSDS message.
      Parameters:
      root - root element for XML files
      Throws:
      IOException - if an I/O error occurs.
    • writeComments

      void writeComments(List<String> comments) throws IOException
      Write comment lines.
      Parameters:
      comments - comments to write
      Throws:
      IOException - if an I/O error occurs.
    • writeEntry

      void writeEntry(String key, String value, Unit unit, boolean mandatory) throws IOException
      Write a single key/value entry.
      Parameters:
      key - the keyword to write
      value - the value to write
      unit - output unit (may be null)
      mandatory - if true, null values triggers exception, otherwise they are silently ignored
      Throws:
      IOException - if an I/O error occurs.
    • writeEntry

      void writeEntry(String key, List<String> value, boolean mandatory) throws IOException
      Write a single key/value entry.
      Parameters:
      key - the keyword to write
      value - the value to write
      mandatory - if true, null values triggers exception, otherwise they are silently ignored
      Throws:
      IOException - if an I/O error occurs.
    • writeEntry

      void writeEntry(String key, Enum<?> value, boolean mandatory) throws IOException
      Write a single key/value entry.
      Parameters:
      key - the keyword to write
      value - the value to write
      mandatory - if true, null values triggers exception, otherwise they are silently ignored
      Throws:
      IOException - if an I/O error occurs.
    • writeEntry

      void writeEntry(String key, TimeConverter converter, AbsoluteDate date, boolean forceCalendar, boolean mandatory) throws IOException
      Write a single key/value entry.
      Parameters:
      key - the keyword to write
      converter - converter to use for dates
      date - the date to write
      forceCalendar - if true, the date is forced to calendar format
      mandatory - if true, null values triggers exception, otherwise they are silently ignored
      Throws:
      IOException - if an I/O error occurs.
    • writeEntry

      void writeEntry(String key, char value, boolean mandatory) throws IOException
      Write a single key/value entry.
      Parameters:
      key - the keyword to write
      value - the value to write
      mandatory - if true, null values triggers exception, otherwise they are silently ignored
      Throws:
      IOException - if an I/O error occurs.
    • writeEntry

      void writeEntry(String key, int value, boolean mandatory) throws IOException
      Write a single key/value entry.

      Note that the mandatory flag has no effect and a value is always written because the whole domain of value is treated as valid. Use writeEntry(String, Integer, boolean) for integer values that may not be present.

      Parameters:
      key - the keyword to write
      value - the value to write
      mandatory - if true, null values triggers exception, otherwise they are silently ignored.
      Throws:
      IOException - if an I/O error occurs.
      See Also:
    • writeEntry

      default void writeEntry(String key, Integer value, boolean mandatory) throws IOException
      Write a single key/value entry.
      Parameters:
      key - the keyword to write
      value - the value to write
      mandatory - if true, null values triggers exception, otherwise they are silently ignored
      Throws:
      IOException - if an I/O error occurs.
    • writeEntry

      void writeEntry(String key, double value, Unit unit, boolean mandatory) throws IOException
      Write a single key/value entry.
      Parameters:
      key - the keyword to write
      value - the value to write (in SI units)
      unit - output unit
      mandatory - if true, null values triggers exception, otherwise they are silently ignored
      Throws:
      IOException - if an I/O error occurs.
    • writeEntry

      void writeEntry(String key, Double value, Unit unit, boolean mandatory) throws IOException
      Write a single key/value entry.
      Parameters:
      key - the keyword to write
      value - the value to write (in SI units)
      unit - output unit
      mandatory - if true, null values triggers exception, otherwise they are silently ignored
      Throws:
      IOException - if an I/O error occurs.
    • newLine

      void newLine() throws IOException
      Finish current line.
      Throws:
      IOException - if an I/O error occurs.
    • writeRawData

      void writeRawData(char data) throws IOException
      Write raw data.
      Parameters:
      data - raw data to write
      Throws:
      IOException - if an I/O error occurs.
    • writeRawData

      void writeRawData(CharSequence data) throws IOException
      Write raw data.
      Parameters:
      data - raw data to write
      Throws:
      IOException - if an I/O error occurs.
    • enterSection

      void enterSection(String name) throws IOException
      Enter into a new section.
      Parameters:
      name - section name
      Throws:
      IOException - if an I/O error occurs.
    • exitSection

      String exitSection() throws IOException
      Exit last section.
      Returns:
      section name
      Throws:
      IOException - if an I/O error occurs.
    • close

      void close() throws IOException
      Close the generator.
      Specified by:
      close in interface AutoCloseable
      Throws:
      IOException - if an I/O error occurs.
    • dateToString

      String dateToString(TimeConverter converter, AbsoluteDate date)
      Convert a date to string value with high precision.
      Parameters:
      converter - converter for dates
      date - date to write
      Returns:
      date as a string (may be either a relative date or a calendar date)
    • dateToCalendarString

      String dateToCalendarString(TimeConverter converter, AbsoluteDate date)
      Convert a date to calendar string value with high precision.
      Parameters:
      converter - converter for dates
      date - date to write
      Returns:
      date as a calendar string
      Since:
      12.0
    • dateToString

      String dateToString(int year, int month, int day, int hour, int minute, double seconds)
      Convert a date to string value with high precision.
      Parameters:
      year - year
      month - month
      day - day
      hour - hour
      minute - minute
      seconds - seconds
      Returns:
      date as a string
    • doubleToString

      String doubleToString(double value)
      Convert a double to string value with high precision.

      We don't want to loose internal accuracy when writing doubles but we also don't want to have ugly representations like STEP = 1.25000000000000000 so we try a few simple formats first and fall back to scientific notation if it doesn't work.

      Parameters:
      value - value to format
      Returns:
      formatted value, with all original value accuracy preserved, or null if value is null or Double.NaN
    • unitsListToString

      String unitsListToString(List<Unit> units)
      Convert a list of units to a bracketed string.
      Parameters:
      units - lists to output (may be null or empty)
      Returns:
      bracketed string (null if units list is null or empty)
    • siToCcsdsName

      String siToCcsdsName(String siName)
      Convert a SI unit name to a CCSDS name.
      Parameters:
      siName - si unit name
      Returns:
      CCSDS name for the unit