Interface SolutionFileIO<Solution_>

Type Parameters:
Solution_ - the solution type, the class with the PlanningSolution annotation
All Known Implementing Classes:
JacksonSolutionFileIO, JaxbSolutionFileIO, XStreamSolutionFileIO

public interface SolutionFileIO<Solution_>
Reads or writes a PlanningSolution from or to a File.

An implementation must be thread-safe.

  • Method Details

    • getInputFileExtension

      String getInputFileExtension()
      Every PlanningSolution type potentially has its own file extension. If no specific file extension is defined by the use case, the following are recommended:
      • If this SolutionFileIO implementation serializes to XML, use file extension "xml".
      • If this SolutionFileIO implementation serializes to text, use file extension "txt".
      • If this SolutionFileIO implementation serializes to binary, use file extension "dat".

      It's good practice that both the input and the output file have the same file extension, because a good output file is able to function as an input file. Therefore getOutputFileExtension() defaults to returning the same as this method.

      The file extension does not include the dot that separates it from the base name.

      This method is thread-safe.

      Returns:
      never null, for example "xml"
    • getOutputFileExtension

      default String getOutputFileExtension()
      It's highly recommended that this method returns the same value as getInputFileExtension(), which it does by default unless it's overridden, because a good output file is able to function as an input file.
      Returns:
      never null, for example "xml"
      See Also:
    • read

      Solution_ read(File inputSolutionFile)
      This method is thread-safe.
      Parameters:
      inputSolutionFile - never null
      Returns:
      never null
    • write

      void write(Solution_ solution, File outputSolutionFile)
      This method is thread-safe.
      Parameters:
      solution - never null
      outputSolutionFile - never null, parent directory already exists