diff --git a/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepository.java b/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepository.java deleted file mode 100644 index 973332b4f925624a51343b9bed0f68220e3911a0..0000000000000000000000000000000000000000 --- a/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package Team5.SmartTowns.data; - -import java.util.List; - -public interface LocationsCoordinatesRepository { - - List<LocationsCoordinates> getAllLocationCoords(); - void addLocationCoord(LocationsCoordinates locCoord); - - - - -} diff --git a/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepositoryJDBC.java deleted file mode 100644 index 2966dcef800160692c80f87ae84c64b0f2f1ac27..0000000000000000000000000000000000000000 --- a/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepositoryJDBC.java +++ /dev/null @@ -1,419 +0,0 @@ -package Team5.SmartTowns.data; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Repository; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -@Repository -public class LocationsCoordinatesRepositoryJDBC implements LocationsCoordinatesRepository{ - - - private JdbcTemplate jdbc; - private RowMapper<LocationsCoordinates> locationCoordMapper; - - public LocationsCoordinatesRepositoryJDBC(JdbcTemplate aJdbc) { - this.jdbc = aJdbc; - setlocationCoordsMapper(); - } - private void setlocationCoordsMapper(){ - locationCoordMapper = (rs, i) -> new LocationsCoordinates( - - rs.getInt("locationID"), - rs.getString("locationCoordsLong"), - rs.getString("locationCoordsLat") - - ); - } - public List<LocationsCoordinates> getAllLocationCoords(){ - String sql= "SELECT * FROM locationCoordinates"; - return jdbc.query(sql, locationCoordMapper); - } - - @Override - public void addLocationCoord(LocationsCoordinates locCoords) { - String sql = "insert into locationCoordinates(locationID, locationCoordsLong,locationCoordsLat) values (?,?,?)"; - - jdbc.update(sql,locCoords.getLocationID(), locCoords.getLocationCoordsLong(),locCoords.getLocationCoordsLat()); - - } - - - // private static JdbcTemplate jdbc; -// @BeforeAll -// public static void before() { -// location = new Location(); -// locationRepo = new locationRepositoryJDBC(jdbc);} -// @BeforeAll -// public static void before2() { -// locationRepo = new locationRepositoryJDBC(jdbc); } - - // Method used to approve and add locations with associated coordinates. List<Location> unapprovedLocations - public void approveLocationAndAddCoords(int locationID, String longCoords, String latCoords){ // need list too - String -// List<String> unapprovedLocationTowns = new ArrayList<String>(); -// for (int i=1;unapprovedLocations.size()>i;i++ ){ -// if (Objects.equals(unapprovedLocations.get(i).getLocationPlace(), town)){ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - } - } - -// - // unapproved list - // if matches name, approve - // add long/lat coords - //use to update table - } -} diff --git a/src/main/java/Team5/SmartTowns/data/LocationsCoordinates.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java similarity index 90% rename from src/main/java/Team5/SmartTowns/data/LocationsCoordinates.java rename to src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java index 243fb73c88d49c282646ceab44eccf2bdd695bdf..233dd5d6f44ff7e15d63e641f7adfafeff97174e 100644 --- a/src/main/java/Team5/SmartTowns/data/LocationsCoordinates.java +++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java @@ -1,11 +1,12 @@ -package Team5.SmartTowns.data; +package Team5.SmartTowns.placeswithcoordinates; +import Team5.SmartTowns.data.Location; +import Team5.SmartTowns.data.LocationRepositoryJDBC; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import java.util.List; @@ -13,11 +14,11 @@ import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor -public class LocationsCoordinates extends LocationRepositoryJDBC { +public class LocationsCoordinates extends LocationRepositoryJDBC { /// separate class to location to cover all locations within trails that have been approved and have long/lat coords attached for mapping. private int locationID; - private String locationCoordsLong; private String locationCoordsLat; + private String locationCoordsLong; private JdbcTemplate jdbc; @@ -41,14 +42,14 @@ public class LocationsCoordinates extends LocationRepositoryJDBC { this.locationCoordsLat = locationCoordsLat; } - public LocationsCoordinates(JdbcTemplate aJdbc, int locationID, String locationCoordsLong, String locationCoordsLat) { + public LocationsCoordinates(JdbcTemplate aJdbc, int locationID, String locationCoordsLat, String locationCoordsLong) { super(aJdbc); this.locationID = locationID; this.locationCoordsLong = locationCoordsLong; this.locationCoordsLat = locationCoordsLat; } - public LocationsCoordinates(int locationID, String locationCoordsLong, String locationCoordsLat) { + public LocationsCoordinates(int locationID, String locationCoordsLat, String locationCoordsLong) { this.locationID = locationID; this.locationCoordsLong = locationCoordsLong; this.locationCoordsLat = locationCoordsLat; @@ -63,6 +64,8 @@ public class LocationsCoordinates extends LocationRepositoryJDBC { return new LocationRepositoryJDBC(aJdbc).getAllLocation(); } + + public List<Location> getFullApprovedLocations(JdbcTemplate aJdbc){ LocationsCoordinates jdbcSuper= new LocationsCoordinates(aJdbc); return new LocationRepositoryJDBC(aJdbc).getApprovedLocations(); diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..a5e03d93ab75a20f3c380ca5c1b3d11c6f0b5807 --- /dev/null +++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java @@ -0,0 +1,21 @@ +package Team5.SmartTowns.placeswithcoordinates; + +import Team5.SmartTowns.data.Location; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.List; + +public interface PlacesCoordinatesRepository { + + List<LocationsCoordinates> getAllLocationCoords(); + void addLocationCoord(LocationsCoordinates locCoord); + + List<TownWithTrails> getAllTownCoords(); + void addTownWithCoords(TownWithTrails town); + + List<Location> getFullApprovedLocations(JdbcTemplate aJdbc); + + + + +} diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java new file mode 100644 index 0000000000000000000000000000000000000000..2be252d020a0435786e0170f673848dc1a0a388d --- /dev/null +++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java @@ -0,0 +1,495 @@ +package Team5.SmartTowns.placeswithcoordinates; + +import Team5.SmartTowns.data.Location; +import org.springframework.boot.autoconfigure.integration.IntegrationProperties; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + + +import java.util.List; +import java.util.Objects; + +@Repository +public class PlacesCoordinatesRepositoryJDBC implements PlacesCoordinatesRepository { + + + private JdbcTemplate jdbc; + private RowMapper<LocationsCoordinates> locationCoordMapper; + private RowMapper<TownWithTrails> townCoordMapper; + public PlacesCoordinatesRepositoryJDBC(JdbcTemplate aJdbc) { + this.jdbc = aJdbc; + setLocationCoordsMapper(); + setTownCoordsMapper(); + } + private void setLocationCoordsMapper(){ + locationCoordMapper = (rs, i) -> new LocationsCoordinates( + + rs.getInt("locationID"), + rs.getString("locationCoordsLat"), + rs.getString("locationCoordsLong") + + ); + } + private void setTownCoordsMapper(){ + townCoordMapper = (rs, i) -> new TownWithTrails( + + rs.getString("townName"), + rs.getString("townCentreCoordsLat"), + rs.getString("townCentreCoordsLong"), + rs.getString("ownLeftmostCoordsLat"), + rs.getString("townRightmostCoordsLat"), + rs.getString("townUppermostCoordsLong"), + rs.getString("townLowermostCoordsLong") + + ); + } + + + + public List<LocationsCoordinates> getAllLocationCoords(){ + String sql= "SELECT * FROM locationCoordinates"; + return jdbc.query(sql, locationCoordMapper); + } + public List<TownWithTrails> getAllTownCoords(){ + String sql= "SELECT * FROM townswithtrails"; + return jdbc.query(sql, townCoordMapper); + } + + @Override + public void addLocationCoord(LocationsCoordinates locCoords) { + String sql = "insert into locationCoordinates(locationID, locationCoordsLat,locationCoordsLong) values (?,?,?)"; + + jdbc.update(sql,locCoords.getLocationID(), locCoords.getLocationCoordsLong(),locCoords.getLocationCoordsLat()); + + } + @Override + public void addTownWithCoords(TownWithTrails town) { + String sql = "insert into townswithtrails(townName,townCentreCoordsLat,townCentreCoordsLong,townLeftmostCoordsLat,townRightmostCoordsLat,townUppermostCoordsLong,townLowermostCoordsLong) values (?,?,?,?,?,?,?)"; + + jdbc.update(sql,town.getTownName(),town.getTownCentreCoordsLong(),town.getTownCentreCoordsLong(),town.getTownLeftmostCoordsLat(),town.getTownRightmostCoordsLat(),town.getTownUppermostCoordsLong(),town.getTownLowermostCoordsLong()); + + } + + @Override //TODO CHECK + public List<Location> getFullApprovedLocations(JdbcTemplate aJdbc) { + return null; + } + + + public boolean checkInputtedCoordsMatchTown(String inpLongCoords, String inpLatCoords, String townName){ + PlacesCoordinatesRepositoryJDBC jbdcsecond = new PlacesCoordinatesRepositoryJDBC(jdbc); + List<TownWithTrails> allTowns = jbdcsecond.getAllTownCoords(); + for (TownWithTrails town : allTowns){ + if (Objects.equals(townName, town.getTownName())){ + // check lon within boundaries +// if ((inpLongCoords)) + + + + } + } + return true;} + + + + // Method used to approve and add locations with associated coordinates. List<Location> unapprovedLocations + public void approveLocationAndAddCoords(String locationsName, String longCoords, String latCoords,JdbcTemplate jdbc) { // need list too + LocationsCoordinates jdbcTemp= new LocationsCoordinates(jdbc); + List<Location> unapprovedLocations = jdbcTemp.getFullUnapprovedLocations(jdbc); + PlacesCoordinatesRepositoryJDBC jbdcsecond = new PlacesCoordinatesRepositoryJDBC(jdbc); + List<TownWithTrails> allTowns = jbdcsecond.getAllTownCoords(); + int unapporvedLocationsListIndex; + for (int i=0; i<unapprovedLocations.size();i++){ // check if location exists + if (Objects.equals(unapprovedLocations.get(i).getLocationName(), locationsName)){ + unapporvedLocationsListIndex =i; + break; + + } else if(!Objects.equals(unapprovedLocations.get(i).getLocationPlace(), locationsName)){ + System.out.println("Error, location is not valid, please check your spelling or locations table."); + return; + } +// String toBeApprovedLocationTown=unapprovedLocations.get(unapporvedLocationsListIndex).getLocationPlace(); +// for (TownWithTrails town : allTowns){ +// if (Objects.equals(toBeApprovedLocationTown, town.getTownName())){ + + + } + + } + + + + + // check if location within respective town boundaries + } + + + + + + + /// if location id == unapproved location id,-> make sure coords within boundaries, -> approve and append lcoations table and add to coords table. + +// List<String> unapprovedLocationTowns = new ArrayList<String>(); +// for (int i=1;unapprovedLocations.size()>i;i++ ){ +// if (Objects.equals(unapprovedLocations.get(i).getLocationPlace(), town)){ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// } +// +//// +// // unapproved list +// // if matches name, approve +// // add long/lat coords +// //use to update table +// } +//} diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java new file mode 100644 index 0000000000000000000000000000000000000000..fe7048686f74dec095f92f9df50d5bb1c27cdb2a --- /dev/null +++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java @@ -0,0 +1,50 @@ +package Team5.SmartTowns.placeswithcoordinates; + +public class TownWithTrails { + + private String townName; + private String townCentreCoordsLat; + private String townCentreCoordsLong; + private String townLeftmostCoordsLat; + private String townRightmostCoordsLat; + private String townUppermostCoordsLong; + private String townLowermostCoordsLong; + + public String getTownName() { + return townName; + } + + public String getTownCentreCoordsLat() { + return townCentreCoordsLat; + } + + public String getTownCentreCoordsLong() { + return townCentreCoordsLong; + } + + public String getTownLeftmostCoordsLat() { + return townLeftmostCoordsLat; + } + + public String getTownRightmostCoordsLat() { + return townRightmostCoordsLat; + } + + public String getTownUppermostCoordsLong() { + return townUppermostCoordsLong; + } + + public String getTownLowermostCoordsLong() { + return townLowermostCoordsLong; + } + + public TownWithTrails(String townName, String townCentreCoordsLat, String townCentreCoordsLong, String townLeftmostCoordsLat, String townRightmostCoordsLat, String townUppermostCoordsLong, String townLowermostCoordsLong) { + this.townName = townName; + this.townCentreCoordsLat = townCentreCoordsLat; + this.townCentreCoordsLong = townCentreCoordsLong; + this.townLeftmostCoordsLat = townLeftmostCoordsLat; + this.townRightmostCoordsLat = townRightmostCoordsLat; + this.townUppermostCoordsLong = townUppermostCoordsLong; + this.townLowermostCoordsLong = townLowermostCoordsLong; + } +} diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index 1cf13ce5a9e5fc9ed4bc8814e3dfe8ce6d315d98..35cf5a7027b49fd346bfc3c71a1769eb64a8f44d 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -67,9 +67,9 @@ insert into stickers (packID, stickerID, name, description, rarity) value (3, 3, # insert into stickerprogress (userID, stickerID, hasSticker) value ('2', '2', true); delete from locationCoordinates; -insert into locationCoordinates(locationID, locationCoordsLong, locationCoordsLat) value (2,'51.57623','-3.21910' ); -insert into locationCoordinates(locationID, locationCoordsLong, locationCoordsLat) value (3,'51.575372','-3.219186'); -insert into locationCoordinates(locationID, locationCoordsLong, locationCoordsLat) value (4, '51.576363','-3.220712' ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (2,'51.57623','-3.21910' ); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (3,'51.575372','-3.219186'); +insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (4, '51.576363','-3.220712' ); # # insert into stickerprogress (userID, packID, stickerID) value (1, 1, 1); # insert into stickerprogress (userID, packID, stickerID) value (1, 1, 2); @@ -78,3 +78,8 @@ insert into locationCoordinates(locationID, locationCoordsLong, locationCoordsLa # insert into stickerprogress (userID, packID, stickerID) value (1, 2, 1); # insert into stickerprogress (userID, packID, stickerID) value (1, 2, 3); +delete from townsWithTrails; +# LAT=X LONG=Y +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townLeftmostCoordsLat, townRightmostCoordsLat, townUppermostCoordsLong, townLowermostCoordsLong) value ('Caerphilly', '51.57903','-3.22075','51.57224','51.58856','-3.24597','-3.22496'); +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townLeftmostCoordsLat, townRightmostCoordsLat, townUppermostCoordsLong, townLowermostCoordsLong) value ('Risca','51.61195','-3.09648','51.61483','51.60566','-3.09853','-3.09377'); +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townLeftmostCoordsLat, townRightmostCoordsLat, townUppermostCoordsLong, townLowermostCoordsLong) value ('Penarth','51.43893','-3.17354','51.34750','51.44365','-3.18830','-3.18187'); \ No newline at end of file diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index e7b4ea8d48706d3dd5f341684409662fc5346dc1..ab91f08fe3a536f0c929b5aa1b39d1b2503629a7 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -74,8 +74,8 @@ create table if not exists locationCoordinates Foreign Key (locationID) REFERENCES locations(locationID) ON DELETE CASCADE ON UPDATE RESTRICT, - locationCoordsLong varchar(128), - locationCoordsLat varchar(128) + locationCoordsLat varchar(128), + locationCoordsLong varchar(128) )engine=InnoDB; @@ -86,9 +86,11 @@ create table if not exists townsWithTrails ( townID bigint auto_increment primary key, townName varchar(128), - townCoordsLong varchar(128), - townCoordsLat varchar(128) - - + townCentreCoordsLat varchar(128), + townCentreCoordsLong varchar(128), + townLeftmostCoordsLat varchar(128), + townRightmostCoordsLat varchar(128), + townUppermostCoordsLong varchar(128), + townLowermostCoordsLong varchar(128) )engine=InnoDB;