package book.example.persistence.tests.builders;
import book.example.persistence.model.CreditCardDetails;
import java.util.Date;
public class CreditCardDetailsBuilder extends AbstractBuilder<CreditCardDetailsBuilder, CreditCardDetails> {
private String nameOnCard = "bob";
private String cardNumber = "1234567890";
private Date expiryDate = new Date();
private AddressBuilder billingAddressBuilder = new AddressBuilder();
public CreditCardDetails build() {
return new CreditCardDetails(nameOnCard, cardNumber, expiryDate, billingAddressBuilder.build());
}
public CreditCardDetailsBuilder withNameOnCard(String nameOnCard) {
CreditCardDetailsBuilder other = clone();
other.nameOnCard = nameOnCard;
return other;
}
public CreditCardDetailsBuilder withCardNumber(String cardNumber) {
CreditCardDetailsBuilder other = clone();
other.cardNumber = cardNumber;
return other;
}
public CreditCardDetailsBuilder withExpiryDate(Date expiryDate) {
CreditCardDetailsBuilder other = clone();
other.expiryDate = expiryDate;
return other;
}
public CreditCardDetailsBuilder withBillingAddress(AddressBuilder billingAddressBuilder) {
CreditCardDetailsBuilder other = clone();
other.billingAddressBuilder = billingAddressBuilder;
return other;
}
public static CreditCardDetailsBuilder aCreditCard() {
return new CreditCardDetailsBuilder();
}
}