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

com.silanis.esl.sdk.builder.PlanBuilder Maven / Gradle / Ivy

There is a newer version: 11.9
Show newest version
package com.silanis.esl.sdk.builder;

import com.silanis.esl.sdk.Plan;
import com.silanis.esl.sdk.Price;
import com.silanis.esl.sdk.CycleCount;
import com.silanis.esl.sdk.Quota;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PlanBuilder {
    private String contract;
    private String cycle;
    private Map data;
    private String description;
    private Map features;
    private CycleCount freeCycles;
    private String group;
    private String id;
    private String name;
    private String original;
    private Price price;
    private List quotas;

    private PlanBuilder() {
        quotas = new ArrayList();
        data = new HashMap();
        features = new HashMap();
    }

    public static PlanBuilder newPlan() {
        return new PlanBuilder();
    }

    public static PlanBuilder newPlan(String name) {
        return new PlanBuilder().withName(name);
    }

    public PlanBuilder withName(String name) {
        this.name = name;
        return this;
    }

    public PlanBuilder withId(String id) {
        this.id = id;
        return this;
    }

    public PlanBuilder withContract(String contract) {
        this.contract = contract;
        return this;
    }

    public PlanBuilder withCycle(String cycle) {
        this.cycle = cycle;
        return this;
    }

    public PlanBuilder withData(Map data) {
        this.data = data;
        return this;
    }

    public PlanBuilder withDescription(String description) {
        this.description = description;
        return this;
    }

    public PlanBuilder withFeatures(Map features) {
        this.features = features;
        return this;
    }

    public PlanBuilder withFreeCycles(CycleCount cycleCount) {
        this.freeCycles = cycleCount;
        return this;
    }

    public PlanBuilder withFreeCycles(Integer count, String cycle) {
        freeCycles = new CycleCount();
        freeCycles.setCount(count);
        freeCycles.setCycle(cycle);
        return this;
    }

    public PlanBuilder withGroup(String group) {
        this.group = group;
        return this;
    }

    public PlanBuilder withOriginal(String original) {
        this.original = original;
        return this;
    }

    public PlanBuilder withPrice(Price price) {
        this.price = price;
        return this;
    }

    public PlanBuilder withQuota(Quota quota) {
        quotas.add(quota);
        return this;
    }

    public PlanBuilder withQuota(String cycle, Integer limit, String scope, String target) {
        Quota quota = new Quota();
        quota.setCycle(cycle);
        quota.setLimit(limit);
        quota.setScope(scope);
        quota.setTarget(target);
        quotas.add(quota);
        return this;
    }

    public Plan build() {
        Plan plan = new Plan();
        plan.setContract(contract);
        plan.setData(data);
        plan.setName(name);
        plan.setId(id);
        plan.setCycle(cycle);
        plan.setDescription(description);
        plan.setPrice(price);
        plan.setFeatures(features);
        plan.setFreeCycles(freeCycles);
        plan.setOriginal(original);
        plan.setGroup(group);
        for (Quota quota : quotas) {
            plan.addQuota(quota);
        }
        return plan;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy