Class JacksonSolutionFileIO<Solution_>
- java.lang.Object
-
- org.optaplanner.persistence.jackson.impl.domain.solution.JacksonSolutionFileIO<Solution_>
-
- Type Parameters:
Solution_
- the solution type, the class with thePlanningSolution
annotation
- All Implemented Interfaces:
SolutionFileIO<Solution_>
public class JacksonSolutionFileIO<Solution_> extends Object implements SolutionFileIO<Solution_>
-
-
Constructor Summary
Constructors Constructor Description JacksonSolutionFileIO(Class<Solution_> clazz)
JacksonSolutionFileIO(Class<Solution_> clazz, com.fasterxml.jackson.databind.ObjectMapper mapper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected <Entity_,Id_ extends Number,Value_>
voiddeduplicateEntities(Solution_ solution, Function<Solution_,Collection<Entity_>> entityCollectionFunction, Function<Entity_,Id_> entityIdFunction, Function<Entity_,Map<Entity_,Value_>> entityMapGetter, BiConsumer<Entity_,Map<Entity_,Value_>> entityMapSetter)
String
getInputFileExtension()
EveryPlanningSolution
type potentially has its own file extension.String
getOutputFileExtension()
It's highly recommended that this method returns the same value asSolutionFileIO.getInputFileExtension()
, which it does by default unless it's overridden, because a good output file is able to function as an input file.Solution_
read(File inputSolutionFile)
This method is thread-safe.void
write(Solution_ solution, File file)
This method is thread-safe.
-
-
-
Method Detail
-
getInputFileExtension
public String getInputFileExtension()
Description copied from interface:SolutionFileIO
EveryPlanningSolution
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
SolutionFileIO.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.
- Specified by:
getInputFileExtension
in interfaceSolutionFileIO<Solution_>
- Returns:
- never null, for example "xml"
- If this
-
getOutputFileExtension
public String getOutputFileExtension()
Description copied from interface:SolutionFileIO
It's highly recommended that this method returns the same value asSolutionFileIO.getInputFileExtension()
, which it does by default unless it's overridden, because a good output file is able to function as an input file.- Specified by:
getOutputFileExtension
in interfaceSolutionFileIO<Solution_>
- Returns:
- never null, for example "xml"
- See Also:
SolutionFileIO.getInputFileExtension()
-
read
public Solution_ read(File inputSolutionFile)
Description copied from interface:SolutionFileIO
This method is thread-safe.- Specified by:
read
in interfaceSolutionFileIO<Solution_>
- Parameters:
inputSolutionFile
- never null- Returns:
- never null
-
write
public void write(Solution_ solution, File file)
Description copied from interface:SolutionFileIO
This method is thread-safe.- Specified by:
write
in interfaceSolutionFileIO<Solution_>
- Parameters:
solution
- never nullfile
- never null, parent directory already exists
-
deduplicateEntities
protected <Entity_,Id_ extends Number,Value_> void deduplicateEntities(Solution_ solution, Function<Solution_,Collection<Entity_>> entityCollectionFunction, Function<Entity_,Id_> entityIdFunction, Function<Entity_,Map<Entity_,Value_>> entityMapGetter, BiConsumer<Entity_,Map<Entity_,Value_>> entityMapSetter)
-
-