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

com.arm.mbed.cloud.sdk.billing.model.ServicePackage Maven / Gradle / Ivy

package com.arm.mbed.cloud.sdk.billing.model;

import java.util.Date;

import com.arm.mbed.cloud.sdk.annotations.Internal;
import com.arm.mbed.cloud.sdk.annotations.Preamble;

@Preamble(description = "Model for billing service packages")
/**
 * A Service package that allows the customer to do a certain number of firmware updates to customer's devices. A
 * service package has a validity period of 1 year. Customers can only have one active service package at a time.
 *
 */
@SuppressWarnings("PMD.CyclomaticComplexity")
public class ServicePackage extends AbstractBillingEntity {
    /**
     * Serialisation Id.
     */
    private static final long serialVersionUID = -1798436673224523170L;
    private final Date createdAt;
    private final Date startsAt;
    private final Date expiresAt;
    private final Date endsAt;
    private final Date modifiedAt;
    private final boolean gracePeriod;
    private final long firmwareUpdateCount;
    private final String previousId;
    private final String nextId;
    private final String reason;
    private final ServicePackageState state;

    /**
     * Internal Constructor.
     *
     * @param id
     *            id.
     * @param createdAt
     *            createdAt.
     * @param startsAt
     *            startsAt
     * @param expiresAt
     *            expiresAt
     * @param endsAt
     *            endsAt
     * @param modifiedAt
     *            modifiedAt
     * @param gracePeriod
     *            gracePeriod
     * @param firmwareUpdateCount
     *            firmwareUpdateCount
     * @param previousId
     *            previousId
     * @param nextId
     *            nextId
     * @param reason
     *            reason
     * @param state
     *            state
     */
    @Internal
    public ServicePackage(String id, Date createdAt, Date startsAt, Date expiresAt, Date endsAt, Date modifiedAt,
                          boolean gracePeriod, long firmwareUpdateCount, String previousId, String nextId,
                          String reason, ServicePackageState state) {
        super(id);
        this.createdAt = createdAt;
        this.startsAt = startsAt;
        this.expiresAt = expiresAt;
        this.modifiedAt = modifiedAt;
        this.endsAt = endsAt;
        this.gracePeriod = gracePeriod;
        this.firmwareUpdateCount = firmwareUpdateCount;
        this.previousId = previousId;
        this.nextId = nextId;
        this.reason = reason;
        this.state = state;
    }

    /**
     * Constructor.
     */
    public ServicePackage() {
        this(null, new Date(), new Date(), new Date(), new Date(), new Date(), false, 0, null, null, null,
             ServicePackageState.getDefault());
    }

    /**
     * Gets when the package was created.
     *
     * @return the createdAt
     */
    public Date getCreatedAt() {
        return createdAt;
    }

    /**
     * Gets when the service package starts.
     *
     * @return the startsAt
     */
    public Date getStartsAt() {
        return startsAt;
    }

    /**
     * Gets when the service package expires.
     * 

* Service package expiration drops the customer's quota to zero and prevents starting of new firmware update * campaigns. Customer enters a grace period before the usage is fully blocked. * * @return the expiresAt */ public Date getExpiresAt() { return expiresAt; } /** * Gets when the service package was last modified. * * @return the modifiedAt */ public Date getModifiedAt() { return modifiedAt; } /** * Gets when the service package ends. *

* After the service package has ended the grace period the service package is considered terminated. * * @return the endsAt */ public Date getEndsAt() { return endsAt; } /** * States whether the service package is in grace period or not. *

* When service package has expired customer moves to 60 day grace period. It prevents immediately blocking or * terminating any ongoing firmware update campaigns and ensures the customer can still update their devices using * the firmware updates they have paid for. After the 60 day grace period the firmware update functionality will be * fully blocked. * * @return the gracePeriod */ public boolean isGracePeriod() { return gracePeriod; } /** * Gets firmware update count for this service package. *

* Customer's firmware update quota determines how many times the customer can update device's firmware. Quota can * be split into multiple firmware update campaigns and when customer starts a new firmware update campaign it * reduces the quota by the size of the campaign. Quota can be increased by ending ongoing campaigns or by buying a * new service package. * * @return the firmwareUpdateCount */ public long getFirmwareUpdateCount() { return firmwareUpdateCount; } /** * Gets the ID of previous service package in the sequence. * * @return the previousId */ public String getPreviousId() { return previousId; } /** * Gets the ID of next service package in the sequence. * * @return the nextId */ public String getNextId() { return nextId; } /** * Gets the reason why this service package was ended. * * @return the reason */ public String getReason() { return reason; } /** * Gets the service package state. * * @return the state */ public ServicePackageState getState() { return state; } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((createdAt == null) ? 0 : createdAt.hashCode()); result = prime * result + ((endsAt == null) ? 0 : endsAt.hashCode()); result = prime * result + ((expiresAt == null) ? 0 : expiresAt.hashCode()); result = prime * result + (int) (firmwareUpdateCount ^ (firmwareUpdateCount >>> 32)); result = prime * result + (gracePeriod ? 1231 : 1237); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((modifiedAt == null) ? 0 : modifiedAt.hashCode()); result = prime * result + ((nextId == null) ? 0 : nextId.hashCode()); result = prime * result + ((previousId == null) ? 0 : previousId.hashCode()); result = prime * result + ((reason == null) ? 0 : reason.hashCode()); result = prime * result + ((startsAt == null) ? 0 : startsAt.hashCode()); result = prime * result + ((state == null) ? 0 : state.hashCode()); return result; } /* * (non-Javadoc) * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final ServicePackage other = (ServicePackage) obj; if (createdAt == null) { if (other.createdAt != null) { return false; } } else if (!createdAt.equals(other.createdAt)) { return false; } if (endsAt == null) { if (other.endsAt != null) { return false; } } else if (!endsAt.equals(other.endsAt)) { return false; } if (expiresAt == null) { if (other.expiresAt != null) { return false; } } else if (!expiresAt.equals(other.expiresAt)) { return false; } if (firmwareUpdateCount != other.firmwareUpdateCount) { return false; } if (gracePeriod != other.gracePeriod) { return false; } if (id == null) { if (other.id != null) { return false; } } else if (!id.equals(other.id)) { return false; } if (modifiedAt == null) { if (other.modifiedAt != null) { return false; } } else if (!modifiedAt.equals(other.modifiedAt)) { return false; } if (nextId == null) { if (other.nextId != null) { return false; } } else if (!nextId.equals(other.nextId)) { return false; } if (previousId == null) { if (other.previousId != null) { return false; } } else if (!previousId.equals(other.previousId)) { return false; } if (reason == null) { if (other.reason != null) { return false; } } else if (!reason.equals(other.reason)) { return false; } if (startsAt == null) { if (other.startsAt != null) { return false; } } else if (!startsAt.equals(other.startsAt)) { return false; } if (state != other.state) { return false; } return true; } @Override public ServicePackage clone() { return new ServicePackage(id, createdAt, startsAt, expiresAt, endsAt, modifiedAt, gracePeriod, firmwareUpdateCount, previousId, nextId, reason, state); } @Override public String toString() { return "ServicePackage [createdAt=" + createdAt + ", startsAt=" + startsAt + ", expiresAt=" + expiresAt + ", endsAt=" + endsAt + ", modifiedAt=" + modifiedAt + ", gracePeriod=" + gracePeriod + ", firmwareUpdateCount=" + firmwareUpdateCount + ", previousId=" + previousId + ", nextId=" + nextId + ", reason=" + reason + ", state=" + state + "]"; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy