Class ConversionTool

java.lang.Object
tv.hd3g.fflauncher.ConversionTool
All Implemented Interfaces:
InputSourceProviderTraits, InternalParametersSupplier, ExecutableTool
Direct Known Subclasses:
FFbase

public class ConversionTool extends Object implements ExecutableTool, InternalParametersSupplier, InputSourceProviderTraits
  • Field Details

    • execName

      protected final String execName
    • inputSources

      protected final List<tv.hd3g.fflauncher.ConversionToolParameterReference> inputSources
    • outputExpectedDestinations

      protected final List<tv.hd3g.fflauncher.ConversionToolParameterReference> outputExpectedDestinations
    • parameters

      protected final Parameters parameters
    • APPEND_PARAM_AT_END

      public static final BiConsumer<Parameters,String> APPEND_PARAM_AT_END
    • PREPEND_PARAM_AT_START

      public static final BiConsumer<Parameters,String> PREPEND_PARAM_AT_START
  • Constructor Details

    • ConversionTool

      public ConversionTool(String execName)
    • ConversionTool

      protected ConversionTool(String execName, Parameters parameters)
  • Method Details

    • isRemoveParamsIfNoVarToInject

      public boolean isRemoveParamsIfNoVarToInject()
    • setRemoveParamsIfNoVarToInject

      public ConversionTool setRemoveParamsIfNoVarToInject(boolean remove_params_if_no_var_to_inject)
    • setMaxExecutionTimeForShortCommands

      public ConversionTool setMaxExecutionTimeForShortCommands(long max_exec_time, TimeUnit unit)
      You needs to provide a maxExecTimeScheduler
    • setMaxExecTimeScheduler

      public ConversionTool setMaxExecTimeScheduler(ScheduledExecutorService maxExecTimeScheduler)
      Enable the execution time limitation
    • getMaxExecTime

      public long getMaxExecTime(TimeUnit unit)
    • getMaxExecTimeScheduler

      public ScheduledExecutorService getMaxExecTimeScheduler()
    • setFilterForLinesEventsToDisplay

      public ConversionTool setFilterForLinesEventsToDisplay(Predicate<LineEntry> filterForLinesEventsToDisplay)
    • getFilterForLinesEventsToDisplay

      public Optional<Predicate<LineEntry>> getFilterForLinesEventsToDisplay()
    • getParametersVariables

      public Map<String,Parameters> getParametersVariables()
      Set values for variables like <%myvar%> in the command line, do NOT set input/output references if they was set with addInputSource/addOutputDestination.
    • addInputSource

      public ConversionTool addInputSource(String source, String varNameInParameters, Collection<String> parametersBeforeInputSource)
      Add a parameters via an input reference, like: [parametersBeforeInputSource] {varNameInParameters replaced by source} [parametersAfterInputSource] For example, set source = "myfile", varNameInParameters = "IN", parametersBeforeInputSource = [-i], parametersAfterInputSource = [-w], For an parameters = "exec -VERBOSE <%IN%> -send <%OUT%>", you will get an updated parameters: "exec -VERBOSE -i myfile -w -send <%OUT%>"
      Specified by:
      addInputSource in interface InputSourceProviderTraits
      Parameters:
      source - can be another var name (mindfuck)
      parametersBeforeInputSource - can be null, and can be another var name (mindfuck)
    • patchVarName

      protected String patchVarName(String rawVarName)
    • addInputSource

      public ConversionTool addInputSource(File source, String varNameInParameters, Collection<String> parametersBeforeInputSource)
      Add a parameters via an input reference, like: [parametersBeforeInputSource] {varNameInParameters replaced by source} [parametersAfterInputSource] For example, set source = "/myfile", varNameInParameters = "IN", parametersBeforeInputSource = [-i], parametersAfterInputSource = [-w], For an parameters = "exec -VERBOSE <%IN%> -send <%OUT%>", you will get an updated parameters: "exec -VERBOSE -i /myfile -w -send <%OUT%>"
      Specified by:
      addInputSource in interface InputSourceProviderTraits
      Parameters:
      parametersBeforeInputSource - can be null, and can be another var name (mindfuck)
    • getInputSources

      public List<tv.hd3g.fflauncher.ConversionToolParameterReference> getInputSources()
      Specified by:
      getInputSources in interface InternalParametersSupplier
    • addOutputDestination

      public ConversionTool addOutputDestination(String destination, String varNameInParameters, String... parametersBeforeOutputDestination)
      Add a parameters via an output reference, like: [parametersBeforeOutputDestination] {varNameInParameters replaced by destination} For example, set destination = "myfile", varNameInParameters = "OUT", parametersBeforeOutputDestination = [-o], For an parameters = "exec -VERBOSE <%IN%> -send <%OUT%>", you will get an updated parameters: "exec -VERBOSE <%IN%> -send -o myfile"
      Parameters:
      destination - can be another var name (mindfuck)
    • addOutputDestination

      public ConversionTool addOutputDestination(File destination, String varNameInParameters, String... parametersBeforeOutputDestination)
      Add a parameters via an output reference, like: [parametersBeforeOutputDestination] {varNameInParameters replaced by destination} For example, set destination = "myfile", varNameInParameters = "OUT", parametersBeforeOutputDestination = [-o], For an parameters = "exec -VERBOSE <%IN%> -send <%OUT%>", you will get an updated parameters: "exec -VERBOSE <%IN%> -send -o myfile"
    • addOutputDestination

      public ConversionTool addOutputDestination(String destination, String varNameInParameters, Collection<String> parametersBeforeOutputDestination)
      Add a parameters via an output reference, like: [parametersBeforeOutputDestination] {varNameInParameters replaced by destination} [parametersAfterOutputDestination] For example, set destination = "myfile", varNameInParameters = "OUT", parametersBeforeOutputDestination = [-o], parametersAfterOutputDestination = [-w], For an parameters = "exec -VERBOSE <%IN%> -send <%OUT%>", you will get an updated parameters: "exec -VERBOSE <%IN%> -send -o myfile -w"
      Parameters:
      destination - can be another var name (mindfuck)
      parametersBeforeOutputDestination - can be null, and can be another var name (mindfuck)
    • addOutputDestination

      public ConversionTool addOutputDestination(File destination, String varNameInParameters, Collection<String> parametersBeforeOutputDestination)
      Add a parameters via an output reference, like: [parametersBeforeOutputDestination] {varNameInParameters replaced by destination} [parametersAfterOutputDestination] For example, set destination = "myfile", varNameInParameters = "OUT", parametersBeforeOutputDestination = [-o], parametersAfterOutputDestination = [-w], For an parameters = "exec -VERBOSE <%IN%> -send <%OUT%>", you will get an updated parameters: "exec -VERBOSE <%IN%> -send -o myfile -w"
      Parameters:
      parametersBeforeOutputDestination - can be null, and can be another var name (mindfuck)
    • onMissingInputOutputVar

      protected void onMissingInputOutputVar(String var_name, String ressource)
    • getWorkingDirectory

      public File getWorkingDirectory()
      Returns:
      Can be null.
    • setWorkingDirectory

      public ConversionTool setWorkingDirectory(File workingDirectory) throws IOException
      Throws:
      IOException
    • isOnErrorDeleteOutFiles

      public boolean isOnErrorDeleteOutFiles()
    • setOnErrorDeleteOutFiles

      public ConversionTool setOnErrorDeleteOutFiles(boolean onErrorDeleteOutFiles)
    • beforeRun

      public void beforeRun(ProcesslauncherBuilder processBuilder)
      Specified by:
      beforeRun in interface ExecutableTool
    • getStdOutPrintStreamToDisplayLinesEvents

      protected PrintStream getStdOutPrintStreamToDisplayLinesEvents()
    • getStdErrPrintStreamToDisplayLinesEvents

      protected PrintStream getStdErrPrintStreamToDisplayLinesEvents()
    • getDeclaredSourceByVarName

      public Optional<String> getDeclaredSourceByVarName(String varName)
      Parameters:
      varName - with tags
      Returns:
      never null
    • getDeclaredDestinationByVarName

      public Optional<String> getDeclaredDestinationByVarName(String varName)
      Parameters:
      varName - with tags
      Returns:
      never null
    • getDeclaredSources

      public List<String> getDeclaredSources()
      Returns:
      never null, can be empty
    • getDeclaredDestinations

      public List<String> getDeclaredDestinations()
      Returns:
      never null, can be empty
    • addSimpleOutputDestination

      public ConversionTool addSimpleOutputDestination(String destinationName)
      Define cmd var name like <%OUT_AUTOMATIC_n%> with "n" the # of setted destination. Don't forget to call fixIOParametredVars() for add the new created var in current Parameters.
    • addSimpleOutputDestination

      public ConversionTool addSimpleOutputDestination(File destinationFile)
      Define cmd var name like <%OUT_AUTOMATIC_n%> with "n" the # of setted destination. Don't forget to call fixIOParametredVars() for add the new created var in current Parameters.
    • getOutputFiles

      public List<File> getOutputFiles(OutputFilePresencePolicy filterPolicy)
      Don't need to be executed before, only checks.
    • cleanUpOutputFiles

      public ConversionTool cleanUpOutputFiles(boolean remove_all, boolean clean_output_directories)
      Don't need to be executed before.
      Parameters:
      remove_all - if false, remove only empty files.
    • getInternalParameters

      public Parameters getInternalParameters()
      Specified by:
      getInternalParameters in interface InternalParametersSupplier
      Returns:
      without variable injection
    • setCheckSourcesBeforeReady

      public ConversionTool setCheckSourcesBeforeReady(boolean checkSourcesBeforeReady)
      True by default. Force to check read access for every files set in input.
      Returns:
      this
    • isCheckSourcesBeforeReady

      public boolean isCheckSourcesBeforeReady()
      Returns:
      true by default. Force to check read access for every files set in input.
    • checkSources

      public ConversionTool checkSources()
      Check read access for every files set in input.
    • checkDestinations

      public ConversionTool checkDestinations()
      Check read access for every files set in output.
    • fixIOParametredVars

      public void fixIOParametredVars(BiConsumer<Parameters,String> onMissingInputVar, BiConsumer<Parameters,String> onMissingOutputVar)
      Search and patch missing I/O parameter vars, and manageCollisionsParameters for each I/O entries.
      Parameters:
      onMissingInputVar - you can manually add the var (the String value provided) in the provided Parameters
      onMissingOutputVar - you can manually add the var (the String value provided) in the provided Parameters
    • fixIOParametredVars

      public void fixIOParametredVars()
      Default with prependBulkParameters and prependParameters
    • getReadyToRunParameters

      public Parameters getReadyToRunParameters()
      Specified by:
      getReadyToRunParameters in interface ExecutableTool
      Returns:
      a copy form internal parameters, with variable injection
    • getExecutableName

      public String getExecutableName()
      Specified by:
      getExecutableName in interface ExecutableTool