From bfe0f438d32a819073100a4b5822fd18b4ea8403 Mon Sep 17 00:00:00 2001 From: c2038058 <gillj8@cardiff.ac.uk> Date: Thu, 9 Dec 2021 14:26:32 +0000 Subject: [PATCH] New Entities Repos for Logs and Events, all other required entities updated with new data --- .../clientproject/data/events/Events.java | 27 ++++++++++++ .../clientproject/data/events/EventsRepo.java | 19 ++++++++ .../example/clientproject/data/logs/Logs.java | 43 +++++++++++++++++++ .../clientproject/data/logs/LogsRepo.java | 43 +++++++++++++++++++ .../clientproject/data/users/Users.java | 5 +++ 5 files changed, 137 insertions(+) create mode 100644 src/main/java/com/example/clientproject/data/events/Events.java create mode 100644 src/main/java/com/example/clientproject/data/events/EventsRepo.java create mode 100644 src/main/java/com/example/clientproject/data/logs/Logs.java create mode 100644 src/main/java/com/example/clientproject/data/logs/LogsRepo.java diff --git a/src/main/java/com/example/clientproject/data/events/Events.java b/src/main/java/com/example/clientproject/data/events/Events.java new file mode 100644 index 0000000..9a48c0f --- /dev/null +++ b/src/main/java/com/example/clientproject/data/events/Events.java @@ -0,0 +1,27 @@ +package com.example.clientproject.data.events; + +import com.example.clientproject.data.logs.Logs; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.util.Set; + +/** + * Entity object for events which trigger a log + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +public class Events { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long eventId; + private String eventName; + + @OneToMany(cascade=CascadeType.ALL, orphanRemoval = true) + @JoinColumn(name="Event_Id", nullable = false) + private Set<Logs> logs; +} diff --git a/src/main/java/com/example/clientproject/data/events/EventsRepo.java b/src/main/java/com/example/clientproject/data/events/EventsRepo.java new file mode 100644 index 0000000..69b5d3e --- /dev/null +++ b/src/main/java/com/example/clientproject/data/events/EventsRepo.java @@ -0,0 +1,19 @@ +package com.example.clientproject.data.events; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.Optional; + +/** + * Repository for the "Events" Entity + */ +public interface EventsRepo extends JpaRepository<Events, Long> { + /** + * Find an event by its name + * @param name - the name to search by + * @return - the event as an optional + */ + @Query("select e from Events e where e.eventName = ?1") + Optional<Events> findByEventName(String name); +} diff --git a/src/main/java/com/example/clientproject/data/logs/Logs.java b/src/main/java/com/example/clientproject/data/logs/Logs.java new file mode 100644 index 0000000..190fee8 --- /dev/null +++ b/src/main/java/com/example/clientproject/data/logs/Logs.java @@ -0,0 +1,43 @@ +package com.example.clientproject.data.logs; + +import com.example.clientproject.data.converters.TinyIntToBoolean; +import com.example.clientproject.data.events.Events; +import com.example.clientproject.data.users.Users; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +/** + * Entity object for logs + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +public class Logs { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long logId; + private String logDetails; + private String logDateTime; + @Convert(converter = TinyIntToBoolean.class) + private boolean logSuperAdmin; + + @ManyToOne + @JoinColumn(name="User_Id", nullable=false) + private Users user; + + @ManyToOne + @JoinColumn(name="Event_Id", nullable=false) + private Events event; + + public Logs(String details, String dateTime, boolean superAdmin, Users aUser, Events aEvent) { + logDetails = details; + logDateTime = dateTime; + logSuperAdmin = superAdmin; + user = aUser; + event = aEvent; + } +} diff --git a/src/main/java/com/example/clientproject/data/logs/LogsRepo.java b/src/main/java/com/example/clientproject/data/logs/LogsRepo.java new file mode 100644 index 0000000..7c59219 --- /dev/null +++ b/src/main/java/com/example/clientproject/data/logs/LogsRepo.java @@ -0,0 +1,43 @@ +package com.example.clientproject.data.logs; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +/** + * JPA Repo for the Logs entity + */ +public interface LogsRepo extends JpaRepository<Logs, Long> { + /** + * Find all the logs from a specific date time + * @param dateTime - the datetime to search by + * @return - list of logs from that date time + */ + @Query("select l from Logs l where l.logDateTime like ?1") + List<Logs> findByDateTime(String dateTime); + + /** + * Find all the logs for a specific event + * @param eventId - the id of the event to search by + * @return - a list of logs with that event + */ + @Query("select l from Logs l where l.event.eventId = ?1") + List<Logs> findByEventId(long eventId); + + /** + * Find all the logs for a specific user + * @param userId - the id of the user to search by + * @return - a list of all the logs for that user + */ + @Query("select l from Logs l where l.user.userId = ?1") + List<Logs> findByUserId(long userId); + + /** + * Find all the logs by a specific super admin status + * @param superAdminStatus - the status to search by + * @return - a list of the logs found + */ + @Query("select l from Logs l where l.logSuperAdmin = ?1") + List<Logs> findBySuperAdminStatus(boolean superAdminStatus); +} diff --git a/src/main/java/com/example/clientproject/data/users/Users.java b/src/main/java/com/example/clientproject/data/users/Users.java index f5c4834..96803f2 100644 --- a/src/main/java/com/example/clientproject/data/users/Users.java +++ b/src/main/java/com/example/clientproject/data/users/Users.java @@ -1,5 +1,6 @@ package com.example.clientproject.data.users; +import com.example.clientproject.data.logs.Logs; import com.example.clientproject.data.shops.Shops; import com.example.clientproject.data.userStampBoards.UserStampBoards; import com.example.clientproject.data.tags.Tags; @@ -91,6 +92,10 @@ public class Users { ) private List<Tags> favouriteTags; + @OneToMany(cascade=CascadeType.ALL, orphanRemoval = true) + @JoinColumn(name="User_Id", nullable=false) + private Set<Logs> logs; + public String toString(){ return "User:" + this.getUserFirstName(); } -- GitLab