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

no.mnemonic.services.triggers.api.model.v1.TriggerActionDefinition Maven / Gradle / Ivy

There is a newer version: 0.0.22
Show newest version
package no.mnemonic.services.triggers.api.model.v1;

import no.mnemonic.commons.utilities.ObjectUtils;
import no.mnemonic.commons.utilities.collections.MapUtils;

import java.util.Collections;
import java.util.Map;
import java.util.UUID;

public class TriggerActionDefinition {

  private final UUID id;
  private final String name;
  private final String description;
  private final String triggerActionClass;
  private final FunctionInfo requiredPermission;
  private final Map initParameters;
  private final Map triggerParameters;

  private TriggerActionDefinition(UUID id, String name, String description, String triggerActionClass,
                                  FunctionInfo requiredPermission, Map initParameters,
                                  Map triggerParameters) {
    this.id = id;
    this.name = name;
    this.description = description;
    this.triggerActionClass = triggerActionClass;
    this.requiredPermission = requiredPermission;
    this.initParameters = ObjectUtils.ifNotNull(initParameters, Collections::unmodifiableMap);
    this.triggerParameters = ObjectUtils.ifNotNull(triggerParameters, Collections::unmodifiableMap);
  }

  public UUID getId() {
    return id;
  }

  public String getName() {
    return name;
  }

  public String getDescription() {
    return description;
  }

  public String getTriggerActionClass() {
    return triggerActionClass;
  }

  public FunctionInfo getRequiredPermission() {
    return requiredPermission;
  }

  public Map getInitParameters() {
    return initParameters;
  }

  public Map getTriggerParameters() {
    return triggerParameters;
  }

  public Info toInfo() {
    return new Info(id, name);
  }

  public static Builder builder() {
    return new Builder();
  }

  public static class Builder {
    private UUID id;
    private String name;
    private String description;
    private String triggerActionClass;
    private FunctionInfo requiredPermission;
    private Map initParameters;
    private Map triggerParameters;

    private Builder() {
    }

    public TriggerActionDefinition build() {
      return new TriggerActionDefinition(id, name, description, triggerActionClass, requiredPermission, initParameters, triggerParameters);
    }

    public Builder setId(UUID id) {
      this.id = id;
      return this;
    }

    public Builder setName(String name) {
      this.name = name;
      return this;
    }

    public Builder setDescription(String description) {
      this.description = description;
      return this;
    }

    public Builder setTriggerActionClass(String triggerActionClass) {
      this.triggerActionClass = triggerActionClass;
      return this;
    }

    public Builder setRequiredPermission(FunctionInfo requiredPermission) {
      this.requiredPermission = requiredPermission;
      return this;
    }

    public Builder setInitParameters(Map initParameters) {
      this.initParameters = initParameters;
      return this;
    }

    public Builder addInitParameter(String parameterName, String parameterValue) {
      this.initParameters = MapUtils.addToMap(this.initParameters, parameterName, parameterValue);
      return this;
    }

    public Builder setTriggerParameters(Map triggerParameters) {
      this.triggerParameters = triggerParameters;
      return this;
    }

    public Builder addTriggerParameter(String parameterName, ParameterDefinition parameterDefinition) {
      this.triggerParameters = MapUtils.addToMap(this.triggerParameters, parameterName, parameterDefinition);
      return this;
    }
  }

  public class Info {
    private final UUID id;
    private final String name;

    private Info(UUID id, String name) {
      this.id = id;
      this.name = name;
    }

    public UUID getId() {
      return id;
    }

    public String getName() {
      return name;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy