All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.stanfy.helium.gradle.SourceGenDslDelegate.groovy Maven / Gradle / Ivy

package com.stanfy.helium.gradle

import com.stanfy.helium.handler.codegen.java.constants.ConstantsGeneratorOptions
import com.stanfy.helium.utils.DslUtils
import groovy.transform.PackageScope

import com.stanfy.helium.handler.codegen.java.entity.EntitiesGeneratorOptions

/**
 * Delegate for DSL
 * 
 *   pojo {
 *     packageName = "foo"
 *   }
 * 
 */
class SourceGenDslDelegate {

  public static final String DEFAULT_PACKAGE = "api"

  @PackageScope EntitiesDslDelegate entities;
  @PackageScope ConstantsDslDelegate constants;

  private final Object owner

  public SourceGenDslDelegate(final Object owner) {
    this.owner = owner
  }

  void entities(Closure config) {
    entities = new EntitiesDslDelegate()
    DslUtils.runWithProxy(entities, config)
  }

  void constants(Closure config) {
    constants = new ConstantsDslDelegate()
    DslUtils.runWithProxy(constants, config)
  }


  abstract class BaseDslDelegate {

    T genOptions

    File output

    void output(File output) {
      this.output = output;
    }

    void options(Closure config) {
      DslUtils.runWithProxy(genOptions, config)
    }

  }

  class EntitiesDslDelegate extends BaseDslDelegate {

    @Override
    void options(Closure config) {
      genOptions = EntitiesGeneratorOptions.defaultOptions(DEFAULT_PACKAGE)
      super.options(config)
    }

  }

  class ConstantsDslDelegate extends BaseDslDelegate {

    @Override
    void options(Closure config) {
      genOptions = ConstantsGeneratorOptions.defaultOptions(DEFAULT_PACKAGE)
      super.options(config)
    }

  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy