/*
* Copyright 2010-2013 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package com.ning.billing.analytics.api;
import java.math.BigDecimal;
import java.util.UUID;
import org.joda.time.DateTime;
import com.ning.billing.analytics.model.BusinessSubscriptionTransitionModelDao;
import com.ning.billing.util.entity.EntityBase;
public class DefaultBusinessSubscriptionTransition extends EntityBase implements BusinessSubscriptionTransition {
private final long totalOrdering;
private final UUID bundleId;
private final String externalKey;
private final UUID accountId;
private final String accountKey;
private final UUID subscriptionId;
private final DateTime requestedTimestamp;
private final String eventType;
private final String category;
private final String prevProductName;
private final String prevProductType;
private final String prevProductCategory;
private final String prevSlug;
private final String prevPhase;
private final String prevBillingPeriod;
private final BigDecimal prevPrice;
private final String prevPriceList;
private final BigDecimal prevMrr;
private final String prevCurrency;
private final DateTime prevStartDate;
private final String prevState;
private final String nextProductName;
private final String nextProductType;
private final String nextProductCategory;
private final String nextSlug;
private final String nextPhase;
private final String nextBillingPeriod;
private final BigDecimal nextPrice;
private final String nextPriceList;
private final BigDecimal nextMrr;
private final String nextCurrency;
private final DateTime nextStartDate;
private final String nextState;
public DefaultBusinessSubscriptionTransition(final BusinessSubscriptionTransitionModelDao bstModelDao) {
this.totalOrdering = bstModelDao.getTotalOrdering();
this.bundleId = bstModelDao.getBundleId();
this.externalKey = bstModelDao.getExternalKey();
this.accountId = bstModelDao.getAccountId();
this.accountKey = bstModelDao.getAccountKey();
this.subscriptionId = bstModelDao.getSubscriptionId();
this.requestedTimestamp = bstModelDao.getRequestedTimestamp();
this.eventType = bstModelDao.getEvent().getEventType().toString();
if (bstModelDao.getEvent().getCategory() != null) {
this.category = bstModelDao.getEvent().getCategory().toString();
} else {
this.category = null;
}
if (bstModelDao.getPreviousSubscription() != null) {
this.prevProductName = bstModelDao.getPreviousSubscription().getProductName();
this.prevProductType = bstModelDao.getPreviousSubscription().getProductType();
this.prevProductCategory = bstModelDao.getPreviousSubscription().getProductCategory().toString();
this.prevSlug = bstModelDao.getPreviousSubscription().getSlug();
this.prevPhase = bstModelDao.getPreviousSubscription().getPhase();
this.prevBillingPeriod = bstModelDao.getPreviousSubscription().getBillingPeriod();
this.prevPrice = bstModelDao.getPreviousSubscription().getPrice();
this.prevPriceList = bstModelDao.getPreviousSubscription().getPriceList();
this.prevMrr = bstModelDao.getPreviousSubscription().getMrr();
this.prevCurrency = bstModelDao.getPreviousSubscription().getCurrency();
this.prevStartDate = bstModelDao.getPreviousSubscription().getStartDate();
this.prevState = bstModelDao.getPreviousSubscription().getState().toString();
} else {
this.prevProductName = null;
this.prevProductType = null;
this.prevProductCategory = null;
this.prevSlug = null;
this.prevPhase = null;
this.prevBillingPeriod = null;
this.prevPrice = null;
this.prevPriceList = null;
this.prevMrr = null;
this.prevCurrency = null;
this.prevStartDate = null;
this.prevState = null;
}
if (bstModelDao.getNextSubscription() != null) {
this.nextProductName = bstModelDao.getNextSubscription().getProductName();
this.nextProductType = bstModelDao.getNextSubscription().getProductType();
this.nextProductCategory = bstModelDao.getNextSubscription().getProductCategory().toString();
this.nextSlug = bstModelDao.getNextSubscription().getSlug();
this.nextPhase = bstModelDao.getNextSubscription().getPhase();
this.nextBillingPeriod = bstModelDao.getNextSubscription().getBillingPeriod();
this.nextPrice = bstModelDao.getNextSubscription().getPrice();
this.nextPriceList = bstModelDao.getNextSubscription().getPriceList();
this.nextMrr = bstModelDao.getNextSubscription().getMrr();
this.nextCurrency = bstModelDao.getNextSubscription().getCurrency();
this.nextStartDate = bstModelDao.getNextSubscription().getStartDate();
this.nextState = bstModelDao.getNextSubscription().getState().toString();
} else {
this.nextProductName = null;
this.nextProductType = null;
this.nextProductCategory = null;
this.nextSlug = null;
this.nextPhase = null;
this.nextBillingPeriod = null;
this.nextPrice = null;
this.nextPriceList = null;
this.nextMrr = null;
this.nextCurrency = null;
this.nextStartDate = null;
this.nextState = null;
}
}
@Override
public long getTotalOrdering() {
return totalOrdering;
}
@Override
public UUID getBundleId() {
return bundleId;
}
@Override
public String getExternalKey() {
return externalKey;
}
@Override
public UUID getAccountId() {
return accountId;
}
@Override
public String getAccountKey() {
return accountKey;
}
@Override
public UUID getSubscriptionId() {
return subscriptionId;
}
@Override
public DateTime getRequestedTimestamp() {
return requestedTimestamp;
}
@Override
public String getEventType() {
return eventType;
}
@Override
public String getCategory() {
return category;
}
@Override
public String getPrevProductName() {
return prevProductName;
}
@Override
public String getPrevProductType() {
return prevProductType;
}
@Override
public String getPrevProductCategory() {
return prevProductCategory;
}
@Override
public String getPrevSlug() {
return prevSlug;
}
@Override
public String getPrevPhase() {
return prevPhase;
}
@Override
public String getPrevBillingPeriod() {
return prevBillingPeriod;
}
@Override
public BigDecimal getPrevPrice() {
return prevPrice;
}
@Override
public String getPrevPriceList() {
return prevPriceList;
}
@Override
public BigDecimal getPrevMrr() {
return prevMrr;
}
@Override
public String getPrevCurrency() {
return prevCurrency;
}
@Override
public DateTime getPrevStartDate() {
return prevStartDate;
}
@Override
public String getPrevState() {
return prevState;
}
@Override
public String getNextProductName() {
return nextProductName;
}
@Override
public String getNextProductType() {
return nextProductType;
}
@Override
public String getNextProductCategory() {
return nextProductCategory;
}
@Override
public String getNextSlug() {
return nextSlug;
}
@Override
public String getNextPhase() {
return nextPhase;
}
@Override
public String getNextBillingPeriod() {
return nextBillingPeriod;
}
@Override
public BigDecimal getNextPrice() {
return nextPrice;
}
@Override
public String getNextPriceList() {
return nextPriceList;
}
@Override
public BigDecimal getNextMrr() {
return nextMrr;
}
@Override
public String getNextCurrency() {
return nextCurrency;
}
@Override
public DateTime getNextStartDate() {
return nextStartDate;
}
@Override
public String getNextState() {
return nextState;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("DefaultBusinessSubscriptionTransition");
sb.append("{totalOrdering=").append(totalOrdering);
sb.append(", bundleId=").append(bundleId);
sb.append(", externalKey='").append(externalKey).append('\'');
sb.append(", accountId=").append(accountId);
sb.append(", accountKey='").append(accountKey).append('\'');
sb.append(", subscriptionId=").append(subscriptionId);
sb.append(", requestedTimestamp=").append(requestedTimestamp);
sb.append(", eventType='").append(eventType).append('\'');
sb.append(", category='").append(category).append('\'');
sb.append(", prevProductName='").append(prevProductName).append('\'');
sb.append(", prevProductType='").append(prevProductType).append('\'');
sb.append(", prevProductCategory='").append(prevProductCategory).append('\'');
sb.append(", prevSlug='").append(prevSlug).append('\'');
sb.append(", prevPhase='").append(prevPhase).append('\'');
sb.append(", prevBillingPeriod='").append(prevBillingPeriod).append('\'');
sb.append(", prevPrice=").append(prevPrice);
sb.append(", prevPriceList='").append(prevPriceList).append('\'');
sb.append(", prevMrr=").append(prevMrr);
sb.append(", prevCurrency='").append(prevCurrency).append('\'');
sb.append(", prevStartDate=").append(prevStartDate);
sb.append(", prevState='").append(prevState).append('\'');
sb.append(", nextProductName='").append(nextProductName).append('\'');
sb.append(", nextProductType='").append(nextProductType).append('\'');
sb.append(", nextProductCategory='").append(nextProductCategory).append('\'');
sb.append(", nextSlug='").append(nextSlug).append('\'');
sb.append(", nextPhase='").append(nextPhase).append('\'');
sb.append(", nextBillingPeriod='").append(nextBillingPeriod).append('\'');
sb.append(", nextPrice=").append(nextPrice);
sb.append(", nextPriceList='").append(nextPriceList).append('\'');
sb.append(", nextMrr=").append(nextMrr);
sb.append(", nextCurrency='").append(nextCurrency).append('\'');
sb.append(", nextStartDate=").append(nextStartDate);
sb.append(", nextState='").append(nextState).append('\'');
sb.append('}');
return sb.toString();
}
@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
final DefaultBusinessSubscriptionTransition that = (DefaultBusinessSubscriptionTransition) o;
if (totalOrdering != that.totalOrdering) {
return false;
}
if (accountId != null ? !accountId.equals(that.accountId) : that.accountId != null) {
return false;
}
if (accountKey != null ? !accountKey.equals(that.accountKey) : that.accountKey != null) {
return false;
}
if (bundleId != null ? !bundleId.equals(that.bundleId) : that.bundleId != null) {
return false;
}
if (category != null ? !category.equals(that.category) : that.category != null) {
return false;
}
if (eventType != null ? !eventType.equals(that.eventType) : that.eventType != null) {
return false;
}
if (externalKey != null ? !externalKey.equals(that.externalKey) : that.externalKey != null) {
return false;
}
if (nextBillingPeriod != null ? !nextBillingPeriod.equals(that.nextBillingPeriod) : that.nextBillingPeriod != null) {
return false;
}
if (nextCurrency != null ? !nextCurrency.equals(that.nextCurrency) : that.nextCurrency != null) {
return false;
}
if (nextMrr != null ? !nextMrr.equals(that.nextMrr) : that.nextMrr != null) {
return false;
}
if (nextPhase != null ? !nextPhase.equals(that.nextPhase) : that.nextPhase != null) {
return false;
}
if (nextPrice != null ? !nextPrice.equals(that.nextPrice) : that.nextPrice != null) {
return false;
}
if (nextPriceList != null ? !nextPriceList.equals(that.nextPriceList) : that.nextPriceList != null) {
return false;
}
if (nextProductCategory != null ? !nextProductCategory.equals(that.nextProductCategory) : that.nextProductCategory != null) {
return false;
}
if (nextProductName != null ? !nextProductName.equals(that.nextProductName) : that.nextProductName != null) {
return false;
}
if (nextProductType != null ? !nextProductType.equals(that.nextProductType) : that.nextProductType != null) {
return false;
}
if (nextSlug != null ? !nextSlug.equals(that.nextSlug) : that.nextSlug != null) {
return false;
}
if (nextStartDate != null ? !nextStartDate.equals(that.nextStartDate) : that.nextStartDate != null) {
return false;
}
if (nextState != null ? !nextState.equals(that.nextState) : that.nextState != null) {
return false;
}
if (prevBillingPeriod != null ? !prevBillingPeriod.equals(that.prevBillingPeriod) : that.prevBillingPeriod != null) {
return false;
}
if (prevCurrency != null ? !prevCurrency.equals(that.prevCurrency) : that.prevCurrency != null) {
return false;
}
if (prevMrr != null ? !prevMrr.equals(that.prevMrr) : that.prevMrr != null) {
return false;
}
if (prevPhase != null ? !prevPhase.equals(that.prevPhase) : that.prevPhase != null) {
return false;
}
if (prevPrice != null ? !prevPrice.equals(that.prevPrice) : that.prevPrice != null) {
return false;
}
if (prevPriceList != null ? !prevPriceList.equals(that.prevPriceList) : that.prevPriceList != null) {
return false;
}
if (prevProductCategory != null ? !prevProductCategory.equals(that.prevProductCategory) : that.prevProductCategory != null) {
return false;
}
if (prevProductName != null ? !prevProductName.equals(that.prevProductName) : that.prevProductName != null) {
return false;
}
if (prevProductType != null ? !prevProductType.equals(that.prevProductType) : that.prevProductType != null) {
return false;
}
if (prevSlug != null ? !prevSlug.equals(that.prevSlug) : that.prevSlug != null) {
return false;
}
if (prevStartDate != null ? !prevStartDate.equals(that.prevStartDate) : that.prevStartDate != null) {
return false;
}
if (prevState != null ? !prevState.equals(that.prevState) : that.prevState != null) {
return false;
}
if (requestedTimestamp != null ? !requestedTimestamp.equals(that.requestedTimestamp) : that.requestedTimestamp != null) {
return false;
}
if (subscriptionId != null ? !subscriptionId.equals(that.subscriptionId) : that.subscriptionId != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = (int) (totalOrdering ^ (totalOrdering >>> 32));
result = 31 * result + (bundleId != null ? bundleId.hashCode() : 0);
result = 31 * result + (externalKey != null ? externalKey.hashCode() : 0);
result = 31 * result + (accountId != null ? accountId.hashCode() : 0);
result = 31 * result + (accountKey != null ? accountKey.hashCode() : 0);
result = 31 * result + (subscriptionId != null ? subscriptionId.hashCode() : 0);
result = 31 * result + (requestedTimestamp != null ? requestedTimestamp.hashCode() : 0);
result = 31 * result + (eventType != null ? eventType.hashCode() : 0);
result = 31 * result + (category != null ? category.hashCode() : 0);
result = 31 * result + (prevProductName != null ? prevProductName.hashCode() : 0);
result = 31 * result + (prevProductType != null ? prevProductType.hashCode() : 0);
result = 31 * result + (prevProductCategory != null ? prevProductCategory.hashCode() : 0);
result = 31 * result + (prevSlug != null ? prevSlug.hashCode() : 0);
result = 31 * result + (prevPhase != null ? prevPhase.hashCode() : 0);
result = 31 * result + (prevBillingPeriod != null ? prevBillingPeriod.hashCode() : 0);
result = 31 * result + (prevPrice != null ? prevPrice.hashCode() : 0);
result = 31 * result + (prevPriceList != null ? prevPriceList.hashCode() : 0);
result = 31 * result + (prevMrr != null ? prevMrr.hashCode() : 0);
result = 31 * result + (prevCurrency != null ? prevCurrency.hashCode() : 0);
result = 31 * result + (prevStartDate != null ? prevStartDate.hashCode() : 0);
result = 31 * result + (prevState != null ? prevState.hashCode() : 0);
result = 31 * result + (nextProductName != null ? nextProductName.hashCode() : 0);
result = 31 * result + (nextProductType != null ? nextProductType.hashCode() : 0);
result = 31 * result + (nextProductCategory != null ? nextProductCategory.hashCode() : 0);
result = 31 * result + (nextSlug != null ? nextSlug.hashCode() : 0);
result = 31 * result + (nextPhase != null ? nextPhase.hashCode() : 0);
result = 31 * result + (nextBillingPeriod != null ? nextBillingPeriod.hashCode() : 0);
result = 31 * result + (nextPrice != null ? nextPrice.hashCode() : 0);
result = 31 * result + (nextPriceList != null ? nextPriceList.hashCode() : 0);
result = 31 * result + (nextMrr != null ? nextMrr.hashCode() : 0);
result = 31 * result + (nextCurrency != null ? nextCurrency.hashCode() : 0);
result = 31 * result + (nextStartDate != null ? nextStartDate.hashCode() : 0);
result = 31 * result + (nextState != null ? nextState.hashCode() : 0);
return result;
}
}