]> git.mxchange.org Git - jproduct-core.git/blob - src/org/mxchange/jproduct/model/product/Product.java
Continued:
[jproduct-core.git] / src / org / mxchange / jproduct / model / product / Product.java
1 /*
2  * Copyright (C) 2016 - 2018 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 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.
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 General Public License for more details.
13  *
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/>.
16  */
17 package org.mxchange.jproduct.model.product;
18
19 import java.io.Serializable;
20 import java.math.BigDecimal;
21 import java.util.Date;
22 import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
23 import org.mxchange.jproduct.model.category.Category;
24 import org.mxchange.jproduct.model.product.agegroup.AgeGroup;
25
26 /**
27  * A POJI for product entities
28  * <p>
29  * @author Roland Häder<roland@mxchange.org>
30  */
31 public interface Product extends Comparable<Product>, Serializable {
32
33         /**
34          * Getter for created timestamp
35          * <p>
36          * @return Created timestamp
37          */
38         Date getProductCreated ();
39
40         /**
41          * Setter for created timestamp
42          * <p>
43          * @param productCreated Created timestamp
44          */
45         void setProductCreated (final Date productCreated);
46
47         /**
48          * Getter for product availability
49          * <p>
50          * @return Product availability
51          */
52         Boolean getProductAvailability ();
53
54         /**
55          * Setter for product availability
56          * <p>
57          * @param productAvailability Product availability
58          */
59         void setProductAvailability (final Boolean productAvailability);
60
61         /**
62          * Getter for product category id
63          * <p>
64          * @return Product category id
65          */
66         Category getProductCategory ();
67
68         /**
69          * Setter for product category
70          * <p>
71          * @param productCategory Product category
72          */
73         void setProductCategory (final Category productCategory);
74
75         /**
76          * Getter for id number, suitable for form fields.
77          * <p>
78          * @return Id number of product
79          */
80         Long getProductId ();
81
82         /**
83          * Id number of product
84          * <p>
85          * @param productId the id number to set
86          */
87         void setProductId (final Long productId);
88
89         /**
90          * Getter for manufacturing/producing company
91          * <p>
92          * @return Manufacturing/producing company
93          */
94         BasicData getProductManufacturer ();
95
96         /**
97          * Setter for manufacturing/producing company
98          * <p>
99          * @param productManufacturer Manufacturing/producing company
100          */
101         void setProductManufacturer (final BasicData productManufacturer);
102
103         /**
104          * Getter for product's net price
105          * <p>
106          * @return Product's net price
107          */
108         BigDecimal getProductNetPrice ();
109
110         /**
111          * Setter for product's net price
112          * <p>
113          * @param productNetPrice Product's net price
114          */
115         void setProductNetPrice (final BigDecimal productNetPrice);
116
117         /**
118          * Getter for product's tax rate
119          * <p>
120          * @return Product's tax rate
121          */
122         BigDecimal getProductTaxRate ();
123
124         /**
125          * Setter for product's tax rate
126          * <p>
127          * @param productTaxRate Product's tax rate
128          */
129         void setProductTaxRate (final BigDecimal productTaxRate);
130
131         /**
132          * Getter for product's gross price
133          * <p>
134          * @return Product's gross price
135          */
136         BigDecimal getProductGrossPrice ();
137
138         /**
139          * Setter for product's gross price
140          * <p>
141          * @param productGrossPrice Product's gross price
142          */
143         void setProductGrossPrice (final BigDecimal productGrossPrice);
144
145         /**
146          * Getter for currency code like EUR or USD
147          * <p>
148          * @return Currency code like EUR or USD
149          */
150         String getProductCurrencyCode ();
151
152         /**
153          * Setter for currency code like EUR or USD
154          * <p>
155          * @param productCurrencyCode Currency code like EUR or USD
156          */
157         void setProductCurrencyCode (final String productCurrencyCode);
158
159         /**
160          * Getter for i18n key of product
161          * <p>
162          * @return I18n key of product
163          */
164         String getProductI18nKey ();
165
166         /**
167          * Setter for i18n key of product
168          * <p>
169          * @param productI18nKey I18n key
170          */
171         void setProductI18nKey (final String productI18nKey);
172
173         /**
174          * Getter for product's unit amount
175          * <p>
176          * @return Product's unit amount
177          */
178         BigDecimal getProductUnitAmount ();
179
180         /**
181          * Setter for product's unit amount
182          * <p>
183          * @param productUnitAmount Product's unit amount
184          */
185         void setProductUnitAmount (final BigDecimal productUnitAmount);
186
187         /**
188          * Getter for product's i18n key
189          * <p>
190          * @return Product's i18n key
191          */
192         String getProductUnitI18nKey ();
193
194         /**
195          * Setter for product's i18n key
196          * <p>
197          * @param productI18nKey Product's i18n key
198          */
199         void setProductUnitI18nKey (final String productI18nKey);
200
201         /**
202          * Getter for product's number
203          * <p>
204          * @return Product's number
205          */
206         Long getProductNumber ();
207
208         /**
209          * Setter for product's number
210          * <p>
211          * @param productNumber Product's number
212          */
213         void setProductNumber (final Long productNumber);
214
215         /**
216          * Getter for product's size
217          * <p>
218          * @return Product's size
219          */
220         String getProductSize ();
221
222         /**
223          * Setter for product's size
224          * <p>
225          * @param productSize Product's size
226          */
227         void setProductSize (final String productSize);
228
229         /**
230          * Getter for product's age group
231          * <p>
232          * @return Product's age group
233          */
234         AgeGroup getProductAgeGroup ();
235
236         /**
237          * Setter for product's age group
238          * <p>
239          * @param productAgeGroup Product's age group
240          */
241         void setProductAgeGroup (final AgeGroup productAgeGroup);
242
243         @Override
244         boolean equals (final Object object);
245
246         @Override
247         int hashCode ();
248
249 }