Class AbstractBuilder

java.lang.Object
io.github.chrimle.classforge.AbstractBuilder
All Implemented Interfaces:
Builder
Direct Known Subclasses:
ClassBuilder, EnumBuilder

public abstract sealed class AbstractBuilder extends Object implements Builder permits ClassBuilder, EnumBuilder
Abstract class for building and generating Java classes.
Since:
0.1.0
Author:
Chrimle
  • Field Details

    • reservedClassNames

      protected final Set<String> reservedClassNames
      The collection of previously committed classes.
    • directory

      protected String directory
      The directory of the currently uncommitted class.
    • packageName

      protected String packageName
      The packageName of the currently uncommitted class.
    • className

      protected String className
      The className of the currently uncommitted class.
  • Constructor Details

    • AbstractBuilder

      public AbstractBuilder()
  • Method Details

    • updateDirectory

      public Builder updateDirectory(String directory)
      Updates the directory of the currently uncommitted class.
      Specified by:
      updateDirectory in interface Builder
      Parameters:
      directory - of the class.
      Returns:
      this Builder.
    • updatePackageName

      public Builder updatePackageName(String packageName)
      Updates the packageName of the currently uncommitted class.
      Specified by:
      updatePackageName in interface Builder
      Parameters:
      packageName - of the class.
      Returns:
      this Builder.
    • updateClassName

      public Builder updateClassName(String className)
      Updates the className of the currently uncommitted class.
      Specified by:
      updateClassName in interface Builder
      Parameters:
      className - of the class.
      Returns:
      this Builder.
    • commit

      public Builder commit()
      Commits the currently uncommitted class.
      Specified by:
      commit in interface Builder
      Returns:
      this Builder.
    • validateAdditionalPredicates

      protected abstract void validateAdditionalPredicates()
      Validates additional Predicates for determining the validity of the currently uncommitted class.
    • generateFileContent

      protected abstract String generateFileContent()
      Generates the complete file contents for a .java file for the currently uncommitted class.
      Returns:
      the file contents as a String.
    • generateClassFile

      protected void generateClassFile()
      Generates a .java class file for the currently uncommitted class.
    • resolveFullyQualifiedClassName

      protected String resolveFullyQualifiedClassName()
      Resolves the Fully Qualified Class Name (FQCN) for the currently uncommitted class.

      Example: module.sub_module.ExampleClass or AnotherExampleClass.

      Returns:
      the FQCN.