package com.ericliudeveloper.sharedbillhelper.model; import java.util.UUID; public class PaymentInfo { public long getId() { return id; } private final long id; private final String serialNumber; private final String name; private String description; private final double totalAmount; private final int numberOfMembersPaid; private final int numberOfBillsPaid; private final String paidTime; public int getDeleted() { return deleted; } public void setDeleted(int deleted) { this.deleted = deleted; } private int deleted = 0; public static class Builder { private long id = -100L; private String serialNumber; private String name; private String description; private double totalAmount; private int numberOfMembersPaid; private int numberOfBillsPaid; private String paidTime; private int deleted; public Builder() { } /** * only to be called when instantiating an instance from DB data * @param id * @return */ public Builder setId(long id) { this.id = id; return this; } public Builder name(String name) { this.name = name; return this; } public Builder description(String description) { this.description = description; return this; } public Builder totalAmount(double totalAmount) { this.totalAmount = totalAmount; return this; } public Builder numberOfMembersPaid(int number) { this.numberOfMembersPaid = number; return this; } public Builder numberOfBillsPaid(int number) { this.numberOfBillsPaid = number; return this; } public Builder paidTime(String time) { this.paidTime = time; return this; } /** * Add 1 to serial number everytime a new instance is created. * * @return */ public PaymentInfo build() { // generate a unique identifier for every PaymentInfo instance this.serialNumber = UUID.randomUUID().toString(); return new PaymentInfo(this); } } private PaymentInfo(Builder builder) { this.id = builder.id; this.serialNumber = builder.serialNumber; this.name = builder.name; this.description = builder.description; this.totalAmount = builder.totalAmount; this.numberOfMembersPaid = builder.numberOfMembersPaid; this.numberOfBillsPaid = builder.numberOfBillsPaid; this.paidTime = builder.paidTime; this.deleted = builder.deleted; } public void setDescription(String description) { this.description = description; } public String getSerialNumber() { return serialNumber; } public String getName() { return name; } public String getDescription() { return description; } public double getTotalAmount() { return totalAmount; } public int getNumberOfMembersPaid() { return numberOfMembersPaid; } public int getNumberOfBillsPaid() { return numberOfBillsPaid; } public String getPaidTime() { return paidTime; } }