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

me.pagar.model.Customer Maven / Gradle / Ivy

The newest version!
package me.pagar.model;

import com.google.gson.JsonObject;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

import java.util.ArrayList;
import java.util.Collection;

import com.google.gson.reflect.TypeToken;
import org.joda.time.LocalDate;
import me.pagar.util.JSONUtils;

import javax.ws.rs.HttpMethod;

public class Customer extends PagarMeModel{

    @Expose
    @SerializedName("document_number")
    private String documentNumber;

    @Expose(serialize = false)
    @SerializedName("document_type")
    private String documentType;

    @Expose
    private String name;

    @Expose
    private String email;

    @Expose
    private String gender;

    @Expose
    @SerializedName("born_at")
    private LocalDate bornAt;

    @Expose
    private Phone phone;

    @Expose
    private Address address;

    @Expose
    private Collection
addresses; @Expose private Collection phones; @Expose @SerializedName("external_id") private String externalId; @Expose private Type type; @Expose private String country; @Expose private Collection documents; @Expose @SerializedName("phone_numbers") private Collection phoneNumbers; @Expose private String birthday; public Customer() { super(); } public Customer(final String name, final String email) { this(); this.name = name; this.email = email; this.addresses = new ArrayList
(); this.address = new Address(); this.phones = new ArrayList(); this.phone = new Phone(); } public String getDocumentNumber() { return documentNumber; } public String getDocumentType() { return documentType; } public String getName() { return name; } public String getEmail() { return email; } public String getGender() { return gender; } public LocalDate getBornAt() { return bornAt; } public Phone getPhone() { return phone; } public Address getAddress() { return address; } public Collection
getAddresses() { return addresses; } public Collection getPhones() { return phones; } public String getExternalId() { return externalId; } public Type getType() { return type; } public String getCountry() { return country; } public String getBirthday() { return birthday; } public Collection getPhoneNumbers() { return phoneNumbers; } public Collection getDocuments() { return documents; } public void setDocumentNumber(final String documentNumber) { this.documentNumber = documentNumber; addUnsavedProperty("documentNumber"); } public void setDocumentType(final String documentType) { this.documentType = documentType; addUnsavedProperty("documentType"); } public void setName(final String name) { this.name = name; addUnsavedProperty("name"); } public void setEmail(final String email) { this.email = email; addUnsavedProperty("email"); } public void setGender(final String gender) { this.gender = gender; addUnsavedProperty("gender"); } public void setBornAt(final LocalDate bornAt) { this.bornAt = bornAt; if (bornAt != null) { addUnsavedProperty("bornAt"); } } public void setExternalId(final String externalId) { this.externalId = externalId; } public void setPhone(final Phone phone) { this.phone = phone; addUnsavedProperty("phone"); } public void setAddress(final Address address) { this.address = address; addUnsavedProperty("address"); } public void setAddresses(final Collection
addresses) { this.addresses = addresses; addUnsavedProperty("addresses"); } public void setPhones(final Collection phones) { this.phones = phones; addUnsavedProperty("phones"); } public void setType(final Type type) { this.type = type; } public void setCountry(final String country) { this.country = country; } public void setPhoneNumbers(final Collection phoneNumbers) { this.phoneNumbers = phoneNumbers; } public void setBirthday(final String birthday) { this.birthday = birthday; } public void setDocuments(final Collection documents) { this.documents = documents; } public enum Type { @SerializedName("individual") INDIVIDUAL, @SerializedName("corporation") CORPORATION } public Customer save() throws PagarMeException { final Customer saved = super.save(getClass()); copy(saved); return saved; } public Customer find(int id) throws PagarMeException { final PagarMeRequest request = new PagarMeRequest(HttpMethod.GET, String.format("/%s/%s", getClassName(), id)); final Customer other = JSONUtils.getAsObject((JsonObject) request.execute(), Customer.class); copy(other); flush(); return other; } public Collection findCollection(int totalPerPage, int page) throws PagarMeException { return JSONUtils.getAsList(super.paginate(totalPerPage, page), new TypeToken>() { }.getType()); } private void copy(Customer other) { super.copy(other); this.documentNumber = other.documentNumber; this.documentType = other.documentType; this.name = other.name; this.email = other.email; this.bornAt = other.bornAt; this.gender = other.gender; } @Override public void setClassName(String className) { throw new UnsupportedOperationException("Not allowed."); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy