2 * Copyright (C) 2016 Roland Haeder
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package org.mxchange.jcustomercore.model.customer;
19 import java.io.Serializable;
20 import java.util.Calendar;
21 import org.mxchange.jcontacts.contact.Contact;
22 import org.mxchange.jcustomercore.model.customer.status.CustomerAccountStatus;
25 * A customer interface
27 * @author Roland Haeder<roland@mxchange.org>
29 public interface Customer extends Serializable {
32 * Copies all attributes from other customer object to this
34 * @param customer Source instance
36 void copyAll (final Customer customer);
39 * Getter for contact instance
41 * @return Contact id number
43 Contact getCustomerContact ();
46 * Setter for contact instance
48 * @param customerContact Contact instance
50 void setCustomerContact (final Contact customerContact);
53 * Getter for confirmation key
55 * @return Confirmation key
57 String getCustomerConfirmKey ();
60 * Setter for confirmation key
62 * @param customerConfirmKey Confirmation key
64 void setCustomerConfirmKey (final String customerConfirmKey);
67 * Getter for "created" timestamp
69 * @return "created" timestamp
71 Calendar getCustomerCreated ();
74 * Setter for "created" timestamp
76 * @param customerCreated "created" timestamp
78 void setCustomerCreated (final Calendar customerCreated);
81 * Getter for "updated" timestamp
83 * @return "updated" timestamp
85 Calendar getCustomerUpdated ();
88 * Setter for "updated" timestamp
90 * @param customerUpdated "updated" timestamp
92 void setCustomerUpdated (final Calendar customerUpdated);
95 * Getter for customer id number
97 * @return Customer id number
99 Long getCustomerId ();
102 * Settte for customer id number
104 * @param customerId Customer id number
106 void setCustomerId (final Long customerId);
109 * Getter for "locked" timestamp
111 * @return "locked" timestamp
113 Calendar getCustomerLastLocked ();
116 * Getter for "locked" timestamp
118 * @param customerLocked "locked" timestamp
120 void setCustomerLastLocked (final Calendar customerLocked);
123 * Getter for reason of last locked
125 * @return Reason of last locked
127 String getCustomerLastLockedReason ();
130 * Setter for reason of last locked
132 * @param lastLockedReason Reason of last locked
134 void setCustomerLastLockedReason (final String lastLockedReason);
137 * Getter for customer number
139 * @return Customer number
141 String getCustomerNumber ();
144 * Setter for customer number
146 * @param customerNumber Customer number
148 void setCustomerNumber (final String customerNumber);
151 * Getter for password hash
153 * @return Password hash
155 String getCustomerPasswordHash ();
158 * Setter for password hash
160 * @param customerPasswordHash Password hash
162 void setCustomerPasswordHash (final String customerPasswordHash);
165 * Getter for account status
167 * @return Account status
169 CustomerAccountStatus getCustomerAccountStatus ();
172 * Setter for account status
174 * @param customerStatus Account status
176 void setCustomerAccountStatus (final CustomerAccountStatus customerStatus);
179 boolean equals (final Object object);