From e3ec2da66bc09d08c0ad866c8476d8d00feee647 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Tue, 22 Sep 2015 16:06:15 +0200 Subject: [PATCH] =?utf8?q?JPA=20started=20Signed-off-by:Roland=20H=C3=A4de?= =?utf8?q?r=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- lib/jcore.jar | Bin 29624 -> 31130 bytes lib/jcoreee.jar | Bin 21332 -> 19254 bytes .../CustomerAlreadyRegisteredException.java | 2 +- .../jshopcore/model/customer/Customer.java | 14 +++ .../model/customer/ShopCustomer.java | 58 ++++++++-- .../jshopcore/model/order/Orderable.java | 70 ++++++++++++ .../jshopcore/model/order/ShopOrder.java | 102 ++++++++++++++++++ 7 files changed, 238 insertions(+), 8 deletions(-) create mode 100644 src/org/mxchange/jshopcore/model/order/Orderable.java create mode 100644 src/org/mxchange/jshopcore/model/order/ShopOrder.java diff --git a/lib/jcore.jar b/lib/jcore.jar index 12190beef63bed67f80a91b64eeee71aede608fc..ead5916a21197864b7915b3c83d96c971ff478c8 100644 GIT binary patch delta 7318 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 DROMFS delta 5758 zcmZ{od0bT26~}+?4e(%i?3;oJD99=V6l4Z4b+`m6IynVdLBzDN=oz#Y#+7@}+K6%B8+bDVF*< zrHu8xYKhF2sWnn>R%c5+s#Z$HAIMgfwki9^r4^t1S+T! zQEH5MeK1!n$w&zU6#AzJB!k5M?D!fDfE_ByWGbJ^K7dY7L3Kjt3BM6aQibm0rNs#k z+@`NBF8553baO^gjUwIr{#%)AdJ+Nt6_K0c#r&ZZacEYs3t!k#f=5CK>d_E#*JBzU z*YHa_B@c!Y>p?p`ImFo~?D!Q9bD2!ZvLl>5!tWhrF~Z^)i%}M1ERM4{!Qv!~U$c0U z#cx=+o?`i17N=O8X7MzOXIMO|;W-V@2jc}hrr~#X{2nhd&`bRA4;o$$#w&JY;nh&Q zhSyoV!Qzj0yoo;r~ZQYK}u4-|rBrYbT-7(~8B&5Bw zf56!wBIYzsviEN4Sh&VlTV4_eIrX-59O*x{!e7X3ryk0!CqCz}VK1~cYrHiJD z&qYF0lz5sZX$%ULX8v6RI!77hIL3Qk?gVg|Y3KGg9ye5B(d zi@)O|4Ik_H1UrP%8Jj$ajohh!X!xg&Pw|Py9ydx*0;4f2gIw@+tQ3;Ir(aOd%M~kJv3!njMPd;*I=8ds%{k5)nvP9 z6$H@ARcUh1K^ziMiZa?e%H`fsLFMExnI@M>O^%hCd@D7%S8DRG)Z}ET$-7dMgQX@P zOHFQ;nmkR~rGiFN7LeDaCf`X-10Xexfz&h%QqxEPk&}2ZC_j_%X=V`eYRd7Z$vd>3 zLwjbNz!Fa5@jYiPb3%oknoCOl5Qd)`{v<^Hj{i}Nz!9Y5^W~=ib%fpL$U}i z1Etr;DITB1m`T2~BB-w-^ep~EcoFJ*? z!cfx5ZiXMbyq&V$VN1`)o6Y81n*E-I=Uus@h&Ownlt{|_knl#$BsW=-B$!EREJ2?%F^)Wal<}#CzdUUDu@^ zaM2u?Y<9tomL#`WlT0>~3=+vkKO}rOG6}^qBxz=g=%ull6YIcbY550+Wl_I0p_uC$ zvu`Wek!Kt(-In?AWjho>u^q8J(%aL*(#nr;o5AF}+PuzJ!|sD*cdwuR@mbGyZ@+Z4 zv8R*Fo_@rV;8GN z`+^_49M!PhJ3V%N%qE-7zGi9mE{mzg>pt1+fwzg|9X})-S24-m#*Rzg9N+n9D5jc8 z-m@h6$@ms5oOQ8Yd*26S`9nXJIg(?`_gp#)$a0F=@~4)Tw^>XA_Cbo-2mc|GZ~TyO zEXgDkw3FnM?YJHk``i$vvrNG1z8s)9MHiiN7p3$E53;Uyy*0{0OV$8|O+iIn^) z1&9Wv_ef>34I`X$$D&o~N>Pb4%RnH+u(L9hb9;9YaAiH~_3lWsug9qFY)x^xzLvnJ* zkUxq{)3~YG2v&2vToW?hZU}u}JxI+c{AuKFZW~4Qsu*4r>Z0BhaBpaQF3UZMLIo#K zw2Q-cE*ZltqmUB!?WMjP444?BsT6-hEvC{E>R~xj)JmkOb5X3$qp@1x1yeQ-QzqkY zW1IqEi*QB7MOG8oemB_MiGI>Y!x&~y43``&x>@1?-`JzQ`}mLy@Pp|C!1HxeOil7% zbPNK3Q&-V2&uF9 z28#08?tBh%#je#UGYe$tEEE!qg4q(O*cYk#jf;<$(B)c5s5qTCS=@4U(nwl!ZK%AB zTEF&YnGhfMmhyF^Nbj4+4@7%kfz&(uN~M0YuS)9J4NIkVY*-}qV;h!8{q=@gsjK?0 zlv?yJl=_|iI;pb>%gT}Mniw52m|hx6Qop>Cic3WDur4w4hLhBr SuA`#M#PD!Z&^Mjj#{U5>nUu8v diff --git a/lib/jcoreee.jar b/lib/jcoreee.jar index e0c8236ae42db2dfedabf0bad7bbb814ce166491..93d401de39c53a2d93aaa31e42cad7b2ccac7bb9 100644 GIT binary patch delta 557 zcmYL`PbdUY9LL{#Gi%m1!mizv*$m0H)VAZWNU{EuZD(i9tlFI9v`Ue?1DlgvtY6DT zaS+EX%1xBQMOHa*5=S}7Re8TRKGy^ zWjIbxq-hzc_^A&WXt=}P)93KEid^jM7J4OiQIF?>@geFbQYBG$GyEm1l(k5I+2J@l z$iu^1R;21Ole`TI<{+YMjv^k-NklYfA{KHEV%gH*DJQbk_;$cbdFm{pX5|rG_DuU_ zF*RA(e9tt=gy4*k|8ZDaf>FB_?weImrh?egHl?vE1?FfJUh11+-cwh&daXiQ>VVa@ z5ZDcMu$IRkhF9)X!oty=UQ{ecWAV;kh2L)@95@LyYTR&R!f14RP#JPH7BqxXwL-Ag z7lH#fC?el}NAzy~x;RJv6O+Rdfd^N-Oh;a0>%+V|0gL%?i?0sLBK+G|2q}%@=?9=@ BuAKk? delta 2477 zcmc&$U5Fc16wcqeHDs~WuF@LyxJ&m(!)Bv2wYzKDYw_G9XYHG*|9(u@HaXmo6`YS?<+E4r|7A@cqw({6`@u26qT=#{Fh6i>{w486q+t}t^PVtT7bla z1NsT-1~m1mQtOWN&=D%z8u|s^V8EHtG(oS~H$tWe0@IiwtB`A#Riy%HrNT6mfsAXD z#%!=El)D6o%##En{}%{I>gZVJimnBKDfrxgb!M1&56|`2=&^yv0O%AMOv#+E8=$wy za2f%3L6s5Lz;@;z60j9#6%@^e)4;6a09|5`9Ys~4%%E+uT3Zd!V&z_&!wIpF$`%U{ z&8)(Ss3b)*h1GeS%^NyCW$Uc(OKG-L1%t)(8nVW_7y!9gNl392nnV}Hv{+chC?F{o zGKqX1l359&kc&zMF;+}RCCC+}TsEJW0mx&TFdugQ|0T;c`%M`Ps*KBuY7RnQ#g}U$ zJhci9d7a@)t}taC!O2j;-Sgk?kC4l%uJ!76ponE_Ga)>&2Aa+TU?R+g2IsB0V6fBa z%+$5^jBeC}xD#j>n864l8u2D1DJzwtE7@YEP!jW{Ofj8)A+9i3WF}{-+GJWCH=oHt zQ!2Qx>&#^QG)LQ0x0q%NrF1qU*yc<@yE-f57KD|*eY}Ed1~17C6&-9ZAYs9%I#&-M zz3AGa7}H9{{2fw^5_C@(=Iz~IhOypVG3<8n-wnaqymwy-<{j_Boe_*8zi0eHdiAi7 z{2%Fs>~`I_-<9&N8<*VH$D@y0 z?|OXJhr&Ku=8E8V{WffCe-`W`#bYVI>kl7lp0eJad)R8G?0Flgy*7&4yN~zY2FX0Sqj;jY$!n1Pf}c8|NaO};Nga@V>>`T zZ@s!?pG&@6^1H4?$nyO1m~~zB+6mcxRv6e`-1sbJCj^e&a&p+6q20xB%SQ;0KbTaQ YEbT6hx#gh;Xx;(*et@9gT%x-_0VrPSu>b%7 diff --git a/src/org/mxchange/jshopcore/exceptions/CustomerAlreadyRegisteredException.java b/src/org/mxchange/jshopcore/exceptions/CustomerAlreadyRegisteredException.java index ae77abe..eb93d49 100644 --- a/src/org/mxchange/jshopcore/exceptions/CustomerAlreadyRegisteredException.java +++ b/src/org/mxchange/jshopcore/exceptions/CustomerAlreadyRegisteredException.java @@ -37,6 +37,6 @@ public class CustomerAlreadyRegisteredException extends Exception { */ public CustomerAlreadyRegisteredException (final Customer customer) { // Call super contructor - super(MessageFormat.format("Customer {0} already registered with number {1} at record id {2}. Maybe forgot to call isRegistered(customer) ?", customer, customer.getCustomerNumber(), customer.getId())); + super(MessageFormat.format("Customer {0} already registered with number {1} at record id {2}. Maybe forgot to call isRegistered(customer) ?", customer, customer.getCustomerNumber(), customer.getCustomerId())); } } diff --git a/src/org/mxchange/jshopcore/model/customer/Customer.java b/src/org/mxchange/jshopcore/model/customer/Customer.java index 792d639..d3a1620 100644 --- a/src/org/mxchange/jshopcore/model/customer/Customer.java +++ b/src/org/mxchange/jshopcore/model/customer/Customer.java @@ -123,4 +123,18 @@ public interface Customer extends Contact { * @param customerStatus Account status */ public void setCustomerStatus (final String customerStatus); + + /** + * Getter for customer id number + * + * @return Customer id number + */ + public Long getCustomerId (); + + /** + * Settte for customer id number + * + * @param customerId Customer id number + */ + public void setCustomerId (final Long customerId); } diff --git a/src/org/mxchange/jshopcore/model/customer/ShopCustomer.java b/src/org/mxchange/jshopcore/model/customer/ShopCustomer.java index 509c06c..9b8331b 100644 --- a/src/org/mxchange/jshopcore/model/customer/ShopCustomer.java +++ b/src/org/mxchange/jshopcore/model/customer/ShopCustomer.java @@ -17,6 +17,17 @@ package org.mxchange.jshopcore.model.customer; import java.sql.Timestamp; +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; import org.mxchange.jcore.model.contact.BaseContact; /** @@ -24,45 +35,68 @@ import org.mxchange.jcore.model.contact.BaseContact; * * @author Roland Haeder */ +@Entity (name = "Customer") +@Table (name = "customer") public class ShopCustomer extends BaseContact implements Customer { + + /** + * Serial number + */ + private static final long serialVersionUID = 4_328_454_581_751L; + /** - * Id number from "contact" table + * Customer id */ + @Id + @Column (name = "id", nullable = false, length = 20) + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long customerId; + + /** + * Id number from "contacts" table + */ + @JoinColumn (table = "contacts", unique = true) + @OneToOne (optional = false, targetEntity = BaseContact.class, orphanRemoval = true) + @Column (name = "customer_contact_id", nullable = false, length = 20) private long contactId; /** * Confirmation key */ + @Column (name = "customer_confirm_key", length = 50) private String customerConfirmKey; /** * "created" timestamp */ + @Basic(optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "customer_created", nullable = false) private Timestamp customerCreated; /** * "locked" timestamp */ + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "customer_locked") private Timestamp customerLocked; /** - * Customer number, this is different to the database entry id. + * Customer number, this is different to the database entry customerId. */ + @Column (name = "customer_number", nullable = false, length = 20) private String customerNumber; - /** - * Serial number - */ - private static final long serialVersionUID = 4_328_454_581_751L; - /** * Password hash */ + @Column (name = "customer_password_hash") private String customerPasswordHash; /** * Account status */ + @Column (name = "customer_status", nullable = false) private String customerStatus; @Override @@ -134,4 +168,14 @@ public class ShopCustomer extends BaseContact implements Customer { public void setCustomerStatus (final String customerStatus) { this.customerStatus = customerStatus; } + + @Override + public Long getCustomerId () { + return this.customerId; + } + + @Override + public void setCustomerId (final Long customerId) { + this.customerId = customerId; + } } diff --git a/src/org/mxchange/jshopcore/model/order/Orderable.java b/src/org/mxchange/jshopcore/model/order/Orderable.java new file mode 100644 index 0000000..93f75ff --- /dev/null +++ b/src/org/mxchange/jshopcore/model/order/Orderable.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2015 Roland Haeder + * + * 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.jshopcore.model.order; + +import java.io.Serializable; +import java.sql.Timestamp; + +/** + * An interface for customer orders + * + * @author Roland Haeder + */ +public interface Orderable extends Serializable { + + /** + * Getter for order id + * + * @return Order id + */ + public Long getId (); + + /** + * Setter for order id + * + * @param id Order id + */ + public void setId (final Long id); + + /** + * Getter for customer id + * + * @return Customer id + */ + public Long getCustomerId (); + + /** + * Setter for customer id + * + * @param customerId Customer id + */ + public void setCustomerId (final Long customerId); + + /** + * Getter for created timestamp + * + * @return Created timestamp + */ + public Timestamp getCreated (); + + /** + * Setter for created timestamp + * + * @param created Created timestamp + */ + public void setCreated (final Timestamp created); +} diff --git a/src/org/mxchange/jshopcore/model/order/ShopOrder.java b/src/org/mxchange/jshopcore/model/order/ShopOrder.java new file mode 100644 index 0000000..65361ee --- /dev/null +++ b/src/org/mxchange/jshopcore/model/order/ShopOrder.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2015 Roland Haeder + * + * 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.jshopcore.model.order; + +import java.sql.Timestamp; +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +/** + * An entity class for shop orders + * + * @author Roland Haeder + */ +@Entity (name = "Orders") +@Table (name = "orders") +public class ShopOrder implements Orderable { + + /** + * Serial number + */ + private static final long serialVersionUID = 19_728_938_459_834L; + + /** + * Order id + */ + @Id + @GeneratedValue (strategy = GenerationType.IDENTITY) + private Long id; + + /** + * Customer id + */ + @Basic (optional = false) + @Column (name = "customer_id", length = 20, nullable = false) + private Long customerId; + + /** + * Access key + */ + @Basic (optional = false) + @Column (name = "access_key", length = 100, nullable = false, unique = true) + private String accessKey; + + /** + * Created timestamp + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (nullable = false) + private Timestamp created; + + @Override + public Timestamp getCreated () { + return this.created; + } + + @Override + public void setCreated (final Timestamp created) { + this.created = created; + } + + @Override + public Long getCustomerId () { + return this.customerId; + } + + @Override + public void setCustomerId (final Long customerId) { + this.customerId = customerId; + } + + @Override + public Long getId () { + return this.id; + } + + @Override + public void setId (final Long id) { + this.id = id; + } +} -- 2.39.2