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

com.blossomproject.generator.classes.ServiceGenerator Maven / Gradle / Ivy

package com.blossomproject.generator.classes;

import com.helger.jcodemodel.AbstractJClass;
import com.helger.jcodemodel.EClassType;
import com.helger.jcodemodel.JCodeModel;
import com.helger.jcodemodel.JDefinedClass;
import com.helger.jcodemodel.JMethod;
import com.helger.jcodemodel.JMod;
import com.blossomproject.core.common.service.CrudService;
import com.blossomproject.generator.configuration.model.Settings;
import com.blossomproject.generator.utils.GeneratorUtils;

public class ServiceGenerator implements ClassGenerator {

  private  AbstractJClass dtoClass;
  private AbstractJClass createFormClass;
  private AbstractJClass updateFormClass;

  @Override
  public void prepare(Settings settings, JCodeModel codeModel) {
    this.dtoClass = codeModel.ref(GeneratorUtils.getDtoFullyQualifiedClassName(settings));;
    this.createFormClass = codeModel.ref(GeneratorUtils.getCreateFormFullyQualifiedClassName(settings));;
    this.updateFormClass = codeModel.ref(GeneratorUtils.getUpdateFormFullyQualifiedClassName(settings));
  }

  @Override
  public JDefinedClass generate(Settings settings, JCodeModel codeModel) {
    try {

      JDefinedClass definedClass = codeModel
        ._class(GeneratorUtils.getServiceFullyQualifiedClassName(settings),
          EClassType.INTERFACE);
      definedClass._extends(codeModel.ref(CrudService.class).narrow(dtoClass));

      JMethod create = definedClass.method(JMod.NONE, dtoClass, "create");
      create.param(createFormClass, "createForm");

      JMethod update = definedClass.method(JMod.NONE, dtoClass, "update");
      update.param(Long.class,"id");
      update.param(updateFormClass, "updateForm");

      return definedClass;
    } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException("Can't generate repository class", e);
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy