From bacc97234c6753ceb5845cb96f1a3c41a4e32bc3 Mon Sep 17 00:00:00 2001
From: Rhys Nute <nuterd@cardiff.ac.uk>
Date: Thu, 30 Nov 2023 13:59:50 +0000
Subject: [PATCH] database complete

---
 .../SmartTowns/Data/DatabaseController.java   |  44 ++++++++++++++++++
 .../Team5/SmartTowns/Data/UserController.java |  29 ------------
 .../Team5/SmartTowns/Data/UserRepository.java |   4 --
 .../SmartTowns/Data/UserRepositoryJDBC.java   |  10 ++--
 .../java/Team5/SmartTowns/Data/location.java  |  11 +++++
 .../SmartTowns/Data/locationRepository.java   |   9 ++++
 .../Data/locationRepositoryJDBC.java          |  28 +++++++++++
 .../java/Team5/SmartTowns/Data/trail.java     |  11 +++++
 .../SmartTowns/Data/trailsRepository.java     |   7 +++
 .../SmartTowns/Data/trailsRepositoryJDBC.java |  27 +++++++++++
 src/main/java/Team5/SmartTowns/Data/user.java |  10 ++--
 src/main/resources/Towns.db                   | Bin 32768 -> 0 bytes
 src/main/resources/application.properties     |   2 +-
 src/main/resources/data.sql                   |  11 +++++
 src/main/resources/landmarkSchema.sql         |   5 --
 src/main/resources/locationData.sql           |   0
 src/main/resources/schema.sql                 |   6 ++-
 .../resources/templates/towns/UserData.html   |  14 ++++++
 .../templates/towns/locationData.html         |  14 ++++++
 .../resources/templates/towns/trailsData.html |  14 ++++++
 src/main/resources/trailsData.sql             |   0
 src/main/resources/userData.sql               |   2 -
 22 files changed, 206 insertions(+), 52 deletions(-)
 create mode 100644 src/main/java/Team5/SmartTowns/Data/DatabaseController.java
 delete mode 100644 src/main/java/Team5/SmartTowns/Data/UserController.java
 create mode 100644 src/main/java/Team5/SmartTowns/Data/location.java
 create mode 100644 src/main/java/Team5/SmartTowns/Data/locationRepository.java
 create mode 100644 src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java
 create mode 100644 src/main/java/Team5/SmartTowns/Data/trail.java
 create mode 100644 src/main/java/Team5/SmartTowns/Data/trailsRepository.java
 create mode 100644 src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java
 delete mode 100644 src/main/resources/Towns.db
 create mode 100644 src/main/resources/data.sql
 delete mode 100644 src/main/resources/landmarkSchema.sql
 delete mode 100644 src/main/resources/locationData.sql
 create mode 100644 src/main/resources/templates/towns/UserData.html
 create mode 100644 src/main/resources/templates/towns/locationData.html
 create mode 100644 src/main/resources/templates/towns/trailsData.html
 delete mode 100644 src/main/resources/trailsData.sql
 delete mode 100644 src/main/resources/userData.sql

diff --git a/src/main/java/Team5/SmartTowns/Data/DatabaseController.java b/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
new file mode 100644
index 00000000..2bcd14c2
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
@@ -0,0 +1,44 @@
+package Team5.SmartTowns.Data;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.*;
+@Controller
+public class DatabaseController {
+
+    @Autowired
+    private UserRepository userRepository;
+//    @Autowired
+//    private locationRepository locationRepository;
+//    @Autowired
+//    private trailsRepository trailsRepository;
+
+//    public DatabaseController() {
+//
+//    }
+
+    @GetMapping("/userList")
+    public ModelAndView userList() {
+        ModelAndView mav = new ModelAndView("towns/userData");
+        List<user> users = userRepository.getAllUsers();
+        mav.addObject("users", users);
+        return mav;
+    }
+//    @GetMapping("/trailList")
+//    public ModelAndView trailList() {
+//        ModelAndView mav1 = new ModelAndView("towns/trailsData");
+//        List<trail> trail = trailsRepository.getAllTrails();
+//        mav1.addObject("trails", trail);
+//        return mav1;
+//    }
+//    @GetMapping("locationList")
+//    public ModelAndView locationList(){
+//        ModelAndView mav2 = new ModelAndView("towns/locationData");
+//        List<location> location = locationRepository.getAllLocations();
+//        mav2.addObject("location", location);
+//        return mav2;
+//    }
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/UserController.java b/src/main/java/Team5/SmartTowns/Data/UserController.java
deleted file mode 100644
index a492d252..00000000
--- a/src/main/java/Team5/SmartTowns/Data/UserController.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package Team5.SmartTowns.Data;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.*;
-@Controller
-public class UserController {
-
-    private List<user> users = List.of(
-            new user (1, "Mrs", "Hannah", "English", "hannah.english@gmail.com"),
-            new user (2, "Mr", "Tom", "Harper", "tom.harper2@gmail.com"),
-            new user (3, "Mrs", "Sarah", "Burton", "sarahburton@gmail.com"),
-            new user (4, "Mr", "Nigel", "Hopkins", "nigelahopkins@gmail.com")
-    );
-
-    @Autowired
-    private UserRepository userRepository;
-
-    @GetMapping("/userList")
-    public ModelAndView userList(){
-        ModelAndView mav = new ModelAndView("usersData.sql");
-        List<user> users = userRepository.getAllUsers();
-        mav.addObject("users", users);
-        return mav;
-    }
-}
diff --git a/src/main/java/Team5/SmartTowns/Data/UserRepository.java b/src/main/java/Team5/SmartTowns/Data/UserRepository.java
index 80e0dc68..419ab099 100644
--- a/src/main/java/Team5/SmartTowns/Data/UserRepository.java
+++ b/src/main/java/Team5/SmartTowns/Data/UserRepository.java
@@ -2,10 +2,6 @@ package Team5.SmartTowns.Data;
 
 import java.util.List;
 
-
 public interface UserRepository {
     List<user> getAllUsers();
-
-
-
 }
diff --git a/src/main/java/Team5/SmartTowns/Data/UserRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/UserRepositoryJDBC.java
index 17f15f9c..a1cce5fa 100644
--- a/src/main/java/Team5/SmartTowns/Data/UserRepositoryJDBC.java
+++ b/src/main/java/Team5/SmartTowns/Data/UserRepositoryJDBC.java
@@ -17,19 +17,19 @@ public class UserRepositoryJDBC implements UserRepository{
         setuserMapper();
     }
 
+
     private void setuserMapper(){
         userMapper = (rs, i) -> new user(
                 rs.getInt("userId"),
-                rs.getString("Title"),
-                rs.getString("firstName"),
-                rs.getString("lastName"),
-                rs.getString("emailAddress")
+                rs.getString("name")
         );
     }
 
+
+
     @Override
     public List<user> getAllUsers(){
-        String sql = "select * from user";
+        String sql= "SELECT * FROM users";
         return jdbc.query(sql, userMapper);
     }
 }
diff --git a/src/main/java/Team5/SmartTowns/Data/location.java b/src/main/java/Team5/SmartTowns/Data/location.java
new file mode 100644
index 00000000..03fff518
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/location.java
@@ -0,0 +1,11 @@
+package Team5.SmartTowns.Data;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class location {
+    private int locationId;
+    private String name;
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/locationRepository.java b/src/main/java/Team5/SmartTowns/Data/locationRepository.java
new file mode 100644
index 00000000..ce30cda9
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/locationRepository.java
@@ -0,0 +1,9 @@
+package Team5.SmartTowns.Data;
+
+import java.util.List;
+
+public interface locationRepository {
+    List<location> getAllLocations();
+
+
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java
new file mode 100644
index 00000000..4743ea8b
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java
@@ -0,0 +1,28 @@
+package Team5.SmartTowns.Data;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public abstract class locationRepositoryJDBC implements locationRepository {
+    private JdbcTemplate jdbc;
+    private RowMapper<location> locationMapper;
+
+    public locationRepositoryJDBC(JdbcTemplate aJdbc) {
+        this.jdbc = aJdbc;
+        setlocationMapper();
+    }
+    private void setlocationMapper(){
+        locationMapper = (rs, i) -> new location(
+                rs.getInt("locationId"),
+                rs.getString("name")
+        );
+    }
+    public List<location> getAllLocation(){
+        String sql= "SELECT * FROM location";
+        return jdbc.query(sql, locationMapper);
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/trail.java b/src/main/java/Team5/SmartTowns/Data/trail.java
new file mode 100644
index 00000000..413431db
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/trail.java
@@ -0,0 +1,11 @@
+package Team5.SmartTowns.Data;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class trail {
+    private int trailsId;
+    private String name;
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/trailsRepository.java b/src/main/java/Team5/SmartTowns/Data/trailsRepository.java
new file mode 100644
index 00000000..70f7c2d9
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/trailsRepository.java
@@ -0,0 +1,7 @@
+package Team5.SmartTowns.Data;
+
+import java.util.List;
+
+public interface trailsRepository {
+    List<trail> getAllTrails();
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java
new file mode 100644
index 00000000..40ce5ff0
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java
@@ -0,0 +1,27 @@
+package Team5.SmartTowns.Data;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class trailsRepositoryJDBC {
+    private JdbcTemplate jdbc;
+    private RowMapper<trail> trailMapper;
+    public trailsRepositoryJDBC(JdbcTemplate aJdbc){
+        this.jdbc = aJdbc;
+        settrailsMapper();
+    }
+    private void settrailsMapper(){
+        trailMapper = (rs, i) -> new trail(
+                rs.getInt("trailsId"),
+                rs.getString("name")
+        );
+    }
+    public List<trail> getAllTrails(){
+        String sql= "SELECT * FROM trails";
+        return jdbc.query(sql, trailMapper);
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/user.java b/src/main/java/Team5/SmartTowns/Data/user.java
index 34e1711c..7646aec5 100644
--- a/src/main/java/Team5/SmartTowns/Data/user.java
+++ b/src/main/java/Team5/SmartTowns/Data/user.java
@@ -7,8 +7,8 @@ import lombok.Data;
 @AllArgsConstructor
 public class user {
     private int userId;
-    private String title;
-    private String firstName;
-    private String lastName;
-    private String emailAddress;
-}
\ No newline at end of file
+//    private String title;
+    private String name;
+//    private String lastName;
+//    private String emailAddress;
+}
diff --git a/src/main/resources/Towns.db b/src/main/resources/Towns.db
deleted file mode 100644
index 2532550d9acf4d8abc21a6e6ed89629908b72a3e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 32768
zcmeI(J#W)M7{Kv!(&okBxC3BCsFIbbQ7fXrh!BKgp@=kX(*#thV5P-Kk(z`yu3!Nv
zUHAgb415hf0s|uxLnjtyX3pnY<VC4Eumt}j#eVMW^F8;wOC&4t&UUTid-kjTakuT;
zcf^v=H1WW;g%DZ!&d7K4x-Nr-s37;+NIWadid&oSjNC_&Hue%`B6rRBX@1CkH}-O$
zW;LN60R#|0009ILKmY**=2IZ|LVIqNO4{j;@kM+NqG8u>?;m=Dqr-jI_qwlLRdmZ!
z6^rW)r_yxnX60ecu?thj3-*ehEi{kYox?%(Q6XEcH=V~$!>(^O?Ru+Lvs?A*cFS4Q
zvs;boMy0W9KXG<f{x+~Ht>$L6E_>N<>dm5FG@ptemSt(DcU4NQfp<Jmo5Xk~sxIt3
z2ruY+n8~HB<z;PnpsrZ!AGG~WzZdN%t{YW{mySvoTz+zBBTc3Tw|XUI-Op>H(|hT?
zm6r0J&uyRheN}ctMYkO8Q}6Y(mCtL#XDaQmGTcr~N?7^NXCn7a=&e$aY{^Vn>&vs!
zjt1<OqbMmSQQfi@jg)oIn$=KEp<7nF%vLgGt*&ajYOv=t1Mld>>m3BkG?0pl3u7x`
z;^0cJ-SyVwsYUf!EeC|BMZZ0~c{Qz8z9(bzJl=?UJO32Ck@a%z4a0hsnA)VrdMv2A
zORc@h#SyfWYiVj>7(ud2^ZD&U)(9Yg00IagfB*srAb<b@2q17d0X;Y^y#G&Jt_5cy
zfB*srAb<b@2q1s}0tg_0z`O|<<}Z;j&xCnq{x-kPTlVCO00IagfB*srAb<b@2q1t!
z>;&YU{Edu!C}Hfun%miAGM@<_)Q}>2Mm<81Sx8!8#Q*<ew@w%^0tg_000IagfB*sr
zAb>y&1xEh=zZk>eGh_r1KmY**5I_I{1Q0*~0R&<p!0-RDm}Ulv00IagfB*srAb<b@
l2p|x1fsx<;(=n%D_y{0?00IagfB*srAb<b@2>iDKe*mgrG!*~<

diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index a2946a6f..95f46c69 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,4 +1,4 @@
-spring.datasource.url=jdbc:mariadb://localhost:3306/Smart_Towns
+spring.datasource.url=jdbc:mariadb://localhost:3306/towns
 spring.datasource.username=root
 spring.datasource.password=comsc
 
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
new file mode 100644
index 00000000..7f91a409
--- /dev/null
+++ b/src/main/resources/data.sql
@@ -0,0 +1,11 @@
+delete from users;
+insert into users (userID, Name) value ('1', 'Hannah');
+insert into users (userID, Name) value ('2', 'Nigel');
+
+delete from trails;
+insert into trails (trailID, Name) value ('1', 'Caerphilly Coffee Trail');
+insert into trails (trailID, Name) value ('2', 'Penarth Dragon Trail');
+
+delete from location;
+insert into location (locationID, Name) value ('1', 'Caerphilly');
+insert into location (locationID, Name) value ('2', 'Penarth');
\ No newline at end of file
diff --git a/src/main/resources/landmarkSchema.sql b/src/main/resources/landmarkSchema.sql
deleted file mode 100644
index 413ba53c..00000000
--- a/src/main/resources/landmarkSchema.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-drop table if exists landmarks;
-create table if not exists landmarks(
-landmarksId bigint auto_increment primary key,
-name varchar(100)
-) engine=InnoDB;
\ No newline at end of file
diff --git a/src/main/resources/locationData.sql b/src/main/resources/locationData.sql
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index 59b7fb68..0374c292 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -3,7 +3,11 @@ create table if not exists trails(
     trailID bigint auto_increment primary key,
     name varchar(100)
 ) engine=InnoDB;
-
+drop table if exists location;
+create table if not exists location(
+locationID bigint auto_increment primary key,
+name varchar(100)
+) engine=InnoDB;
 drop table if exists users;
 create table if not exists users(
     userID bigint auto_increment primary key,
diff --git a/src/main/resources/templates/towns/UserData.html b/src/main/resources/templates/towns/UserData.html
new file mode 100644
index 00000000..3545df54
--- /dev/null
+++ b/src/main/resources/templates/towns/UserData.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>User Information</title>
+</head>
+<body>
+<div>
+    <ul th:each="user:${users}">
+        <li th:text="${user}"></li>
+    </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/locationData.html b/src/main/resources/templates/towns/locationData.html
new file mode 100644
index 00000000..1ff28922
--- /dev/null
+++ b/src/main/resources/templates/towns/locationData.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Location Data</title>
+</head>
+<body>
+<div>
+    <ul th:each="location:${locations}">
+        <li th:text="${location}"></li>
+    </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/trailsData.html b/src/main/resources/templates/towns/trailsData.html
new file mode 100644
index 00000000..05fda9a9
--- /dev/null
+++ b/src/main/resources/templates/towns/trailsData.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Trails Information</title>
+</head>
+<body>
+<div>
+    <ul th:each="trail:${trails}">
+        <li th:text="${trails}"></li>
+    </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/trailsData.sql b/src/main/resources/trailsData.sql
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/main/resources/userData.sql b/src/main/resources/userData.sql
deleted file mode 100644
index 54560790..00000000
--- a/src/main/resources/userData.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-DELETE from users
-INSERT INTO users (userId) VALUES (1)
\ No newline at end of file
-- 
GitLab