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

io.voucherify.client.module.ValidationRulesModule Maven / Gradle / Ivy

package io.voucherify.client.module;

import io.voucherify.client.api.VoucherifyApi;
import io.voucherify.client.callback.VoucherifyCallback;
import io.voucherify.client.model.validationRules.BusinessValidationRuleAssignmentFilter;
import io.voucherify.client.model.validationRules.BusinessValidationRuleFilter;
import io.voucherify.client.model.validationRules.CreateBusinessValidationRule;
import io.voucherify.client.model.validationRules.CreateBusinessValidationRuleAssignment;
import io.voucherify.client.model.validationRules.UpdateBusinessValidationRule;
import io.voucherify.client.model.validationRules.response.BusinessValidationRule;
import io.voucherify.client.model.validationRules.response.BusinessValidationRuleAssignment;
import io.voucherify.client.model.validationRules.response.BusinessValidationRuleAssignmentList;
import io.voucherify.client.model.validationRules.response.BusinessValidationRuleList;
import io.voucherify.client.module.ValidationRulesModule.ExtAsync;
import io.voucherify.client.module.ValidationRulesModule.ExtRxJava;
import io.voucherify.client.utils.RxUtils;
import rx.Observable;

import java.util.concurrent.Executor;

public final class ValidationRulesModule extends AbsModule {

  public ValidationRulesModule(VoucherifyApi api, Executor executor) {
    super(api, executor);
  }

  public BusinessValidationRule create(CreateBusinessValidationRule validationRule) {
    return api.createValidationRules(validationRule);
  }

  public BusinessValidationRule get(String id) {
    return api.getValidationRules(id);
  }

  public BusinessValidationRuleList list(BusinessValidationRuleFilter filter) {
    return api.listValidationRules(filter.asMap());
  }

  public BusinessValidationRule update(UpdateBusinessValidationRule validationRule) {
    return api.updateValidationRules(validationRule.getId(), validationRule);
  }

  public void delete(String id) {
    api.deleteValidationRules(id);
  }

  public BusinessValidationRuleAssignment createAssignment(String id, CreateBusinessValidationRuleAssignment assignment) {
    return api.createValidationRuleAssignment(id, assignment);
  }

  public BusinessValidationRuleAssignmentList listAssignments(String id, BusinessValidationRuleAssignmentFilter filter) {
    return api.listValidationRuleAssignments(id, filter.asMap());
  }

  public void deleteAssignment(String validationRuleId, String assignmentId) {
    api.deleteValidationRuleAssignment(validationRuleId, assignmentId);
  }


  @Override
  ExtAsync createAsyncExtension() {
    return new ExtAsync();
  }

  @Override
  ExtRxJava createRxJavaExtension() {
    return new ExtRxJava();
  }

  @Override
  public ExtAsync async() {
    return extAsync;
  }

  @Override
  public ExtRxJava rx() {
    return extRxJava;
  }

  public class ExtAsync extends AbsModule.Async {

    public void create(CreateBusinessValidationRule validationRule, VoucherifyCallback callback) {
      RxUtils.subscribe(executor, rx().create(validationRule), callback);
    }

    public void get(String id, VoucherifyCallback callback) {
      RxUtils.subscribe(executor, rx().get(id), callback);
    }

    public void update(UpdateBusinessValidationRule validationRule, VoucherifyCallback callback) {
      RxUtils.subscribe(executor, rx().update(validationRule), callback);
    }

    public void delete(String id, VoucherifyCallback callback) {
      RxUtils.subscribe(executor, rx().delete(id), callback);
    }

    public void list(BusinessValidationRuleFilter filter, VoucherifyCallback callback) {
      RxUtils.subscribe(executor, rx().list(filter), callback);
    }

    public void createAssignment(String id, CreateBusinessValidationRuleAssignment assignment, VoucherifyCallback callback) {
      RxUtils.subscribe(executor, rx().createAssignment(id, assignment), callback);
    }

    public void deleteAssignment(String validationRuleId, String assignmentId, VoucherifyCallback callback) {
      RxUtils.subscribe(executor, rx().deleteAssignment(validationRuleId, assignmentId), callback);
    }

    public void listAssignments(String id, BusinessValidationRuleAssignmentFilter filter, VoucherifyCallback callback) {
      RxUtils.subscribe(executor, rx().listAssignments(id, filter), callback);
    }
  }

  public class ExtRxJava extends AbsModule.Rx {

    public Observable create(final CreateBusinessValidationRule validationRule) {
      return RxUtils.defer(new RxUtils.DefFunc() {
        @Override
        public BusinessValidationRule method() {
          return ValidationRulesModule.this.create(validationRule);
        }
      });
    }

    public Observable get(final String id) {
      return RxUtils.defer(new RxUtils.DefFunc() {
        @Override
        public BusinessValidationRule method() {
          return ValidationRulesModule.this.get(id);
        }
      });
    }

    public Observable list(final BusinessValidationRuleFilter filter) {
      return RxUtils.defer(new RxUtils.DefFunc() {
        @Override
        public BusinessValidationRuleList method() {
          return ValidationRulesModule.this.list(filter);
        }
      });
    }

    public Observable update(final UpdateBusinessValidationRule validationRule) {
      return RxUtils.defer(new RxUtils.DefFunc() {
        @Override
        public BusinessValidationRule method() {
          return ValidationRulesModule.this.update(validationRule);
        }
      });
    }

    public Observable delete(final String id) {
      return RxUtils.defer(new RxUtils.DefFunc() {
        @Override
        public Void method() {
          ValidationRulesModule.this.delete(id);
          return null;
        }
      });
    }

    public Observable createAssignment(final String id, final CreateBusinessValidationRuleAssignment assignment) {
      return RxUtils.defer(new RxUtils.DefFunc() {
        @Override
        public BusinessValidationRuleAssignment method() {
          return ValidationRulesModule.this.createAssignment(id, assignment);
        }
      });
    }

    public Observable listAssignments(final String id, final BusinessValidationRuleAssignmentFilter filter) {
      return RxUtils.defer(new RxUtils.DefFunc() {
        @Override
        public BusinessValidationRuleAssignmentList method() {
          return ValidationRulesModule.this.listAssignments(id, filter);
        }
      });
    }

    public Observable deleteAssignment(final String validationRuleId, final String assignmentId) {
      return RxUtils.defer(new RxUtils.DefFunc() {
        @Override
        public Void method() {
          ValidationRulesModule.this.deleteAssignment(validationRuleId, assignmentId);
          return null;
        }
      });
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy