Class OutputFile

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    class OutputFile
    extends java.lang.Object
    implements java.io.Closeable
    This class handles the creation and maintenance of the boiler-plate classes, such as Token.java, JavaCharStream.java etc. It is responsible for:
    • Writing the JavaCC header lines to the file.
    • Writing the checksum line.
    • Using the checksum to determine if an existing file has been changed by the user (and so should be left alone).
    • Checking any existing file's version (if the file can not be overwritten).
    • Checking any existing file's creation options (if the file can not be overwritten).
    • Field Detail

      • file

        private final java.io.File file
      • options

        private final java.util.List<java.lang.String> options
      • toolName

        private final java.lang.String toolName
      • compatibleVersion

        private final java.lang.String compatibleVersion
      • needToWrite

        private final boolean needToWrite
      • digestStream

        private java.security.DigestOutputStream digestStream
    • Constructor Detail

      • OutputFile

        OutputFile​(java.io.File file,
                   java.lang.String toolName,
                   java.lang.String compatibleVersion,
                   java.util.List<java.lang.String> options,
                   Context context)
            throws java.io.IOException
        Create a new OutputFile.
        Parameters:
        file - the file to write to.
        toolName - the name of the generating tool.
        compatibleVersion - the minimum compatible JavaCC version.
        options - if the file already exists, and cannot be overwritten, this is a list of options (such s STATIC=false) to check for changes.
        Throws:
        java.io.IOException
    • Method Detail

      • isNeedToWrite

        public final boolean isNeedToWrite()
        Return true if the file needs to be written.
      • getPrintWriter

        public final java.io.PrintWriter getPrintWriter()
                                                 throws java.io.IOException
        Return a PrintWriter object that may be used to write to this file. Any necessary header information is written by this method.
        Throws:
        java.io.IOException
      • close

        public final void close()
                         throws java.io.IOException
        Close the OutputFile, writing any necessary trailer information (such as a checksum).
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException