diff --git a/src/main/java/Team5/SmartTowns/Data/Town.java b/src/main/java/Team5/SmartTowns/Data/Town.java index aa0b7cd6ba2f03dc006c45e46fc73168548548d4..22b7a435d692ddf234ce0f3735811830680bed34 100644 --- a/src/main/java/Team5/SmartTowns/Data/Town.java +++ b/src/main/java/Team5/SmartTowns/Data/Town.java @@ -1,2 +1,20 @@ -package Team5.SmartTowns.Data;public class Town { +package Team5.SmartTowns.Data; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class Town { + private String townName; + private Integer townTrailNumber; + + + public String getTownName() { + return townName; + } + + public Integer getTownTrailNumber() { + return townTrailNumber; + } } diff --git a/src/main/java/Team5/SmartTowns/Data/TownRepository.java b/src/main/java/Team5/SmartTowns/Data/TownRepository.java index dd5cb04a566811605cbbc0c1b7a23b82b9564aff..ea6255b4e56753683c5643027590dca92197e298 100644 --- a/src/main/java/Team5/SmartTowns/Data/TownRepository.java +++ b/src/main/java/Team5/SmartTowns/Data/TownRepository.java @@ -1,2 +1,8 @@ -package Team5.SmartTowns.Data;public class TownRepository { +package Team5.SmartTowns.Data; + +import java.util.List; + +public interface TownRepository { + List<Town> getAllTowns(); + void addTown(Town town); } diff --git a/src/main/java/Team5/SmartTowns/Data/TownRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/TownRepositoryJDBC.java index f40cb51fa8ca8c60f7a228b8f511bd9e5185733b..89436f4d6bb6f11d2ecca82e64b7bef945878d8e 100644 --- a/src/main/java/Team5/SmartTowns/Data/TownRepositoryJDBC.java +++ b/src/main/java/Team5/SmartTowns/Data/TownRepositoryJDBC.java @@ -1,2 +1,37 @@ -package Team5.SmartTowns.Data;public class TownRepositoryJDBC { +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 TownRepositoryJDBC implements TownRepository{ + + private JdbcTemplate jdbc; + private RowMapper<Town> townMapper; + + public TownRepositoryJDBC(JdbcTemplate aJdbc) { + this.jdbc = aJdbc; + setTownMapper(); + } + private void setTownMapper(){ + townMapper = (rs, i) -> new Town( + rs.getString("townName"), + rs.getInt("townTrailNumber") + ); + } + public List<Town> getAllTowns(){ + String sql= "SELECT * FROM towns"; + return jdbc.query(sql, townMapper); + } + + @Override // intended implementation at current: user data from templates/Landmarks/LandmarkFormTh.html is added to the Location table + public void addTown(Town town) { + String sql = "insert into towns( townName,townTrailNumber) values (?,?)"; + + jdbc.update(sql,town.getTownName(),town.getTownTrailNumber()); + } + } diff --git a/src/main/java/Team5/SmartTowns/Towns/TownController.java b/src/main/java/Team5/SmartTowns/Towns/TownController.java index dfdb9ae919f0bdb386e7dd087473708375803475..be04c550cc84ca4ef04dd2147472bc6541be4659 100644 --- a/src/main/java/Team5/SmartTowns/Towns/TownController.java +++ b/src/main/java/Team5/SmartTowns/Towns/TownController.java @@ -1,6 +1,11 @@ package Team5.SmartTowns.Towns; +import Team5.SmartTowns.Data.Location; +import Team5.SmartTowns.Data.Town; +import Team5.SmartTowns.Data.TownRepository; +import Team5.SmartTowns.Data.locationRepository; import Team5.SmartTowns.Landmarks.Landmarks; +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; @@ -9,6 +14,10 @@ import java.util.List; @Controller public class TownController { + @Autowired + private Team5.SmartTowns.Data.locationRepository locationRepository; + @Autowired + private Team5.SmartTowns.Data.TownRepository townRepository; @GetMapping("/home") public ModelAndView getTownList(){ @@ -20,12 +29,19 @@ public class TownController { } -// @GetMapping("/home/town") -// public ModelAndView getATownTrailsList(){ -// ModelAndView modelAndView = new ModelAndView("userTrails/userTrailsTemplate"); -// modelAndView.addObject("townStuff", a); -// return modelAndView; -// } -// + @GetMapping("/home/town") + public ModelAndView getATownTrailsList(){ + ModelAndView modelAndView = new ModelAndView("userTrails/userTrailsTemplate"); + TownStorage townsCurrent= new TownStorage().getInstance(); + List<Towns> towns = townsCurrent.getTownList(); + List<Town> Towns = townRepository.getAllTowns(); + modelAndView.addObject("towns", Towns); + List<Location> Locations = locationRepository.getAllLocation(); + modelAndView.addObject("locations", Locations); + return modelAndView; + } + + public List<Location> filterByLocationForTrails(List<Location>) + } diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index 3264a7811996c1673d74eeb9e0a255ffbb4ed1e1..2ca616e697c9dd139b3c35d8ed74da96083cd806 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -5,15 +5,9 @@ create table if not exists trails name varchar(128) ) engine=InnoDB; - drop table if exists towns; -create table if not exists towns -( - townID bigint auto_increment primary key, - townName varchar(255), - trailNumber tinyint -) engine=InnoDB; + drop table if exists locations; create table if not exists locations @@ -22,9 +16,8 @@ create table if not exists locations locationName varchar(128), locationEmail varchar(128), locationDescription longtext, - locationPlace bigint, - locationTrailID varchar(128), - foreign key (locationPlace) references towns(townID) + locationPlace varchar(255), + locationTrailID varchar(128) ) engine=InnoDB; drop table if exists users; @@ -69,3 +62,10 @@ create table if not exists stickerProgress hasSticker boolean /*Has sticker or not*/ ) engine=InnoDB; +create table if not exists towns +( + townID bigint auto_increment primary key, + townName varchar(255) , + townTrailNumber tinyint + +) engine=InnoDB; diff --git a/src/main/resources/templates/userTrails/userTrailsTemplate.html b/src/main/resources/templates/userTrails/userTrailsTemplate.html index fb52c90854f10cda81af76db9611e5e08e06695e..65317b0ebf892a3a254a14f3f9f26e61dec7a3c0 100644 --- a/src/main/resources/templates/userTrails/userTrailsTemplate.html +++ b/src/main/resources/templates/userTrails/userTrailsTemplate.html @@ -5,10 +5,16 @@ <title>Trails</title> </head> <body> +<main> + <div th:each="location:${locations}"></div> +</main> + + + </body> diff --git a/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java b/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java index d9c15a4bf0557ca94619ec9f61d0d83d2180c7c3..c0d81b03cfee131647b72a7b5175e92ee655114a 100644 --- a/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java +++ b/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java @@ -1,13 +1,36 @@ package Team5.SmartTowns; +import Team5.SmartTowns.Towns.TownController; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import static org.junit.jupiter.api.Assertions.assertEquals; + @SpringBootTest class SmartTownsApplicationTests { + private static TownController townController; + @Autowired + private Team5.SmartTowns.Data.locationRepository locationRepository; +// @BeforeAll +// public static void before(){} +// townController= new townController(); +//} + @Test void contextLoads() { } + @Test + public void whenFilteringTownsByLocationsReturnOneTown() { + + townController.filterByLocationForTrails() + + + assertEquals(, townController.filterByLocationForTrails); + } + + }