Class FetchDBMethodGenerator

All Implemented Interfaces:
MethodGenerator
Direct Known Subclasses:
EntityDBFetcherMethodGenerator, FetchCountDBMethodGenerator, FetchMappedObjectDBMethodGenerator, FetchMultiTableDBMethodGenerator, FetchNodeImplementationDBMethodGenerator, FetchSingleTableInterfaceDBMethodGenerator

public abstract class FetchDBMethodGenerator extends DBMethodGenerator<ObjectField>
Abstract generator for various database fetching methods.
  • Field Details

    • idParamName

      protected final String idParamName
    • isRoot

      protected final boolean isRoot
  • Constructor Details

  • Method Details

    • createSelectJoins

      protected CodeBlock createSelectJoins(Set<SQLJoinStatement> joinList)
      Parameters:
      joinList - List of join statements that should be applied to a select query.
      Returns:
      Code block containing all the join statements and their conditions.
    • createSelectConditions

      protected CodeBlock createSelectConditions(List<CodeBlock> conditionList, boolean hasWhere)
      Parameters:
      conditionList - List of conditional statements that should be appended after the where-statement.
      Returns:
      Code block which declares all the extra conditions that will be used in a select query.
    • createAliasDeclarations

      protected static CodeBlock createAliasDeclarations(Set<Alias> aliasSet)
      Parameters:
      aliasSet - Set of aliases to be defined.
      Returns:
      Code block which declares all the aliases that will be used in a select query.
    • generateCorrelatedSubquery

      protected CodeBlock generateCorrelatedSubquery(GenerationField field, FetchContext context)
    • wrapInField

      protected CodeBlock wrapInField(CodeBlock contents)
    • generateSelectRow

      protected CodeBlock generateSelectRow(FetchContext context)
      This method recursively generates one single row method call. It deduces how each layer of row call should be structured by keeping track of joins and following field references.
      Returns:
      Code block which contains the entire recursive structure of the row statement.
    • getSelectCodeAndFieldSource

      protected org.apache.commons.lang3.tuple.Pair<CodeBlock,String> getSelectCodeAndFieldSource(GenerationField field, FetchContext context)
    • createMapping

      protected CodeBlock createMapping(FetchContext context, List<? extends GenerationField> fieldsWithoutSplitting, HashMap<String,String> referenceFieldSources, List<CodeBlock> rowElements, LinkedHashSet<org.jooq.Key<?>> keySet)
    • generateForScalarField

      protected CodeBlock generateForScalarField(GenerationField field, FetchContext context)
      Generate a single argument in the row method call.
    • generateForUnionField

      protected CodeBlock generateForUnionField(GenerationField field, FetchContext context)
      Generate select row for each object within the union field
    • formatWhereContents

      protected CodeBlock formatWhereContents(FetchContext context, String idParamName, boolean isRoot, boolean isResolverRoot)
      Returns:
      Formatted CodeBlock for the where-statement and surrounding code. Applies conditions and joins.
    • getInputConditions

      @NotNull protected @NotNull InputConditions getInputConditions(ObjectField referenceField)
    • inferFieldNamingConvention

      protected String inferFieldNamingConvention(GenerationField field)
    • createSeekAndLimitBlock

      protected CodeBlock createSeekAndLimitBlock()
    • maybeCreateOrderFieldsDeclarationBlock

      protected Optional<CodeBlock> maybeCreateOrderFieldsDeclarationBlock(ObjectField referenceField, String actualRefTable, String tableName)
    • maybeCreateOrderFieldsBlock

      protected Optional<CodeBlock> maybeCreateOrderFieldsBlock(ObjectField referenceField, String actualRefTable, String tableName)
    • getSpecBuilder

      @NotNull protected MethodSpec.Builder getSpecBuilder(ObjectField referenceField, TypeName refTypeName, InputParser parser)