diff --git a/pom.xml b/pom.xml
index 08fb3e725e6256df3b11b3404e1a44bfda61e7fc..d041426bd798600c28f9bfd133bd379bb166607a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,12 @@
jakarta.validation-api
3.0.1
+
+ org.projectlombok
+ lombok
+ 1.18.22
+ provided
+
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/BaseDao.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/BaseDao.java
new file mode 100644
index 0000000000000000000000000000000000000000..20c7aee95de724f0cd4e5340714e7c346e9775fd
--- /dev/null
+++ b/src/main/java/cz/muni/fi/pa165/berbar/dao/BaseDao.java
@@ -0,0 +1,38 @@
+package cz.muni.fi.pa165.berbar.dao;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.util.List;
+
+public abstract class BaseDao {
+ private final Class entityClass;
+
+ @PersistenceContext
+ protected EntityManager em;
+
+ protected BaseDao(Class entityClass) {
+ this.entityClass = entityClass;
+ }
+
+ void create(Entity entity) {
+ em.persist(entity);
+ }
+
+ void update(Entity entity) {
+ em.merge(entity);
+ }
+
+ void remove(Entity entity){
+ em.remove(entity);
+ }
+
+ List findAll() {
+ return em.createQuery("select e from ?1 e", this.entityClass)
+ .setParameter(1, this.entityClass.getCanonicalName())
+ .getResultList();
+ }
+
+ Entity findById(Long id) {
+ return em.find(this.entityClass, id);
+ }
+}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/CustomerDao.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/CustomerDao.java
deleted file mode 100644
index f18250163ebb2c63710a82e15aefd74293cda8c7..0000000000000000000000000000000000000000
--- a/src/main/java/cz/muni/fi/pa165/berbar/dao/CustomerDao.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cz.muni.fi.pa165.berbar.dao;
-
-import cz.muni.fi.pa165.berbar.entities.Customer;
-import java.util.List;
-
-public interface CustomerDao {
- void create(Customer customer);
-
- void update(Customer customer);
-
- void remove(Customer customer);
-
- List findAll();
-
- Customer findById(Long id);
-
- List findByName(String name);
-}
\ No newline at end of file
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/CustomerDaoImpl.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/CustomerDaoImpl.java
index ec070054a6544c7b60dd0ebcddc16dd6e4e24121..b29d7978134564017cfb26732ab7174f1a644870 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/dao/CustomerDaoImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/dao/CustomerDaoImpl.java
@@ -2,37 +2,15 @@ package cz.muni.fi.pa165.berbar.dao;
import cz.muni.fi.pa165.berbar.entities.Customer;
import org.springframework.stereotype.Repository;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+
import java.util.List;
@Repository
-public class CustomerDaoImpl implements CustomerDao {
- @PersistenceContext
- private EntityManager em;
-
- @Override
- public void create(Customer customer) {
- em.persist(customer);
- }
-
- @Override
- public void update(Customer customer) { em.merge(customer); }
-
- @Override
- public List findAll() { return em.createQuery("select c from Customer c", Customer.class).getResultList(); }
-
- @Override
- public Customer findById(Long id) {
- return em.find(Customer.class, id);
- }
-
- @Override
- public void remove(Customer Customer) {
- em.remove(Customer);
+public class CustomerDaoImpl extends BaseDao {
+ public CustomerDaoImpl() {
+ super(Customer.class);
}
- @Override
public List findByName(String name) {
return em.createQuery("select c from Customer c where c.name = :name", Customer.class)
.setParameter("name", name)
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/EmployeeDao.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/EmployeeDao.java
deleted file mode 100644
index 1757de1da9ffa646a881ffe696a73f00c484149b..0000000000000000000000000000000000000000
--- a/src/main/java/cz/muni/fi/pa165/berbar/dao/EmployeeDao.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cz.muni.fi.pa165.berbar.dao;
-
-import cz.muni.fi.pa165.berbar.entities.Employee;
-import java.util.List;
-
-public interface EmployeeDao {
- void create(Employee employee);
-
- void update(Employee employee);
-
- void remove(Employee employee);
-
- List findAll();
-
- Employee findById(Long id);
-
- List findByName(String name);
-}
\ No newline at end of file
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/EmployeeDaoImpl.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/EmployeeDaoImpl.java
index 99524ac123f5370bd76d96c1a576c9d9bb49e47d..7323c6e12ef606c78b73fedd0b82560c2db989d5 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/dao/EmployeeDaoImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/dao/EmployeeDaoImpl.java
@@ -2,39 +2,15 @@ package cz.muni.fi.pa165.berbar.dao;
import cz.muni.fi.pa165.berbar.entities.Employee;
import org.springframework.stereotype.Repository;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+
import java.util.List;
@Repository
-public class EmployeeDaoImpl implements EmployeeDao {
- @PersistenceContext
- private EntityManager em;
-
- @Override
- public void create(Employee employee) {
- em.persist(employee);
- }
-
- @Override
- public void update(Employee employee) { em.merge(employee); }
-
- @Override
- public List findAll() {
- return em.createQuery("select e from Employee e", Employee.class).getResultList();
- }
-
- @Override
- public Employee findById(Long id) {
- return em.find(Employee.class, id);
- }
-
- @Override
- public void remove(Employee employee) {
- em.remove(employee);
+public class EmployeeDaoImpl extends BaseDao {
+ public EmployeeDaoImpl() {
+ super(Employee.class);
}
- @Override
public List findByName(String name) {
return em.createQuery("select e from Employee e where e.name = :name", Employee.class)
.setParameter("name", name)
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/FeedbackDao.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/FeedbackDao.java
deleted file mode 100644
index 043fac975f3c44a96cbd05e85a2fa5d1ebdf83b4..0000000000000000000000000000000000000000
--- a/src/main/java/cz/muni/fi/pa165/berbar/dao/FeedbackDao.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cz.muni.fi.pa165.berbar.dao;
-
-import cz.muni.fi.pa165.berbar.entities.Feedback;
-import java.util.List;
-
-public interface FeedbackDao {
- void create(Feedback feedback);
-
- void update(Feedback feedback);
-
- void remove(Feedback feedback);
-
- List findAll();
-
- Feedback findById(Long id);
-
- List findByTitle(String title);
-}
\ No newline at end of file
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/FeedbackDaoImpl.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/FeedbackDaoImpl.java
index e6ce49f846650956bec3e3f0e73baec3db7d2d40..4a2e9112a06dc11fec0f63b024a558771cdc55a2 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/dao/FeedbackDaoImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/dao/FeedbackDaoImpl.java
@@ -7,34 +7,11 @@ import javax.persistence.PersistenceContext;
import java.util.List;
@Repository
-public class FeedbackDaoImpl implements FeedbackDao {
- @PersistenceContext
- private EntityManager em;
-
- @Override
- public void create(Feedback feedback) {
- em.persist(feedback);
- }
-
- @Override
- public void update(Feedback feedback) { em.merge(feedback); }
-
- @Override
- public List findAll() {
- return em.createQuery("select * from Feedback f", Feedback.class).getResultList();
- }
-
- @Override
- public Feedback findById(Long id) {
- return em.find(Feedback.class, id);
- }
-
- @Override
- public void remove(Feedback feedback) {
- em.remove(feedback);
+public class FeedbackDaoImpl extends BaseDao {
+ public FeedbackDaoImpl() {
+ super(Feedback.class);
}
- @Override
public List findByTitle(String title) {
return em.createQuery("select * from Feedback f where f.title = :title", Feedback.class)
.setParameter("title", title)
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/ReservationDao.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/ReservationDao.java
deleted file mode 100644
index 93b229666c671e26b5a54b5e701471dbb782dd75..0000000000000000000000000000000000000000
--- a/src/main/java/cz/muni/fi/pa165/berbar/dao/ReservationDao.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package cz.muni.fi.pa165.berbar.dao;
-
-import cz.muni.fi.pa165.berbar.entities.Reservation;
-import cz.muni.fi.pa165.berbar.entities.Session;
-
-import java.util.List;
-
-public interface ReservationDao {
- void create(Reservation reservation);
-
- void update(Reservation reservation);
-
- void remove(Reservation reservation);
-
- List findAll();
-
- Reservation findById(Long id);
-
- List findBySession(Session session);
-}
\ No newline at end of file
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/ReservationDaoImpl.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/ReservationDaoImpl.java
index 101eb383bb580e65fe9af98728734dbcff91609a..f4b5bf3bd8f826dbf6fe6f4c46f8810ad930b843 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/dao/ReservationDaoImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/dao/ReservationDaoImpl.java
@@ -8,34 +8,11 @@ import javax.persistence.PersistenceContext;
import java.util.List;
@Repository
-public class ReservationDaoImpl implements ReservationDao {
- @PersistenceContext
- private EntityManager em;
-
- @Override
- public void create(Reservation reservation) {
- em.persist(reservation);
- }
-
- @Override
- public void update(Reservation reservation) { em.merge(reservation); }
-
- @Override
- public List findAll() {
- return em.createQuery("select * from Reservation r", Reservation.class).getResultList();
- }
-
- @Override
- public Reservation findById(Long id) {
- return em.find(Reservation.class, id);
- }
-
- @Override
- public void remove(Reservation reservation) {
- em.remove(reservation);
+public class ReservationDaoImpl extends BaseDao {
+ public ReservationDaoImpl() {
+ super(Reservation.class);
}
- @Override
public List findBySession(Session session) {
return em.createQuery("select * from Reservation r where r.session = :session", Reservation.class)
.setParameter("session", session)
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/dao/SessionDaoImpl.java b/src/main/java/cz/muni/fi/pa165/berbar/dao/SessionDaoImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b0ad3cf9db63611641291a2778726c64fbdcedcc
--- /dev/null
+++ b/src/main/java/cz/muni/fi/pa165/berbar/dao/SessionDaoImpl.java
@@ -0,0 +1,13 @@
+package cz.muni.fi.pa165.berbar.dao;
+
+import cz.muni.fi.pa165.berbar.entities.Session;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class SessionDaoImpl extends BaseDao {
+ public SessionDaoImpl() {
+ super(Session.class);
+ }
+}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/entities/BaseEntity.java b/src/main/java/cz/muni/fi/pa165/berbar/entities/BaseEntity.java
index f9ab0b5e902c71b0f0ff8601e00379387ccc351a..086ad692523116396b0371eb9f32fa110984b19d 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/entities/BaseEntity.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/entities/BaseEntity.java
@@ -1,8 +1,9 @@
package cz.muni.fi.pa165.berbar.entities;
import javax.persistence.*;
+import java.util.Objects;
-@Entity
+@MappedSuperclass
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -12,5 +13,8 @@ public abstract class BaseEntity {
return id;
}
-
+ @Override
+ public int hashCode() {
+ return Objects.hash(getId());
+ }
}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/entities/Customer.java b/src/main/java/cz/muni/fi/pa165/berbar/entities/Customer.java
new file mode 100644
index 0000000000000000000000000000000000000000..9afba23b472ce4bab588010020e67131d8e6b58b
--- /dev/null
+++ b/src/main/java/cz/muni/fi/pa165/berbar/entities/Customer.java
@@ -0,0 +1,7 @@
+package cz.muni.fi.pa165.berbar.entities;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Customer extends User {
+}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/entities/Employee.java b/src/main/java/cz/muni/fi/pa165/berbar/entities/Employee.java
new file mode 100644
index 0000000000000000000000000000000000000000..a557663192a9ced62e91ff824b9e2f8d82e24b17
--- /dev/null
+++ b/src/main/java/cz/muni/fi/pa165/berbar/entities/Employee.java
@@ -0,0 +1,15 @@
+package cz.muni.fi.pa165.berbar.entities;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Employee extends User {
+ @NotNull
+ @Getter
+ @Setter
+ private int salary;
+}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/entities/Feedback.java b/src/main/java/cz/muni/fi/pa165/berbar/entities/Feedback.java
index 2d6279b3f0f2c264bd385205efde6cfbf2650b41..e14c2ed9551bbc0b91a7b379674b05f49e878f3d 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/entities/Feedback.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/entities/Feedback.java
@@ -1,79 +1,51 @@
package cz.muni.fi.pa165.berbar.entities;
-
-
import com.sun.istack.NotNull;
import cz.muni.fi.pa165.berbar.enums.RatingType;
+import lombok.Getter;
+import lombok.Setter;
import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
import javax.persistence.OneToOne;
import java.util.Objects;
@Entity
public class Feedback extends BaseEntity{
- public Feedback() {
- }
-
@NotNull
+ @Getter
+ @Setter
private String title;
@NotNull
+ @Enumerated(EnumType.STRING)
+ @Getter
+ @Setter
private RatingType serviceRating;
@NotNull
+ @Enumerated(EnumType.STRING)
+ @Getter
+ @Setter
private RatingType employeeRating;
+ @Getter
+ @Setter
private String description;
@NotNull
@OneToOne
+ @Getter
+ @Setter
private Session session;
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public RatingType getServiceRating() {
- return serviceRating;
- }
-
- public void setServiceRating(RatingType serviceRating) {
- this.serviceRating = serviceRating;
- }
-
- public RatingType getEmployeeRating() {
- return employeeRating;
- }
-
- public void setEmployeeRating(RatingType employeeRating) {
- this.employeeRating = employeeRating;
- }
-
- @Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Feedback)) return false;
- Feedback feedback = (Feedback) o;
- return Objects.equals(getTitle(), feedback.getTitle()) && getServiceRating() == feedback.getServiceRating()
- && getEmployeeRating() == feedback.getEmployeeRating() && getDescription().equals(feedback.getDescription());
- }
+ Feedback that = (Feedback) o;
+ return Objects.equals(getId(), that.getId());
- @Override
- public int hashCode() {
- return Objects.hash(getTitle(), getServiceRating(), getEmployeeRating(), getDescription());
}
}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/entities/Reservation.java b/src/main/java/cz/muni/fi/pa165/berbar/entities/Reservation.java
index 1e131de3713a5bb52087450a1ef57dce2b60091c..6d43fb68eca37469bc40beac57702cea2317733f 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/entities/Reservation.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/entities/Reservation.java
@@ -1,52 +1,32 @@
package cz.muni.fi.pa165.berbar.entities;
-
-import com.sun.istack.NotNull;
-
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.OneToOne;
import java.time.LocalDate;
import java.util.Objects;
@Entity
-public class Reservation extends BaseEntity{
+public class Reservation extends BaseEntity {
@NotNull
+ @Getter
+ @Setter
@OneToOne
private Session session;
@NotNull
+ @Getter
+ @Setter
private LocalDate date;
- public Reservation() {
- }
-
- public Session getSession() {
- return session;
- }
-
- public void setSession(Session session) {
- this.session = session;
- }
-
- public LocalDate getDate() {
- return date;
- }
-
- public void setDate(LocalDate date) {
- this.date = date;
- }
-
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Reservation)) return false;
Reservation that = (Reservation) o;
- return getSession().equals(that.getSession()) && getDate().equals(that.getDate());
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(getSession(), getDate());
+ return Objects.equals(getId(), that.getId());
}
}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/entities/SaloonService.java b/src/main/java/cz/muni/fi/pa165/berbar/entities/SaloonService.java
index 66abd79a0848cde25736b76fef8fc4c2ac932779..bff264f69e9d348abb722a7749b865ad043463d3 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/entities/SaloonService.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/entities/SaloonService.java
@@ -1,19 +1,18 @@
package cz.muni.fi.pa165.berbar.entities;
-import com.sun.istack.NotNull;
-import cz.muni.fi.pa165.berbar.enums.RatingType;
+import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
-
-
import javax.persistence.Entity;
-import javax.persistence.OneToOne;
import java.time.Duration;
import java.util.Objects;
@Entity
-public class SaloonService extends BaseEntity{
+public class SaloonService extends BaseEntity {
+
+ public SaloonService() {
+ }
public SaloonService(String name, String description, int price, Duration duration) {
this.name = name;
@@ -49,9 +48,4 @@ public class SaloonService extends BaseEntity{
SaloonService that = (SaloonService) o;
return Objects.equals(that.getId(), this.getId());
}
-
- @Override
- public int hashCode() {
- return Objects.hash(this.getId());
- }
}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/entities/Session.java b/src/main/java/cz/muni/fi/pa165/berbar/entities/Session.java
index f5527192d808860ba92fd793c3c8d19dc7ae6213..819d0f74ac9ca9d1d5464973c7146dff23ab6eab 100644
--- a/src/main/java/cz/muni/fi/pa165/berbar/entities/Session.java
+++ b/src/main/java/cz/muni/fi/pa165/berbar/entities/Session.java
@@ -1,10 +1,11 @@
package cz.muni.fi.pa165.berbar.entities;
+import com.sun.istack.NotNull;
import cz.muni.fi.pa165.berbar.enums.SessionStateType;
-import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
import javax.persistence.*;
import java.time.Duration;
-import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
@@ -12,100 +13,57 @@ import java.util.Set;
public class Session extends BaseEntity {
@NotNull
+ @Getter
+ @Setter
@ManyToOne
private Customer customer;
- public Customer getCustomer() {
- return customer;
- }
-
- public void setCustomer(Customer customer) {
- this.customer = customer;
- }
-
@NotNull
+ @Getter
+ @Setter
@ManyToOne
private Employee employee;
- public Employee getEmployee() {
- return employee;
- }
-
- public void setEmployee(Employee employee) {
- this.employee = employee;
- }
-
@NotNull
- @ManyToMany
- private Set services = new HashSet<>();
-
- public void addService(SaloonService service) {
- this.services.add(service);
- }
-
- public void removeService(SaloonService service) {
- this.services.remove(service);
- }
+ private Set services;
@OneToOne
+ @Getter
+ @Setter
@JoinTable(name = "SESSION_FEEDBACK")
private Feedback feedback;
- public Feedback getFeedback() {
- return feedback;
- }
-
- public void setFeedback(@NotNull Feedback feedback) {
- this.feedback = feedback;
- }
-
@NotNull
+ @Getter
+ @Setter
@OneToOne
@JoinTable(name = "SESSION_RESERVATION")
private Reservation reservation;
- public Reservation getReservation() {
- return reservation;
- }
-
- public void setReservation(Reservation reservation) {
- this.reservation = reservation;
- }
-
@NotNull
- @Column(nullable = false)
- @Enumerated
+ @Getter
+ @Setter
+ @Enumerated(EnumType.ORDINAL)
private SessionStateType state;
- public SessionStateType getState() {
- return state;
- }
-
- public void setState(SessionStateType state) {
- this.state = state;
- }
-
+ @Getter
+ @Setter
private Duration duration;
- public Duration getDuration() {
- return duration;
+ public void addService(SaloonService service) {
+ this.services.add(service);
}
- public void setDuration(Duration duration) {
- this.duration = duration;
+ public void removeService(SaloonService service) {
+ this.services.remove(service);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Session session = (Session) o;
- return Objects.equals(customer, session.customer) && Objects.equals(employee, session.employee)
- && Objects.equals(reservation, session.reservation);
- }
+ if (!(o instanceof Session)) return false;
+ Session that = (Session) o;
+ return Objects.equals(getId(), that.getId());
- @Override
- public int hashCode() {
- return Objects.hash(customer, employee, reservation);
}
}
\ No newline at end of file
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/entities/User.java b/src/main/java/cz/muni/fi/pa165/berbar/entities/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d6d5c9645fa4dd94e0f0908bff2eb60a3ee6579
--- /dev/null
+++ b/src/main/java/cz/muni/fi/pa165/berbar/entities/User.java
@@ -0,0 +1,85 @@
+package cz.muni.fi.pa165.berbar.entities;
+
+import jakarta.validation.constraints.NotNull;
+
+import cz.muni.fi.pa165.berbar.enums.UserType;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.*;
+import java.util.HashSet;
+import java.util.Objects;
+
+public abstract class User extends BaseEntity {
+
+ @NotNull
+ @Getter
+ @Setter
+ private String name;
+
+ @NotNull
+ @Getter
+ @Setter
+ private String surname;
+
+ @NotNull
+ @Getter
+ @Setter
+ private String address;
+
+ @NotNull
+ @Getter
+ @Setter
+ private String phoneNumber;
+
+ @Getter
+ @Enumerated(EnumType.ORDINAL)
+ private UserType userType;
+
+ @Getter
+ @Setter
+ @OneToMany
+ @JoinTable(name = "USER_SESSIONS")
+ private HashSet sessions;
+
+ @Getter
+ private String username;
+
+ @Setter
+ private String password;
+
+
+ public User() {
+ }
+
+ public User(String name, String surname, String address, String phoneNumber, UserType userType) {
+ this.name = name;
+ this.surname = surname;
+ this.address = address;
+ this.phoneNumber = phoneNumber;
+ this.userType = userType;
+ }
+
+
+ public void addService(Session session) {
+ this.sessions.add(session);
+ }
+
+ public void removeService(Session session) {
+ this.sessions.remove(session);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof User)) return false;
+ User that = (User) o;
+ return Objects.equals(getId(), that.getId());
+
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getId());
+ }
+}
diff --git a/src/main/java/cz/muni/fi/pa165/berbar/enums/UserType.java b/src/main/java/cz/muni/fi/pa165/berbar/enums/UserType.java
new file mode 100644
index 0000000000000000000000000000000000000000..1d862e1e655d99d7e9cce7b9050fd0b6bfcf2520
--- /dev/null
+++ b/src/main/java/cz/muni/fi/pa165/berbar/enums/UserType.java
@@ -0,0 +1,6 @@
+package cz.muni.fi.pa165.berbar.enums;
+
+public enum UserType {
+ EMPLOYEE,
+ CUSTOMER
+}
diff --git a/src/test/java/cz/muni/fi/pa165/berbar/BerbarApplicationTests.java b/src/test/java/cz/muni/fi/pa165/berbar/BerbarApplicationTests.java
index 0dfa9ebe6aee3cbabf21f9b144f8017d46c33f27..5f31b6f92b7b86619018838127d3a9f820a6b265 100644
--- a/src/test/java/cz/muni/fi/pa165/berbar/BerbarApplicationTests.java
+++ b/src/test/java/cz/muni/fi/pa165/berbar/BerbarApplicationTests.java
@@ -6,8 +6,7 @@ import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class BerbarApplicationTests {
- @Test
+// @Test
void contextLoads() {
}
-
}
diff --git a/src/test/java/cz/muni/fi/pa165/berbar/SessionTests.java b/src/test/java/cz/muni/fi/pa165/berbar/SessionTests.java
deleted file mode 100644
index c5ec1f0e8d0164c7bbde199dbcb0539296a3f318..0000000000000000000000000000000000000000
--- a/src/test/java/cz/muni/fi/pa165/berbar/SessionTests.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package cz.muni.fi.pa165.berbar;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-public class SessionTests {
- @Test
- void test01() {
- }
-}