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

au.org.consumerdatastandards.holder.model.energy.EnergyPlanContractFullV2 Maven / Gradle / Ivy

The newest version!
package au.org.consumerdatastandards.holder.model.energy;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.CascadeType;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * EnergyPlanContractFullV2
 */
@Entity
@Table(name = "e_plan_contract")
public class EnergyPlanContractFullV2 implements EnergyPlanContractFull {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid2")
    @JsonIgnore
    private String id;

    private String additionalFeeInformation;

    private PricingModelEnum pricingModel;

    private TimeZoneEnum timeZone;

    private Boolean isFixed;

    private String variation;

    private String onExpiryDescription;

    @Valid
    @ElementCollection
    private List paymentOption = new ArrayList<>();

    @OneToOne(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_green",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "green_id"))
    private EnergyPlanContractIntrinsicGreenPower intrinsicGreenPower;

    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_ctrl_load",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "ctrl_load_id"))
    private List controlledLoad;

    @Valid
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_incentives",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "incentives_id"))
    private List incentives = null;

    @Valid
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_discounts",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "discounts_id"))
    private List discounts = null;

    @Valid
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_charges",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "green_power_charges_id"))
    private List greenPowerCharges = null;

    @Valid
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_eligibility",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "eligibility_id"))
    private List eligibility = null;

    @Valid
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_fees",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "fees_id"))
    private List fees = null;

    @Valid
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_solar_fit",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "solar_fit_id"))
    private List solarFeedInTariff = null;

    @Valid
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "e_plan_contract_tariff_periods",
            joinColumns = @JoinColumn(name = "id"),
            inverseJoinColumns = @JoinColumn(name = "tariff_period_id"))
    private List tariffPeriod = new ArrayList<>();

    private TermTypeEnum termType;

    private String benefitPeriod;

    private String terms;

    @Valid
    @ElementCollection
    private List meterTypes = null;

    private Integer coolingOffDays;

    @Valid
    @ElementCollection
    private List billFrequency = new ArrayList<>();

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public EnergyPlanContractFull additionalFeeInformation(String additionalFeeInformation) {
        this.additionalFeeInformation = additionalFeeInformation;
        return this;
    }

    /**
     * Free text field containing additional information of the fees for this contract
     *
     * @return additionalFeeInformation
     */
    @Override
    @ApiModelProperty(value = "Free text field containing additional information of the fees for this contract")
    public String getAdditionalFeeInformation() {
        return additionalFeeInformation;
    }

    @Override
    public void setAdditionalFeeInformation(String additionalFeeInformation) {
        this.additionalFeeInformation = additionalFeeInformation;
    }

    public EnergyPlanContractFull pricingModel(PricingModelEnum pricingModel) {
        this.pricingModel = pricingModel;
        return this;
    }

    /**
     * The pricing model for the contract.  Contracts for gas must use SINGLE_RATE.  Note that the detail for the enumeration values are:
  • **SINGLE_RATE** - all energy usage is charged at a single unit rate no matter when it is consumed. Multiple unit rates may exist that correspond to varying volumes of usage i.e. a ‘block’ or ‘step’ tariff (first 50kWh @ X cents, next 50kWh at Y cents etc.
  • **SINGLE_RATE_CONT_LOAD** - as above, but with an additional, separate unit rate charged for all energy usage from a controlled load i.e. separately metered appliance like hot water service, pool pump etc.
  • **TIME_OF_USE** - energy usage is charged at unit rates that vary dependent on time of day and day of week that the energy is consumed
  • **TIME_OF_USE_CONT_LOAD** - as above, but with an additional, separate unit rate charged for all energy usage from a controlled load i.e. separately metered appliance like hot water service, pool pump etc.
  • **FLEXIBLE** - energy usage is charged at unit rates that vary based on external factors
  • **FLEXIBLE_CONT_LOAD** - as above, but with an additional, separate unit rate charged for all energy usage from a controlled load i.e. separately metered appliance like hot water service, pool pump etc.
  • **QUOTA** - all energy usage is charged at a single fixed rate, up to a specified usage quota/allowance. All excess usage beyond the allowance is then charged at a single unit rate (may not be the best way to explain it but it is essentially a ‘subscription’ or telco style product i.e. $50/month for up to 150kWh included usage
* * @return pricingModel */ @Override @ApiModelProperty(required = true, value = "The pricing model for the contract. Contracts for gas must use SINGLE_RATE. Note that the detail for the enumeration values are:
  • **SINGLE_RATE** - all energy usage is charged at a single unit rate no matter when it is consumed. Multiple unit rates may exist that correspond to varying volumes of usage i.e. a ‘block’ or ‘step’ tariff (first 50kWh @ X cents, next 50kWh at Y cents etc.
  • **SINGLE_RATE_CONT_LOAD** - as above, but with an additional, separate unit rate charged for all energy usage from a controlled load i.e. separately metered appliance like hot water service, pool pump etc.
  • **TIME_OF_USE** - energy usage is charged at unit rates that vary dependent on time of day and day of week that the energy is consumed
  • **TIME_OF_USE_CONT_LOAD** - as above, but with an additional, separate unit rate charged for all energy usage from a controlled load i.e. separately metered appliance like hot water service, pool pump etc.
  • **FLEXIBLE** - energy usage is charged at unit rates that vary based on external factors
  • **FLEXIBLE_CONT_LOAD** - as above, but with an additional, separate unit rate charged for all energy usage from a controlled load i.e. separately metered appliance like hot water service, pool pump etc.
  • **QUOTA** - all energy usage is charged at a single fixed rate, up to a specified usage quota/allowance. All excess usage beyond the allowance is then charged at a single unit rate (may not be the best way to explain it but it is essentially a ‘subscription’ or telco style product i.e. $50/month for up to 150kWh included usage
") @NotNull public PricingModelEnum getPricingModel() { return pricingModel; } @Override public void setPricingModel(PricingModelEnum pricingModel) { this.pricingModel = pricingModel; } public EnergyPlanContractFull timeZone(TimeZoneEnum timeZone) { this.timeZone = timeZone; return this; } /** * Required if pricingModel is set to TIME_OF_USE. Defines the time zone to use for calculation of the time of use thresholds. Defaults to AEST if absent * * @return timeZone */ @Override @ApiModelProperty(value = "Required if pricingModel is set to TIME_OF_USE. Defines the time zone to use for calculation of the time of use thresholds. Defaults to AEST if absent") public TimeZoneEnum getTimeZone() { return timeZone; } @Override public void setTimeZone(TimeZoneEnum timeZone) { this.timeZone = timeZone; } public EnergyPlanContractFull isFixed(Boolean isFixed) { this.isFixed = isFixed; return this; } /** * Flag indicating whether prices are fixed or variable * * @return isFixed */ @Override @ApiModelProperty(required = true, value = "Flag indicating whether prices are fixed or variable") @NotNull public Boolean getIsFixed() { return isFixed; } @Override public void setIsFixed(Boolean isFixed) { this.isFixed = isFixed; } public EnergyPlanContractFull variation(String variation) { this.variation = variation; return this; } /** * Free text description of price variation policy and conditions for the contract. Mandatory if `isFixed` is false * * @return variation */ @Override @ApiModelProperty(value = "Free text description of price variation policy and conditions for the contract. Mandatory if `isFixed` is false") public String getVariation() { return variation; } @Override public void setVariation(String variation) { this.variation = variation; } public EnergyPlanContractFull onExpiryDescription(String onExpiryDescription) { this.onExpiryDescription = onExpiryDescription; return this; } /** * Free text field that describes what will occur on or prior to expiry of the fixed contract term or benefit period * * @return onExpiryDescription */ @Override @ApiModelProperty(value = "Free text field that describes what will occur on or prior to expiry of the fixed contract term or benefit period") public String getOnExpiryDescription() { return onExpiryDescription; } @Override public void setOnExpiryDescription(String onExpiryDescription) { this.onExpiryDescription = onExpiryDescription; } public EnergyPlanContractFull paymentOption(List paymentOption) { this.paymentOption = paymentOption; return this; } public EnergyPlanContractFull addPaymentOptionItem(PaymentOptionEnum paymentOptionItem) { this.paymentOption.add(paymentOptionItem); return this; } /** * Payment options for this contract * * @return paymentOption */ @Override @ApiModelProperty(required = true, value = "Payment options for this contract") @NotNull public List getPaymentOption() { return paymentOption; } @Override public void setPaymentOption(List paymentOption) { this.paymentOption = paymentOption; } public EnergyPlanContractFull intrinsicGreenPower(EnergyPlanContractIntrinsicGreenPower intrinsicGreenPower) { this.intrinsicGreenPower = intrinsicGreenPower; return this; } /** * Get intrinsicGreenPower * * @return intrinsicGreenPower */ @Override @ApiModelProperty(value = "") @Valid public EnergyPlanContractIntrinsicGreenPower getIntrinsicGreenPower() { return intrinsicGreenPower; } @Override public void setIntrinsicGreenPower(EnergyPlanContractIntrinsicGreenPower intrinsicGreenPower) { this.intrinsicGreenPower = intrinsicGreenPower; } public EnergyPlanContractFull controlledLoad(List controlledLoad) { this.controlledLoad = controlledLoad; return this; } /** * Get controlledLoad * * @return controlledLoad */ @Override @ApiModelProperty(value = "") public List getControlledLoad() { return controlledLoad; } @Override public void setControlledLoad(List controlledLoad) { this.controlledLoad = controlledLoad; } public EnergyPlanContractFull incentives(List incentives) { this.incentives = incentives; return this; } public EnergyPlanContractFull addIncentivesItem(EnergyPlanContractIncentives incentivesItem) { if (this.incentives == null) { this.incentives = new ArrayList<>(); } this.incentives.add(incentivesItem); return this; } /** * Optional list of incentives available for the contract * * @return incentives */ @Override @ApiModelProperty(value = "Optional list of incentives available for the contract") @Valid public List getIncentives() { return incentives; } @Override public void setIncentives(List incentives) { this.incentives = incentives; } public EnergyPlanContractFull discounts(List discounts) { this.discounts = discounts; return this; } public EnergyPlanContractFull addDiscountsItem(EnergyPlanContractDiscounts discountsItem) { if (this.discounts == null) { this.discounts = new ArrayList<>(); } this.discounts.add(discountsItem); return this; } /** * Optional list of discounts available for the contract * * @return discounts */ @Override @ApiModelProperty(value = "Optional list of discounts available for the contract") @Valid public List getDiscounts() { return discounts; } @Override public void setDiscounts(List discounts) { this.discounts = discounts; } public EnergyPlanContractFull greenPowerCharges(List greenPowerCharges) { this.greenPowerCharges = greenPowerCharges; return this; } public EnergyPlanContractFull addGreenPowerChargesItem(EnergyPlanContractGreenPowerCharges greenPowerChargesItem) { if (this.greenPowerCharges == null) { this.greenPowerCharges = new ArrayList<>(); } this.greenPowerCharges.add(greenPowerChargesItem); return this; } /** * Optional list of charges applicable to green power * * @return greenPowerCharges */ @Override @ApiModelProperty(value = "Optional list of charges applicable to green power") @Valid public List getGreenPowerCharges() { return greenPowerCharges; } @Override public void setGreenPowerCharges(List greenPowerCharges) { this.greenPowerCharges = greenPowerCharges; } public EnergyPlanContractFull eligibility(List eligibility) { this.eligibility = eligibility; return this; } public EnergyPlanContractFull addEligibilityItem(EnergyPlanContractEligibility eligibilityItem) { if (this.eligibility == null) { this.eligibility = new ArrayList<>(); } this.eligibility.add(eligibilityItem); return this; } /** * Eligibility restrictions or requirements * * @return eligibility */ @Override @ApiModelProperty(value = "Eligibility restrictions or requirements") @Valid public List getEligibility() { return eligibility; } @Override public void setEligibility(List eligibility) { this.eligibility = eligibility; } public EnergyPlanContractFull fees(List fees) { this.fees = fees; return this; } public EnergyPlanContractFull addFeesItem(EnergyPlanContractFees feesItem) { if (this.fees == null) { this.fees = new ArrayList<>(); } this.fees.add(feesItem); return this; } /** * An array of fees applicable to the plan * * @return fees */ @Override @ApiModelProperty(value = "An array of fees applicable to the plan") @Valid public List getFees() { return fees; } @Override public void setFees(List fees) { this.fees = fees; } public EnergyPlanContractFull solarFeedInTariff(List solarFeedInTariff) { this.solarFeedInTariff = solarFeedInTariff; return this; } public EnergyPlanContractFull addSolarFeedInTariffItem(EnergyPlanContractSolarFeedInTariffV2 solarFeedInTariffItem) { if (this.solarFeedInTariff == null) { this.solarFeedInTariff = new ArrayList<>(); } this.solarFeedInTariff.add(solarFeedInTariffItem); return this; } /** * Array of feed in tariffs for solar power * * @return solarFeedInTariff */ @ApiModelProperty(value = "Array of feed in tariffs for solar power") @Valid public List getSolarFeedInTariff() { return solarFeedInTariff; } public void setSolarFeedInTariff(List solarFeedInTariff) { this.solarFeedInTariff = solarFeedInTariff; } public EnergyPlanContractFull tariffPeriod(List tariffPeriod) { this.tariffPeriod = tariffPeriod; return this; } public EnergyPlanContractFull addTariffPeriodItem(EnergyPlanContractTariffPeriod tariffPeriodItem) { this.tariffPeriod.add(tariffPeriodItem); return this; } /** * Array of tariff periods * * @return tariffPeriod */ @Override @ApiModelProperty(required = true, value = "Array of tariff periods") @NotNull @Valid public List getTariffPeriod() { return tariffPeriod; } @Override public void setTariffPeriod(List tariffPeriod) { this.tariffPeriod = tariffPeriod; } public EnergyPlanContractFull termType(TermTypeEnum termType) { this.termType = termType; return this; } /** * The term for the contract. If absent assumes no specified term * * @return termType */ @Override @ApiModelProperty(value = "The term for the contract. If absent assumes no specified term") public TermTypeEnum getTermType() { return termType; } @Override public void setTermType(TermTypeEnum termType) { this.termType = termType; } public EnergyPlanContractFull benefitPeriod(String benefitPeriod) { this.benefitPeriod = benefitPeriod; return this; } /** * Description of the benefit period. Should only be present if termType has the value ONGOING * * @return benefitPeriod */ @Override @ApiModelProperty(value = "Description of the benefit period. Should only be present if termType has the value ONGOING") public String getBenefitPeriod() { return benefitPeriod; } @Override public void setBenefitPeriod(String benefitPeriod) { this.benefitPeriod = benefitPeriod; } public EnergyPlanContractFull terms(String terms) { this.terms = terms; return this; } /** * Free text description of the terms for the contract * * @return terms */ @Override @ApiModelProperty(value = "Free text description of the terms for the contract") public String getTerms() { return terms; } @Override public void setTerms(String terms) { this.terms = terms; } public EnergyPlanContractFull meterTypes(List meterTypes) { this.meterTypes = meterTypes; return this; } public EnergyPlanContractFull addMeterTypesItem(String meterTypesItem) { if (this.meterTypes == null) { this.meterTypes = new ArrayList<>(); } this.meterTypes.add(meterTypesItem); return this; } /** * An array of the meter types that this contract is available for * * @return meterTypes */ @Override @ApiModelProperty(value = "An array of the meter types that this contract is available for") public List getMeterTypes() { return meterTypes; } @Override public void setMeterTypes(List meterTypes) { this.meterTypes = meterTypes; } public EnergyPlanContractFull coolingOffDays(Integer coolingOffDays) { this.coolingOffDays = coolingOffDays; return this; } /** * Number of days in the cooling off period for the contract. Mandatory for plans with type of MARKET * * @return coolingOffDays */ @Override @ApiModelProperty(value = "Number of days in the cooling off period for the contract. Mandatory for plans with type of MARKET ") public Integer getCoolingOffDays() { return coolingOffDays; } @Override public void setCoolingOffDays(Integer coolingOffDays) { this.coolingOffDays = coolingOffDays; } public EnergyPlanContractFull billFrequency(List billFrequency) { this.billFrequency = billFrequency; return this; } public EnergyPlanContractFull addBillFrequencyItem(String billFrequencyItem) { this.billFrequency.add(billFrequencyItem); return this; } /** * An array of the available billing schedules for this contract. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax) * * @return billFrequency */ @Override @ApiModelProperty(required = true, value = "An array of the available billing schedules for this contract. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax)") @NotNull public List getBillFrequency() { return billFrequency; } @Override public void setBillFrequency(List billFrequency) { this.billFrequency = billFrequency; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } EnergyPlanContractFullV2 energyPlanContractFull = (EnergyPlanContractFullV2) o; return Objects.equals(this.additionalFeeInformation, energyPlanContractFull.additionalFeeInformation) && Objects.equals(this.pricingModel, energyPlanContractFull.pricingModel) && Objects.equals(this.timeZone, energyPlanContractFull.timeZone) && Objects.equals(this.isFixed, energyPlanContractFull.isFixed) && Objects.equals(this.variation, energyPlanContractFull.variation) && Objects.equals(this.onExpiryDescription, energyPlanContractFull.onExpiryDescription) && Objects.equals(this.paymentOption, energyPlanContractFull.paymentOption) && Objects.equals(this.intrinsicGreenPower, energyPlanContractFull.intrinsicGreenPower) && Objects.equals(this.controlledLoad, energyPlanContractFull.controlledLoad) && Objects.equals(this.incentives, energyPlanContractFull.incentives) && Objects.equals(this.discounts, energyPlanContractFull.discounts) && Objects.equals(this.greenPowerCharges, energyPlanContractFull.greenPowerCharges) && Objects.equals(this.eligibility, energyPlanContractFull.eligibility) && Objects.equals(this.fees, energyPlanContractFull.fees) && Objects.equals(this.solarFeedInTariff, energyPlanContractFull.solarFeedInTariff) && Objects.equals(this.tariffPeriod, energyPlanContractFull.tariffPeriod) && Objects.equals(this.termType, energyPlanContractFull.termType) && Objects.equals(this.benefitPeriod, energyPlanContractFull.benefitPeriod) && Objects.equals(this.terms, energyPlanContractFull.terms) && Objects.equals(this.meterTypes, energyPlanContractFull.meterTypes) && Objects.equals(this.coolingOffDays, energyPlanContractFull.coolingOffDays) && Objects.equals(this.billFrequency, energyPlanContractFull.billFrequency); } @Override public int hashCode() { return Objects.hash(additionalFeeInformation, pricingModel, timeZone, isFixed, variation, onExpiryDescription, paymentOption, intrinsicGreenPower, controlledLoad, incentives, discounts, greenPowerCharges, eligibility, fees, solarFeedInTariff, tariffPeriod, termType, benefitPeriod, terms, meterTypes, coolingOffDays, billFrequency); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class EnergyPlanContractFull {\n"); sb.append(" id: ").append(toIndentedString(id)).append("\n"); sb.append(" additionalFeeInformation: ").append(toIndentedString(additionalFeeInformation)).append("\n"); sb.append(" pricingModel: ").append(toIndentedString(pricingModel)).append("\n"); sb.append(" timeZone: ").append(toIndentedString(timeZone)).append("\n"); sb.append(" isFixed: ").append(toIndentedString(isFixed)).append("\n"); sb.append(" variation: ").append(toIndentedString(variation)).append("\n"); sb.append(" onExpiryDescription: ").append(toIndentedString(onExpiryDescription)).append("\n"); sb.append(" paymentOption: ").append(toIndentedString(paymentOption)).append("\n"); sb.append(" intrinsicGreenPower: ").append(toIndentedString(intrinsicGreenPower)).append("\n"); sb.append(" controlledLoad: ").append(toIndentedString(controlledLoad)).append("\n"); sb.append(" incentives: ").append(toIndentedString(incentives)).append("\n"); sb.append(" discounts: ").append(toIndentedString(discounts)).append("\n"); sb.append(" greenPowerCharges: ").append(toIndentedString(greenPowerCharges)).append("\n"); sb.append(" eligibility: ").append(toIndentedString(eligibility)).append("\n"); sb.append(" fees: ").append(toIndentedString(fees)).append("\n"); sb.append(" solarFeedInTariff: ").append(toIndentedString(solarFeedInTariff)).append("\n"); sb.append(" tariffPeriod: ").append(toIndentedString(tariffPeriod)).append("\n"); sb.append(" termType: ").append(toIndentedString(termType)).append("\n"); sb.append(" benefitPeriod: ").append(toIndentedString(benefitPeriod)).append("\n"); sb.append(" terms: ").append(toIndentedString(terms)).append("\n"); sb.append(" meterTypes: ").append(toIndentedString(meterTypes)).append("\n"); sb.append(" coolingOffDays: ").append(toIndentedString(coolingOffDays)).append("\n"); sb.append(" billFrequency: ").append(toIndentedString(billFrequency)).append("\n"); sb.append("}"); return sb.toString(); } /** * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ private String toIndentedString(Object o) { if (o == null) { return "null"; } return o.toString().replace("\n", "\n "); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy