001/* 002 * Copyright 2010-2013 Ning, Inc. 003 * 004 * Ning licenses this file to you under the Apache License, version 2.0 005 * (the "License"); you may not use this file except in compliance with the 006 * License. You may obtain a copy of the License at: 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations 014 * under the License. 015 */ 016 017package com.ning.billing.recurly.model; 018 019import javax.xml.bind.annotation.XmlElement; 020import javax.xml.bind.annotation.XmlRootElement; 021import javax.xml.bind.annotation.XmlTransient; 022 023import org.joda.time.DateTime; 024 025@XmlRootElement(name = "add_on") 026public class AddOn extends AbstractAddOn { 027 028 @XmlTransient 029 public static final String ADDONS_RESOURCE = "/add_ons"; 030 031 @XmlElement(name = "name") 032 private String name; 033 034 @XmlElement(name = "display_quantity_on_hosted_page") 035 private Boolean displayQuantityOnHostedPage; 036 037 @XmlElement(name = "default_quantity") 038 private Integer defaultQuantity; 039 040 @XmlElement(name = "unit_amount_in_cents") 041 private Plan.RecurlyUnitCurrency unitAmountInCents; 042 043 @XmlElement(name = "created_at") 044 private DateTime createdAt; 045 046 public String getName() { 047 return name; 048 } 049 050 public void setName(final Object name) { 051 this.name = stringOrNull(name); 052 } 053 054 public Boolean getDisplayQuantityOnHostedPage() { 055 return displayQuantityOnHostedPage; 056 } 057 058 public void setDisplayQuantityOnHostedPage(final Object displayQuantityOnHostedPage) { 059 this.displayQuantityOnHostedPage = booleanOrNull(displayQuantityOnHostedPage); 060 } 061 062 public Integer getDefaultQuantity() { 063 return defaultQuantity; 064 } 065 066 public void setDefaultQuantity(final Object defaultQuantity) { 067 this.defaultQuantity = integerOrNull(defaultQuantity); 068 } 069 070 public Plan.RecurlyUnitCurrency getUnitAmountInCents() { 071 return unitAmountInCents; 072 } 073 074 public void setUnitAmountInCents(final Plan.RecurlyUnitCurrency unitAmountInCents) { 075 this.unitAmountInCents = unitAmountInCents; 076 } 077 078 public DateTime getCreatedAt() { 079 return createdAt; 080 } 081 082 public void setCreatedAt(final Object createdAt) { 083 this.createdAt = dateTimeOrNull(createdAt); 084 } 085 086 @Override 087 public String toString() { 088 final StringBuilder sb = new StringBuilder("AddOn{"); 089 sb.append("name='").append(name).append('\''); 090 sb.append(", displayQuantityOnHostedPage=").append(displayQuantityOnHostedPage); 091 sb.append(", defaultQuantity=").append(defaultQuantity); 092 sb.append(", unitAmountInCents=").append(unitAmountInCents); 093 sb.append(", createdAt=").append(createdAt); 094 sb.append('}'); 095 return sb.toString(); 096 } 097 098 @Override 099 public boolean equals(final Object o) { 100 if (this == o) { 101 return true; 102 } 103 if (o == null || getClass() != o.getClass()) { 104 return false; 105 } 106 if (!super.equals(o)) { 107 return false; 108 } 109 110 final AddOn addOn = (AddOn) o; 111 112 if (createdAt != null ? createdAt.compareTo(addOn.createdAt) != 0 : addOn.createdAt != null) { 113 return false; 114 } 115 if (defaultQuantity != null ? !defaultQuantity.equals(addOn.defaultQuantity) : addOn.defaultQuantity != null) { 116 return false; 117 } 118 if (displayQuantityOnHostedPage != null ? !displayQuantityOnHostedPage.equals(addOn.displayQuantityOnHostedPage) : addOn.displayQuantityOnHostedPage != null) { 119 return false; 120 } 121 if (name != null ? !name.equals(addOn.name) : addOn.name != null) { 122 return false; 123 } 124 if (unitAmountInCents != null ? !unitAmountInCents.equals(addOn.unitAmountInCents) : addOn.unitAmountInCents != null) { 125 return false; 126 } 127 128 return true; 129 } 130 131 @Override 132 public int hashCode() { 133 int result = super.hashCode(); 134 result = 31 * result + (name != null ? name.hashCode() : 0); 135 result = 31 * result + (displayQuantityOnHostedPage != null ? displayQuantityOnHostedPage.hashCode() : 0); 136 result = 31 * result + (defaultQuantity != null ? defaultQuantity.hashCode() : 0); 137 result = 31 * result + (unitAmountInCents != null ? unitAmountInCents.hashCode() : 0); 138 result = 31 * result + (createdAt != null ? createdAt.hashCode() : 0); 139 return result; 140 } 141}