From: Roland Häder Date: Tue, 17 Oct 2017 23:28:01 +0000 (+0200) Subject: Continued: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=4d0e9a15025c40269b8ad047ba1f8a70419f4179;p=jfinancials-core.git Continued: - renamed package to fit more other projects Signed-off-by: Roland Häder --- diff --git a/src/org/mxchange/jfinancials/model/receipt/item/BillableReceiptItem.java b/src/org/mxchange/jfinancials/model/receipt/item/BillableReceiptItem.java deleted file mode 100644 index 85ee3a0..0000000 --- a/src/org/mxchange/jfinancials/model/receipt/item/BillableReceiptItem.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.mxchange.jfinancials.model.receipt.item; - -import java.io.Serializable; -import java.util.Date; -import org.mxchange.jfinancials.model.receipt.BillableReceipt; -import org.mxchange.jproduct.model.product.Product; - -/** - * An interface for receipt items - *

- * @author Roland Häder - */ -public interface BillableReceiptItem extends Serializable { - - /** - * Getter when this receipt item has been created in database - *

- * @return When this item has been created - */ - Date getItemCreated (); - - /** - * Setter when this receipt item has been created in database - *

- * @param itemCreated When this item has been created - */ - void setItemCreated (final Date itemCreated); - - /** - * Getter for primary key - *

- * @return Primary key - */ - Long getItemId (); - - /** - * Setter for primary key - *

- * @param itemId Primary key - */ - void setItemId (final Long itemId); - - /** - * Getter for receipt instance - *

- * @return Receipt instance - */ - BillableReceipt getItemReceipt (); - - /** - * Setter for receipt instance - *

- * @param itemReceipt Receipt instance - */ - void setItemReceipt (final BillableReceipt itemReceipt); - - /** - * Getter for linked product - *

- * @return Product - */ - Product getItemProduct (); - - /** - * Setter for linked product - *

- * @param itemProduct Product - */ - void setItemProduct (final Product itemProduct); - - /** - * Getter for product discount - *

- * @return Product discount - */ - Float getItemProductDiscount (); - - /** - * Setter for product discount - *

- * @param productDiscount Product discount - */ - void setItemProductDiscount (final Float productDiscount); - - /** - * Getter for product quantity - *

- * @return Product quantity - */ - Long getItemProductQuantity (); - - /** - * Setter for product quantity - *

- * @param itemProductQuantity Product quantity - */ - void setItemProductQuantity (final Long itemProductQuantity); - - @Override - boolean equals (final Object object); - - @Override - int hashCode (); - -} diff --git a/src/org/mxchange/jfinancials/model/receipt/item/FinancialReceiptItem.java b/src/org/mxchange/jfinancials/model/receipt/item/FinancialReceiptItem.java deleted file mode 100644 index df48d43..0000000 --- a/src/org/mxchange/jfinancials/model/receipt/item/FinancialReceiptItem.java +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.mxchange.jfinancials.model.receipt.item; - -import java.util.Date; -import java.util.Objects; -import javax.persistence.Basic; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Index; -import javax.persistence.JoinColumn; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.persistence.Transient; -import org.mxchange.jfinancials.model.receipt.BillableReceipt; -import org.mxchange.jfinancials.model.receipt.FinancialReceipt; -import org.mxchange.jproduct.model.product.GenericProduct; -import org.mxchange.jproduct.model.product.Product; - -/** - * A POJO for receipt items - *

- * @author Roland Häder - */ -@Entity (name = "receipt_items") -@Table ( - name = "receipt_items", - indexes = { - @Index (name = "item_receipt_product", columnList = "item_receipt_id,item_product_id", unique = true) - } -) -@NamedQueries( - { - @NamedQuery(name = "AllReceiptItems", query = "SELECT ri FROM receipt_items AS ri ORDER BY ri.itemId ASC"), - @NamedQuery(name = "SearchAssignedReceiptItems", query = "SELECT ri FROM receipt_items AS ri WHERE ri.itemReceipt = :itemReceipt ORDER BY ri.itemId ASC"), - @NamedQuery(name = "SearchAllUserReceiptItems", query = "SELECT ri FROM receipt_items AS ri JOIN receipts AS r ON ri.itemReceipt=r WHERE r.receiptUser = :receiptUser ORDER BY ri.itemId ASC") - } -) -@SuppressWarnings ("PersistenceUnitPresent") -public class FinancialReceiptItem implements BillableReceiptItem { - - /** - * Serial number - */ - @Transient - private static final long serialVersionUID = 126_498_698_378_571L; - - /** - * When this item has been created in database - */ - @Basic (optional = false) - @Temporal (TemporalType.TIMESTAMP) - @Column (name = "item_created", nullable = false) - private Date itemCreated; - - /** - * Primary key - */ - @Id - @GeneratedValue (strategy = GenerationType.IDENTITY) - @Column (name = "item_id", nullable = false, updatable = false) - private Long itemId; - - /** - * Product being linked in this itemReceipt item - */ - @JoinColumn (name = "item_product_id", referencedColumnName = "product_id", nullable = false, updatable = false) - @OneToOne (targetEntity = GenericProduct.class, cascade = CascadeType.REFRESH, optional = false) - private Product itemProduct; - - /** - * Discount on item - */ - @Column (name = "item_product_discount") - private Float itemProductDiscount; - - /** - * Product quantity - */ - @Basic (optional = false) - @Column (name = "item_product_quantity", nullable = false) - private Long itemProductQuantity; - - /** - * Connected itemReceipt item - */ - @JoinColumn (name = "item_receipt_id", referencedColumnName = "receipt_id", nullable = false, updatable = false) - @OneToOne (targetEntity = FinancialReceipt.class, cascade = CascadeType.REFRESH, optional = false) - private BillableReceipt itemReceipt; - - /** - * Default constructor - */ - public FinancialReceiptItem () { - } - - /** - * Constructor with product, price, quantity and receipt instance - *

- * @param itemProduct Product instance - * @param itemProductQuantity Product quantity - * @param itemReceipt FinancialReceipt instance - */ - public FinancialReceiptItem (final Product itemProduct, final Long itemProductQuantity, final BillableReceipt itemReceipt) { - // Call other constructor - this(); - - // Set all values - this.itemProduct = itemProduct; - this.itemProductQuantity = itemProductQuantity; - this.itemReceipt = itemReceipt; - } - - @Override - public boolean equals (final Object object) { - if (this == object) { - return true; - } else if (null == object) { - return false; - } else if (this.getClass() != object.getClass()) { - return false; - } - - final BillableReceiptItem receiptItem = (BillableReceiptItem) object; - - if (!Objects.equals(this.getItemId(), receiptItem.getItemId())) { - return false; - } else if (!Objects.equals(this.getItemProduct(), receiptItem.getItemProduct())) { - return false; - } else if (!Objects.equals(this.getItemProductQuantity(), receiptItem.getItemProductQuantity())) { - return false; - } else if (!Objects.equals(this.getItemReceipt(), receiptItem.getItemReceipt())) { - return false; - } - - return true; - } - - @Override - @SuppressWarnings ("ReturnOfDateField") - public Date getItemCreated () { - return this.itemCreated; - } - - @Override - @SuppressWarnings ("AssignmentToDateFieldFromParameter") - public void setItemCreated (final Date itemCreated) { - this.itemCreated = itemCreated; - } - - @Override - public Long getItemId () { - return this.itemId; - } - - @Override - public void setItemId (final Long itemId) { - this.itemId = itemId; - } - - @Override - public Product getItemProduct () { - return this.itemProduct; - } - - @Override - public void setItemProduct (final Product itemProduct) { - this.itemProduct = itemProduct; - } - - @Override - public Float getItemProductDiscount () { - return this.itemProductDiscount; - } - - @Override - public void setItemProductDiscount (final Float itemProductDiscount) { - this.itemProductDiscount = itemProductDiscount; - } - - @Override - public Long getItemProductQuantity () { - return this.itemProductQuantity; - } - - @Override - public void setItemProductQuantity (final Long itemProductQuantity) { - this.itemProductQuantity = itemProductQuantity; - } - - @Override - public BillableReceipt getItemReceipt () { - return this.itemReceipt; - } - - @Override - public void setItemReceipt (final BillableReceipt itemReceipt) { - this.itemReceipt = itemReceipt; - } - - @Override - public int hashCode () { - int hash = 5; - - hash = 53 * hash + Objects.hashCode(this.getItemId()); - hash = 53 * hash + Objects.hashCode(this.getItemProduct()); - hash = 53 * hash + Objects.hashCode(this.getItemProductQuantity()); - hash = 53 * hash + Objects.hashCode(this.getItemReceipt()); - - return hash; - } - -} diff --git a/src/org/mxchange/jfinancials/model/receipt/item/ReceiptItems.java b/src/org/mxchange/jfinancials/model/receipt/item/ReceiptItems.java deleted file mode 100644 index 1f7fd23..0000000 --- a/src/org/mxchange/jfinancials/model/receipt/item/ReceiptItems.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2017 Roland Häder - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.mxchange.jfinancials.model.receipt.item; - -import java.io.Serializable; -import java.text.MessageFormat; -import java.util.Objects; - -/** - * A utilities class for receipts - * - * @author Roland Häder - */ -public class ReceiptItems implements Serializable { - - /** - * Serial number - */ - private static final long serialVersionUID = 2_867_938_676_165_402L; - - /** - * Checks if both receipt items are the same by assigned receipt, product - * and quantity. - *

- * @param receiptItem1 Receipt item 1 - * @param receiptItem2 Receipt item 2 - *

- * @return Whether both are equal - */ - public static boolean isSameReceiptItem (final BillableReceiptItem receiptItem1, final BillableReceiptItem receiptItem2) { - // Pre-compare both as entities (same id) - if (Objects.equals(receiptItem1, receiptItem2)) { - // Same entity (with id number) - return true; - } - - // Validate parameter - if (null == receiptItem1) { - // Throw NPE - throw new NullPointerException("receiptItem1 is null"); //NOI18N - } else if ((receiptItem1.getItemId() instanceof Long) && (receiptItem1.getItemId() < 1)) { - // Throw IAE - throw new IllegalArgumentException(MessageFormat.format("receiptItem1.itemId={0} is not valid.", receiptItem1.getItemId())); //NOI18N - } else if (receiptItem1.getItemReceipt() == null) { - // Throw NPE - throw new NullPointerException("receiptItem1.itemReceipt is null"); //NOI18N - } else if (receiptItem1.getItemReceipt().getReceiptId() == null) { - // Throw NPE - throw new NullPointerException("receiptItem1.itemReceipt.receiptId is null"); //NOI18N - } else if (receiptItem1.getItemReceipt().getReceiptId() < 1) { - // Throw NPE - throw new NullPointerException(MessageFormat.format("receiptItem1.itemReceipt.receiptId={0} is not valid", receiptItem1.getItemReceipt().getReceiptId())); //NOI18N - } else if (receiptItem1.getItemProduct() == null) { - // Throw NPE again - throw new NullPointerException("receiptItem1.itemProduct is null."); //NOI18N - } else if (receiptItem1.getItemProduct().getProductId() == null) { - // Throw NPE again - throw new NullPointerException("receiptItem1.itemProduct.productId is null."); //NOI18N - } else if (receiptItem1.getItemProduct().getProductId() < 1) { - // Throw IAE - throw new IllegalArgumentException(MessageFormat.format("receiptItem1.itemProduct.productId={0} is invalid.", receiptItem1.getItemProduct().getProductId())); //NOI18N - } else if (null == receiptItem2) { - // Throw NPE - throw new NullPointerException("receiptItem2 is null"); //NOI18N - } else if ((receiptItem2.getItemId() instanceof Long) && (receiptItem2.getItemId() < 1)) { - // Throw IAE - throw new IllegalArgumentException(MessageFormat.format("receiptItem2.itemId={0} is not valid.", receiptItem2.getItemId())); //NOI18N - } else if (receiptItem2.getItemReceipt() == null) { - // Throw NPE - throw new NullPointerException("receiptItem2.itemReceipt is null"); //NOI18N - } else if (receiptItem2.getItemReceipt().getReceiptId() == null) { - // Throw NPE - throw new NullPointerException("receiptItem2.itemReceipt.receiptId is null"); //NOI18N - } else if (receiptItem2.getItemReceipt().getReceiptId() < 1) { - // Throw NPE - throw new NullPointerException(MessageFormat.format("receiptItem2.itemReceipt.receiptId={0} is not valid", receiptItem2.getItemReceipt().getReceiptId())); //NOI18N - } else if (receiptItem2.getItemProduct() == null) { - // Throw NPE again - throw new NullPointerException("receiptItem2.itemProduct is null."); //NOI18N - } else if (receiptItem2.getItemProduct().getProductId() == null) { - // Throw NPE again - throw new NullPointerException("receiptItem2.itemProduct.productId is null."); //NOI18N - } else if (receiptItem2.getItemProduct().getProductId() < 1) { - // Throw IAE - throw new IllegalArgumentException(MessageFormat.format("receiptItem2.itemProduct.productId={0} is invalid.", receiptItem2.getItemProduct().getProductId())); //NOI18N - } else if (null == receiptItem2) { - // Throw NPE - throw new NullPointerException("receiptItem2 is null"); //NOI18N - } - - // Now check all individually - if (!Objects.equals(receiptItem1.getItemReceipt(), receiptItem2.getItemReceipt())) { - // Other item receipt - return false; - } else if (!Objects.equals(receiptItem1.getItemProduct(), receiptItem2.getItemProduct())) { - // Other item product - return false; - } else if (!Objects.equals(receiptItem1.getItemProductQuantity(), receiptItem2.getItemProductQuantity())) { - // Other item quantity - return false; - } - - // Maybe same receipt! - return true; - } - - /** - * Private default constructor - */ - private ReceiptItems () { - // Utilities don't have instances - } - -} diff --git a/src/org/mxchange/jfinancials/model/receipt_item/BillableReceiptItem.java b/src/org/mxchange/jfinancials/model/receipt_item/BillableReceiptItem.java new file mode 100644 index 0000000..85ee3a0 --- /dev/null +++ b/src/org/mxchange/jfinancials/model/receipt_item/BillableReceiptItem.java @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2016, 2017 Roland Häder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.model.receipt.item; + +import java.io.Serializable; +import java.util.Date; +import org.mxchange.jfinancials.model.receipt.BillableReceipt; +import org.mxchange.jproduct.model.product.Product; + +/** + * An interface for receipt items + *

+ * @author Roland Häder + */ +public interface BillableReceiptItem extends Serializable { + + /** + * Getter when this receipt item has been created in database + *

+ * @return When this item has been created + */ + Date getItemCreated (); + + /** + * Setter when this receipt item has been created in database + *

+ * @param itemCreated When this item has been created + */ + void setItemCreated (final Date itemCreated); + + /** + * Getter for primary key + *

+ * @return Primary key + */ + Long getItemId (); + + /** + * Setter for primary key + *

+ * @param itemId Primary key + */ + void setItemId (final Long itemId); + + /** + * Getter for receipt instance + *

+ * @return Receipt instance + */ + BillableReceipt getItemReceipt (); + + /** + * Setter for receipt instance + *

+ * @param itemReceipt Receipt instance + */ + void setItemReceipt (final BillableReceipt itemReceipt); + + /** + * Getter for linked product + *

+ * @return Product + */ + Product getItemProduct (); + + /** + * Setter for linked product + *

+ * @param itemProduct Product + */ + void setItemProduct (final Product itemProduct); + + /** + * Getter for product discount + *

+ * @return Product discount + */ + Float getItemProductDiscount (); + + /** + * Setter for product discount + *

+ * @param productDiscount Product discount + */ + void setItemProductDiscount (final Float productDiscount); + + /** + * Getter for product quantity + *

+ * @return Product quantity + */ + Long getItemProductQuantity (); + + /** + * Setter for product quantity + *

+ * @param itemProductQuantity Product quantity + */ + void setItemProductQuantity (final Long itemProductQuantity); + + @Override + boolean equals (final Object object); + + @Override + int hashCode (); + +} diff --git a/src/org/mxchange/jfinancials/model/receipt_item/FinancialReceiptItem.java b/src/org/mxchange/jfinancials/model/receipt_item/FinancialReceiptItem.java new file mode 100644 index 0000000..df48d43 --- /dev/null +++ b/src/org/mxchange/jfinancials/model/receipt_item/FinancialReceiptItem.java @@ -0,0 +1,235 @@ +/* + * Copyright (C) 2016, 2017 Roland Häder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.model.receipt.item; + +import java.util.Date; +import java.util.Objects; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Index; +import javax.persistence.JoinColumn; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; +import org.mxchange.jfinancials.model.receipt.BillableReceipt; +import org.mxchange.jfinancials.model.receipt.FinancialReceipt; +import org.mxchange.jproduct.model.product.GenericProduct; +import org.mxchange.jproduct.model.product.Product; + +/** + * A POJO for receipt items + *

+ * @author Roland Häder + */ +@Entity (name = "receipt_items") +@Table ( + name = "receipt_items", + indexes = { + @Index (name = "item_receipt_product", columnList = "item_receipt_id,item_product_id", unique = true) + } +) +@NamedQueries( + { + @NamedQuery(name = "AllReceiptItems", query = "SELECT ri FROM receipt_items AS ri ORDER BY ri.itemId ASC"), + @NamedQuery(name = "SearchAssignedReceiptItems", query = "SELECT ri FROM receipt_items AS ri WHERE ri.itemReceipt = :itemReceipt ORDER BY ri.itemId ASC"), + @NamedQuery(name = "SearchAllUserReceiptItems", query = "SELECT ri FROM receipt_items AS ri JOIN receipts AS r ON ri.itemReceipt=r WHERE r.receiptUser = :receiptUser ORDER BY ri.itemId ASC") + } +) +@SuppressWarnings ("PersistenceUnitPresent") +public class FinancialReceiptItem implements BillableReceiptItem { + + /** + * Serial number + */ + @Transient + private static final long serialVersionUID = 126_498_698_378_571L; + + /** + * When this item has been created in database + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "item_created", nullable = false) + private Date itemCreated; + + /** + * Primary key + */ + @Id + @GeneratedValue (strategy = GenerationType.IDENTITY) + @Column (name = "item_id", nullable = false, updatable = false) + private Long itemId; + + /** + * Product being linked in this itemReceipt item + */ + @JoinColumn (name = "item_product_id", referencedColumnName = "product_id", nullable = false, updatable = false) + @OneToOne (targetEntity = GenericProduct.class, cascade = CascadeType.REFRESH, optional = false) + private Product itemProduct; + + /** + * Discount on item + */ + @Column (name = "item_product_discount") + private Float itemProductDiscount; + + /** + * Product quantity + */ + @Basic (optional = false) + @Column (name = "item_product_quantity", nullable = false) + private Long itemProductQuantity; + + /** + * Connected itemReceipt item + */ + @JoinColumn (name = "item_receipt_id", referencedColumnName = "receipt_id", nullable = false, updatable = false) + @OneToOne (targetEntity = FinancialReceipt.class, cascade = CascadeType.REFRESH, optional = false) + private BillableReceipt itemReceipt; + + /** + * Default constructor + */ + public FinancialReceiptItem () { + } + + /** + * Constructor with product, price, quantity and receipt instance + *

+ * @param itemProduct Product instance + * @param itemProductQuantity Product quantity + * @param itemReceipt FinancialReceipt instance + */ + public FinancialReceiptItem (final Product itemProduct, final Long itemProductQuantity, final BillableReceipt itemReceipt) { + // Call other constructor + this(); + + // Set all values + this.itemProduct = itemProduct; + this.itemProductQuantity = itemProductQuantity; + this.itemReceipt = itemReceipt; + } + + @Override + public boolean equals (final Object object) { + if (this == object) { + return true; + } else if (null == object) { + return false; + } else if (this.getClass() != object.getClass()) { + return false; + } + + final BillableReceiptItem receiptItem = (BillableReceiptItem) object; + + if (!Objects.equals(this.getItemId(), receiptItem.getItemId())) { + return false; + } else if (!Objects.equals(this.getItemProduct(), receiptItem.getItemProduct())) { + return false; + } else if (!Objects.equals(this.getItemProductQuantity(), receiptItem.getItemProductQuantity())) { + return false; + } else if (!Objects.equals(this.getItemReceipt(), receiptItem.getItemReceipt())) { + return false; + } + + return true; + } + + @Override + @SuppressWarnings ("ReturnOfDateField") + public Date getItemCreated () { + return this.itemCreated; + } + + @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") + public void setItemCreated (final Date itemCreated) { + this.itemCreated = itemCreated; + } + + @Override + public Long getItemId () { + return this.itemId; + } + + @Override + public void setItemId (final Long itemId) { + this.itemId = itemId; + } + + @Override + public Product getItemProduct () { + return this.itemProduct; + } + + @Override + public void setItemProduct (final Product itemProduct) { + this.itemProduct = itemProduct; + } + + @Override + public Float getItemProductDiscount () { + return this.itemProductDiscount; + } + + @Override + public void setItemProductDiscount (final Float itemProductDiscount) { + this.itemProductDiscount = itemProductDiscount; + } + + @Override + public Long getItemProductQuantity () { + return this.itemProductQuantity; + } + + @Override + public void setItemProductQuantity (final Long itemProductQuantity) { + this.itemProductQuantity = itemProductQuantity; + } + + @Override + public BillableReceipt getItemReceipt () { + return this.itemReceipt; + } + + @Override + public void setItemReceipt (final BillableReceipt itemReceipt) { + this.itemReceipt = itemReceipt; + } + + @Override + public int hashCode () { + int hash = 5; + + hash = 53 * hash + Objects.hashCode(this.getItemId()); + hash = 53 * hash + Objects.hashCode(this.getItemProduct()); + hash = 53 * hash + Objects.hashCode(this.getItemProductQuantity()); + hash = 53 * hash + Objects.hashCode(this.getItemReceipt()); + + return hash; + } + +} diff --git a/src/org/mxchange/jfinancials/model/receipt_item/ReceiptItems.java b/src/org/mxchange/jfinancials/model/receipt_item/ReceiptItems.java new file mode 100644 index 0000000..1f7fd23 --- /dev/null +++ b/src/org/mxchange/jfinancials/model/receipt_item/ReceiptItems.java @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2017 Roland Häder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.model.receipt.item; + +import java.io.Serializable; +import java.text.MessageFormat; +import java.util.Objects; + +/** + * A utilities class for receipts + * + * @author Roland Häder + */ +public class ReceiptItems implements Serializable { + + /** + * Serial number + */ + private static final long serialVersionUID = 2_867_938_676_165_402L; + + /** + * Checks if both receipt items are the same by assigned receipt, product + * and quantity. + *

+ * @param receiptItem1 Receipt item 1 + * @param receiptItem2 Receipt item 2 + *

+ * @return Whether both are equal + */ + public static boolean isSameReceiptItem (final BillableReceiptItem receiptItem1, final BillableReceiptItem receiptItem2) { + // Pre-compare both as entities (same id) + if (Objects.equals(receiptItem1, receiptItem2)) { + // Same entity (with id number) + return true; + } + + // Validate parameter + if (null == receiptItem1) { + // Throw NPE + throw new NullPointerException("receiptItem1 is null"); //NOI18N + } else if ((receiptItem1.getItemId() instanceof Long) && (receiptItem1.getItemId() < 1)) { + // Throw IAE + throw new IllegalArgumentException(MessageFormat.format("receiptItem1.itemId={0} is not valid.", receiptItem1.getItemId())); //NOI18N + } else if (receiptItem1.getItemReceipt() == null) { + // Throw NPE + throw new NullPointerException("receiptItem1.itemReceipt is null"); //NOI18N + } else if (receiptItem1.getItemReceipt().getReceiptId() == null) { + // Throw NPE + throw new NullPointerException("receiptItem1.itemReceipt.receiptId is null"); //NOI18N + } else if (receiptItem1.getItemReceipt().getReceiptId() < 1) { + // Throw NPE + throw new NullPointerException(MessageFormat.format("receiptItem1.itemReceipt.receiptId={0} is not valid", receiptItem1.getItemReceipt().getReceiptId())); //NOI18N + } else if (receiptItem1.getItemProduct() == null) { + // Throw NPE again + throw new NullPointerException("receiptItem1.itemProduct is null."); //NOI18N + } else if (receiptItem1.getItemProduct().getProductId() == null) { + // Throw NPE again + throw new NullPointerException("receiptItem1.itemProduct.productId is null."); //NOI18N + } else if (receiptItem1.getItemProduct().getProductId() < 1) { + // Throw IAE + throw new IllegalArgumentException(MessageFormat.format("receiptItem1.itemProduct.productId={0} is invalid.", receiptItem1.getItemProduct().getProductId())); //NOI18N + } else if (null == receiptItem2) { + // Throw NPE + throw new NullPointerException("receiptItem2 is null"); //NOI18N + } else if ((receiptItem2.getItemId() instanceof Long) && (receiptItem2.getItemId() < 1)) { + // Throw IAE + throw new IllegalArgumentException(MessageFormat.format("receiptItem2.itemId={0} is not valid.", receiptItem2.getItemId())); //NOI18N + } else if (receiptItem2.getItemReceipt() == null) { + // Throw NPE + throw new NullPointerException("receiptItem2.itemReceipt is null"); //NOI18N + } else if (receiptItem2.getItemReceipt().getReceiptId() == null) { + // Throw NPE + throw new NullPointerException("receiptItem2.itemReceipt.receiptId is null"); //NOI18N + } else if (receiptItem2.getItemReceipt().getReceiptId() < 1) { + // Throw NPE + throw new NullPointerException(MessageFormat.format("receiptItem2.itemReceipt.receiptId={0} is not valid", receiptItem2.getItemReceipt().getReceiptId())); //NOI18N + } else if (receiptItem2.getItemProduct() == null) { + // Throw NPE again + throw new NullPointerException("receiptItem2.itemProduct is null."); //NOI18N + } else if (receiptItem2.getItemProduct().getProductId() == null) { + // Throw NPE again + throw new NullPointerException("receiptItem2.itemProduct.productId is null."); //NOI18N + } else if (receiptItem2.getItemProduct().getProductId() < 1) { + // Throw IAE + throw new IllegalArgumentException(MessageFormat.format("receiptItem2.itemProduct.productId={0} is invalid.", receiptItem2.getItemProduct().getProductId())); //NOI18N + } else if (null == receiptItem2) { + // Throw NPE + throw new NullPointerException("receiptItem2 is null"); //NOI18N + } + + // Now check all individually + if (!Objects.equals(receiptItem1.getItemReceipt(), receiptItem2.getItemReceipt())) { + // Other item receipt + return false; + } else if (!Objects.equals(receiptItem1.getItemProduct(), receiptItem2.getItemProduct())) { + // Other item product + return false; + } else if (!Objects.equals(receiptItem1.getItemProductQuantity(), receiptItem2.getItemProductQuantity())) { + // Other item quantity + return false; + } + + // Maybe same receipt! + return true; + } + + /** + * Private default constructor + */ + private ReceiptItems () { + // Utilities don't have instances + } + +}