]> git.mxchange.org Git - jfinancials-core.git/blob - src/org/mxchange/jfinancials/model/receipt/Receipts.java
Updated copyright year
[jfinancials-core.git] / src / org / mxchange / jfinancials / model / receipt / Receipts.java
1 /*
2  * Copyright (C) 2017 - 2022 Free Software Foundation
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Affero General Public License as
6  * published by the Free Software Foundation, either version 3 of the
7  * License, or (at your option) any later version.
8  *
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 Affero General Public License for more details.
13  *
14  * You should have received a copy of the GNU Affero General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 package org.mxchange.jfinancials.model.receipt;
18
19 import java.io.Serializable;
20 import java.text.MessageFormat;
21 import java.util.Objects;
22
23 /**
24  * A utilities class for receipts
25  *
26  * @author Roland Häder<roland@mxchange.org>
27  */
28 public class Receipts implements Serializable {
29
30         /**
31          * Serial number
32          */
33         private static final long serialVersionUID = 2_867_938_676_165_401L;
34
35         /**
36          * Compares both receipt instances. This method returns -1 if second
37          * instance is null.
38          * <p>
39          * @param receipt1 BillableReceipt instance 1
40          * @param receipt2 BillableReceipt instance 2
41          * <p>
42          * @return Comparison value
43          */
44         public static int compare (final BillableReceipt receipt1, final BillableReceipt receipt2) {
45                 // Check equality, then at least first must be given
46                 if (Objects.equals(receipt1, receipt2)) {
47                         // Both are same
48                         return 0;
49                 } else if (null == receipt1) {
50                         // First is null
51                         return -1;
52                 } else if (null == receipt2) {
53                         // Second is null
54                         return 1;
55                 }
56
57                 // Invoke compareTo() method
58                 return receipt1.compareTo(receipt2);
59         }
60
61         /**
62          * Copies all fields from source receipt to target receipt.
63          * <p>
64          * @param sourceReceipt Source receipt instance
65          * @param targetReceipt Target Receipt instance
66          */
67         public static void copyReceiptData (final BillableReceipt sourceReceipt, final BillableReceipt targetReceipt) {
68                 // Both should not be null
69                 if (null == sourceReceipt) {
70                         // Throw NPE
71                         throw new NullPointerException("sourceReceipt is null"); //NOI18N
72                 } else if (null == targetReceipt) {
73                         // Throw NPE
74                         throw new NullPointerException("targetReceipt is null"); //NOI18N
75                 } else if (Objects.equals(sourceReceipt, targetReceipt)) {
76                         // Is exactly the same!
77                         throw new IllegalArgumentException("sourcerReceipt and targetReceipt are the same."); //NOI18N
78                 }
79
80                 // Copy all fields
81                 targetReceipt.setReceiptBarCodeNumber(sourceReceipt.getReceiptBarCodeNumber());
82                 targetReceipt.setReceiptBonusCard(sourceReceipt.getReceiptBonusCard());
83                 targetReceipt.setReceiptBranchOffice(sourceReceipt.getReceiptBranchOffice());
84                 targetReceipt.setReceiptId(sourceReceipt.getReceiptId());
85                 targetReceipt.setReceiptIssued(sourceReceipt.getReceiptIssued());
86                 targetReceipt.setReceiptNumber(sourceReceipt.getReceiptNumber());
87                 targetReceipt.setReceiptPaymentType(sourceReceipt.getReceiptPaymentType());
88                 targetReceipt.setReceiptQrCode(sourceReceipt.getReceiptQrCode());
89                 targetReceipt.setReceiptRegisterNumber(sourceReceipt.getReceiptRegisterNumber());
90                 targetReceipt.setReceiptSellerEmployee(sourceReceipt.getReceiptSellerEmployee());
91                 targetReceipt.setReceiptSequenceNumber(sourceReceipt.getReceiptSequenceNumber());
92                 targetReceipt.setReceiptTransactionNumber(sourceReceipt.getReceiptTransactionNumber());
93                 targetReceipt.setReceiptUser(sourceReceipt.getReceiptUser());
94         }
95
96         /**
97          * Checks whether both receipts are the same, means not true entity equality
98          * but if the receipt in general terms does already exist. A pre-check on
99          * entity equality is however performed to avoid below much longer code.
100          * <p>
101          * @param receipt1 BillableReceipt instance 1
102          * @param receipt2 BillableReceipt instance 2
103          * <p>
104          * @return Whether both receipts are the same (not instances)
105          */
106         public static boolean isSameReceipt (final BillableReceipt receipt1, final BillableReceipt receipt2) {
107                 // Pre-compare both as entities (same id)
108                 if (Objects.equals(receipt1, receipt2)) {
109                         // Same entity (with id number)
110                         return true;
111                 }
112
113                 // Validate parameter
114                 if (null == receipt1) {
115                         // Throw NPE
116                         throw new NullPointerException("receipt1 is null"); //NOI18N
117                 } else if ((receipt1.getReceiptId() instanceof Long) && (receipt1.getReceiptId() < 1)) {
118                         // Throw IAE
119                         throw new IllegalArgumentException(MessageFormat.format("receipt1.receiptId={0} is not valid.", receipt1.getReceiptId())); //NOI18N
120                 } else if (receipt1.getReceiptBranchOffice() == null) {
121                         // Throw NPE
122                         throw new NullPointerException("receipt1.receiptBranchOffice is null"); //NOI18N
123                 } else if (receipt1.getReceiptBranchOffice().getBranchId() == null) {
124                         // Throw NPE
125                         throw new NullPointerException("receipt1.receiptBranchOffice.branchId is null"); //NOI18N
126                 } else if (receipt1.getReceiptBranchOffice().getBranchId() < 1) {
127                         // Throw NPE
128                         throw new NullPointerException(MessageFormat.format("receipt1.receiptBranchOffice.branchId={0} is not valid", receipt1.getReceiptBranchOffice().getBranchId())); //NOI18N
129                 } else if ((receipt1.getReceiptNumber() != null) && (receipt1.getReceiptNumber().isEmpty())) {
130                         // Throw IAE
131                         throw new IllegalArgumentException("receipt1.receiptNumber is empty."); //NOI18N
132                 } else if (receipt1.getReceiptPaymentType() == null) {
133                         // Throw NPE
134                         throw new NullPointerException("receipt1.receiptPaymentType is null"); //NOI18N
135                 } else if (null == receipt2) {
136                         // Throw NPE
137                         throw new NullPointerException("receipt2 is null"); //NOI18N
138                 } else if ((receipt2.getReceiptId() instanceof Long) && (receipt2.getReceiptId() < 1)) {
139                         // Throw IAE
140                         throw new IllegalArgumentException(MessageFormat.format("receipt2.receiptId={0} is not valid.", receipt2.getReceiptId())); //NOI18N
141                 } else if (receipt2.getReceiptBranchOffice() == null) {
142                         // Throw NPE
143                         throw new NullPointerException("receipt2.receiptBranchOffice is null"); //NOI18N
144                 } else if (receipt2.getReceiptBranchOffice().getBranchId() == null) {
145                         // Throw NPE
146                         throw new NullPointerException("receipt2.receiptBranchOffice.branchId is null"); //NOI18N
147                 } else if (receipt2.getReceiptBranchOffice().getBranchId() < 1) {
148                         // Throw NPE
149                         throw new NullPointerException(MessageFormat.format("receipt2.receiptBranchOffice.branchId={0} is not valid", receipt2.getReceiptBranchOffice().getBranchId())); //NOI18N
150                 } else if ((receipt2.getReceiptNumber() != null) && (receipt2.getReceiptNumber().isEmpty())) {
151                         // Throw IAE
152                         throw new IllegalArgumentException("receipt2.receiptNumber is empty."); //NOI18N
153                 } else if (receipt2.getReceiptPaymentType() == null) {
154                         // Throw NPE
155                         throw new NullPointerException("receipt2.receiptPaymentType is null"); //NOI18N
156                 }
157
158                 // Now check all individually
159                 if (!Objects.equals(receipt1.getReceiptBranchOffice(), receipt2.getReceiptBranchOffice())) {
160                         // Other branch offices
161                         return false;
162                 } else if (!Objects.equals(receipt1.getReceiptNumber(), receipt2.getReceiptNumber())) {
163                         // Other receipt number
164                         return false;
165                 } else if (!Objects.equals(receipt1.getReceiptIssued(), receipt2.getReceiptIssued())) {
166                         // Other issue date
167                         return false;
168                 } else if (!Objects.equals(receipt1.getReceiptUser(), receipt2.getReceiptUser())) {
169                         // Other user (unlikely to happen
170                         return false;
171                 }
172
173                 // Maybe same receipt!
174                 return true;
175         }
176
177         /**
178          * Private default constructor
179          */
180         private Receipts () {
181                 // Utilities don't have instances
182         }
183
184 }