Class FileAccumulator

java.lang.Object
com.scivicslab.pojoactor.workflow.accumulator.FileAccumulator
All Implemented Interfaces:
Accumulator, Closeable, AutoCloseable

public class FileAccumulator extends Object implements Accumulator, Closeable
Accumulator that writes output to a text file.

This accumulator writes all output to a text file as it arrives. The output format is identical to what appears on the console, ensuring consistency across all output destinations.

Usage


 try (FileAccumulator fileAcc = new FileAccumulator(Path.of("run.log"))) {
     fileAcc.add("node-1", "stdout", "command output");
     fileAcc.add("workflow", "cowsay", renderedCowsayArt);
 }
 
Since:
2.12.0
Author:
devteam@scivicslab.com
  • Constructor Details

    • FileAccumulator

      public FileAccumulator(Path filePath) throws IOException
      Constructs a FileAccumulator that writes to the specified file.
      Parameters:
      filePath - the path to the output file
      Throws:
      IOException - if the file cannot be opened for writing
    • FileAccumulator

      public FileAccumulator(String filePath) throws IOException
      Constructs a FileAccumulator that writes to the specified file.
      Parameters:
      filePath - the path to the output file as a string
      Throws:
      IOException - if the file cannot be opened for writing
  • Method Details

    • getFilePath

      public Path getFilePath()
      Returns the path to the output file.
      Returns:
      the file path
    • add

      public void add(String source, String type, String data)
      Description copied from interface: Accumulator
      Adds a result to this accumulator.
      Specified by:
      add in interface Accumulator
      Parameters:
      source - the source identifier (e.g., actor name like "node-localhost")
      type - the type of result (e.g., "cpu", "memory", "error")
      data - the result data as a string
    • getSummary

      public String getSummary()
      Description copied from interface: Accumulator
      Returns a formatted summary of all accumulated results.

      The format of the summary depends on the implementation. For example, StreamingAccumulator returns a simple count, while BufferedAccumulator returns all results grouped by source.

      Specified by:
      getSummary in interface Accumulator
      Returns:
      the formatted summary string
    • getCount

      public int getCount()
      Description copied from interface: Accumulator
      Returns the number of results that have been added.
      Specified by:
      getCount in interface Accumulator
      Returns:
      the count of added results
    • clear

      public void clear()
      Description copied from interface: Accumulator
      Clears all accumulated results.

      After calling this method, the accumulator should be in its initial state, as if no results had been added.

      Specified by:
      clear in interface Accumulator
    • close

      public void close()
      Closes the file writer.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable