]> 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, 2017 Roland Häder
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.util.Date;
21 import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
22 import org.mxchange.jproduct.model.category.Category;
23
24 /**
25  * An interface for in database storable products
26  * <p>
27  * @author Roland Häder<roland@mxchange.org>
28  */
29 public interface Product extends Serializable {
30
31         /**
32          * Getter for created timestamp
33          * <p>
34          * @return Created timestamp
35          */
36         Date getProductCreated ();
37
38         /**
39          * Setter for created timestamp
40          * <p>
41          * @param productCreated Created timestamp
42          */
43         void setProductCreated (final Date productCreated);
44
45         /**
46          * Getter for product availability
47          * <p>
48          * @return Product availability
49          */
50         Boolean getProductAvailability ();
51
52         /**
53          * Setter for product availability
54          * <p>
55          * @param productAvailability Product availability
56          */
57         void setProductAvailability (final Boolean productAvailability);
58
59         /**
60          * Getter for product category id
61          * <p>
62          * @return Product category id
63          */
64         Category getProductCategory ();
65
66         /**
67          * Setter for product category
68          * <p>
69          * @param productCategory Product category
70          */
71         void setProductCategory (final Category productCategory);
72
73         /**
74          * Getter for id number, suitable for form fields.
75          * <p>
76          * @return Id number of product
77          */
78         Long getProductId ();
79
80         /**
81          * Id number of product
82          * <p>
83          * @param productId the id number to set
84          */
85         void setProductId (final Long productId);
86
87         /**
88          * Getter for manufacturing/producing company
89          * <p>
90          * @return Manufacturing/producing company
91          */
92         BasicData getProductManfacturer ();
93
94         /**
95          * Setter for manufacturing/producing company
96          * <p>
97          * @param productManfacturer Manufacturing/producing company
98          */
99         void setProductManfacturer (final BasicData productManfacturer);
100
101         /**
102          * Getter for product's net price
103          * <p>
104          * @return Product's net price
105          */
106         Float getProductNetPrice ();
107
108         /**
109          * Setter for product's net price
110          * <p>
111          * @param productNetPrice Product's net price
112          */
113         void setProductNetPrice (final Float productNetPrice);
114
115         /**
116          * Getter for product's tax rate
117          * <p>
118          * @return Product's tax rate
119          */
120         Float getProductTaxRate ();
121
122         /**
123          * Setter for product's tax rate
124          * <p>
125          * @param productTaxRate Product's tax rate
126          */
127         void setProductTaxRate (final Float productTaxRate);
128
129         /**
130          * Getter for product's gross price
131          * <p>
132          * @return Product's gross price
133          */
134         Float getProductGrossPrice ();
135
136         /**
137          * Setter for product's gross price
138          * <p>
139          * @param productGrossPrice Product's gross price
140          */
141         void setProductGrossPrice (final Float productGrossPrice);
142
143         /**
144          * Getter for currency code like EUR or USD
145          * <p>
146          * @return Currency code like EUR or USD
147          */
148         String getProductCurrencyCode ();
149
150         /**
151          * Setter for currency code like EUR or USD
152          * <p>
153          * @param productCurrencyCode Currency code like EUR or USD
154          */
155         void setProductCurrencyCode (final String productCurrencyCode);
156
157         /**
158          * Getter for title.
159          * <p>
160          * @return Title of product
161          */
162         String getProductTitle ();
163
164         /**
165          * Title of product
166          * <p>
167          * @param productTitle the title to set
168          */
169         void setProductTitle (final String productTitle);
170
171         /**
172          * Getter for product's unit amount
173          * <p>
174          * @return Product's unit amount
175          */
176         Float getProductUnitAmount ();
177
178         /**
179          * Setter for product's unit amount
180          * <p>
181          * @param productUnitAmount Product's unit amount
182          */
183         void setProductUnitAmount (final Float productUnitAmount);
184
185         /**
186          * Getter for product's unit type
187          * <p>
188          * @return Product's unit type
189          */
190         String getProductUnitType ();
191
192         /**
193          * Setter for product's unit type
194          * <p>
195          * @param productUnitType Product's unit type
196          */
197         void setProductUnitType (final String productUnitType);
198
199         @Override
200         boolean equals (final Object object);
201
202         @Override
203         int hashCode ();
204
205 }