From 8df335d5982091c210d3e262983f3defa5a91df4 Mon Sep 17 00:00:00 2001 From: Rhys Evans <EvansRM17@cardiff.ac.uk> Date: Sat, 9 Dec 2023 13:53:48 +0000 Subject: [PATCH] Further work on inserting approved locations with appropriate coords --- .../PlacesCoordinatesRepositoryJDBC.java | 69 ++++++++++++++++--- .../placeswithcoordinates/TownWithTrails.java | 35 +++++----- src/main/resources/data.sql | 19 +++-- 3 files changed, 90 insertions(+), 33 deletions(-) diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java index 2be252d0..3edbef12 100644 --- a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java +++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java @@ -37,10 +37,11 @@ public class PlacesCoordinatesRepositoryJDBC implements PlacesCoordinatesReposit rs.getString("townName"), rs.getString("townCentreCoordsLat"), rs.getString("townCentreCoordsLong"), - rs.getString("ownLeftmostCoordsLat"), - rs.getString("townRightmostCoordsLat"), - rs.getString("townUppermostCoordsLong"), - rs.getString("townLowermostCoordsLong") + rs.getString("townUppermostCoordsLat"), + rs.getString("townLowermostCoordsLat"), + rs.getString("townLeftmostCoordsLong"), + rs.getString("townRightmostCoordsLong") + ); } @@ -65,9 +66,9 @@ public class PlacesCoordinatesRepositoryJDBC implements PlacesCoordinatesReposit } @Override public void addTownWithCoords(TownWithTrails town) { - String sql = "insert into townswithtrails(townName,townCentreCoordsLat,townCentreCoordsLong,townLeftmostCoordsLat,townRightmostCoordsLat,townUppermostCoordsLong,townLowermostCoordsLong) values (?,?,?,?,?,?,?)"; + String sql = "insert into townswithtrails(townName,townCentreCoordsLat,townCentreCoordsLong,townUppermostCoordsLat,townLowermostCoordsLat,townLeftmostCoordsLong,townRightmostCoordsLong) values (?,?,?,?,?,?,?)"; - jdbc.update(sql,town.getTownName(),town.getTownCentreCoordsLong(),town.getTownCentreCoordsLong(),town.getTownLeftmostCoordsLat(),town.getTownRightmostCoordsLat(),town.getTownUppermostCoordsLong(),town.getTownLowermostCoordsLong()); + jdbc.update(sql,town.getTownName(),town.getTownCentreCoordsLong(),town.getTownCentreCoordsLong(),town.getTownUppermostCoordsLat(),town.getTownLowermostCoordsLat(),town.getTownLeftmostCoordsLong(),town.getTownRightmostCoordsLong()); } @@ -77,29 +78,63 @@ public class PlacesCoordinatesRepositoryJDBC implements PlacesCoordinatesReposit } - public boolean checkInputtedCoordsMatchTown(String inpLongCoords, String inpLatCoords, String townName){ + public boolean checkInputtedCoordsMatchTown(String inpLatCoords, String inpLongCoords, 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)) + // convert values to doubles + double inpLat=Double.parseDouble(inpLatCoords); + double inpLong=Double.parseDouble(inpLongCoords); + double townBoundaryLatUppermost=Double.parseDouble(town.getTownUppermostCoordsLat()); + double townBoundaryLatLowermost=Double.parseDouble(town.getTownLowermostCoordsLat()); + + double townBoundaryLongLeftmost=Double.parseDouble(town.getTownLeftmostCoordsLong()); + double townBoundaryLongRightmost=Double.parseDouble(town.getTownRightmostCoordsLong()); + // check coords within respective town boundary (boundary decided by rough google maps red-line) + if ( (inpLat<=townBoundaryLatUppermost)&& (inpLat>=townBoundaryLatLowermost) && (inpLat<=townBoundaryLongLeftmost) && (inpLat<=townBoundaryLongRightmost)){ + // location within boundary + return true; + } else{ + System.out.println("Location outside town boundary. "); //todo scanner bad idea, add admin override? + return false; + } } } return true;} + int getLocationTableIDValue(List<Location> locations, String locationName){ + int index; + for(int i=0;i<locations.size();i++){ + if (Objects.equals(locations.get(i).getLocationName(), locationName)){ + index = i; + return index; + + } else{ + return index= Integer.parseInt(null); + } + + + + } + } // 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 + public void approveLocationAndAddCoords(String locationsName, String latCoords, String longCoords,JdbcTemplate jdbc) { + // need list too + LocationsCoordinates jdbcTemp= new LocationsCoordinates(jdbc); List<Location> unapprovedLocations = jdbcTemp.getFullUnapprovedLocations(jdbc); + List<Location> allLocations = jdbcTemp.getFullListLocations(jdbc); + PlacesCoordinatesRepositoryJDBC jbdcsecond = new PlacesCoordinatesRepositoryJDBC(jdbc); List<TownWithTrails> allTowns = jbdcsecond.getAllTownCoords(); - int unapporvedLocationsListIndex; + int unapporvedLocationsListIndex=99; // initialiose variable to allow after if statement to run todo fix this for (int i=0; i<unapprovedLocations.size();i++){ // check if location exists if (Objects.equals(unapprovedLocations.get(i).getLocationName(), locationsName)){ unapporvedLocationsListIndex =i; @@ -107,9 +142,21 @@ public class PlacesCoordinatesRepositoryJDBC implements PlacesCoordinatesReposit } 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(); + String toBeApprovedLocationTown=unapprovedLocations.get(unapporvedLocationsListIndex).getLocationPlace(); + int tableLocationIDOfInputtedLocation= getLocationTableIDValue(allLocations, locationsName); + LocationsCoordinates unapprovedLocation= new LocationsCoordinates(tableLocationIDOfInputtedLocation,latCoords, longCoords); + boolean locationWithinTownBoundaries= checkInputtedCoordsMatchTown(latCoords ,longCoords, toBeApprovedLocationTown); + if (locationWithinTownBoundaries){ + addLocationCoord(unapprovedLocation); + return; + + + } else { + return;} + // for (TownWithTrails town : allTowns){ // if (Objects.equals(toBeApprovedLocationTown, town.getTownName())){ diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java index fe704868..b1049ffb 100644 --- a/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java +++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java @@ -5,10 +5,10 @@ public class TownWithTrails { private String townName; private String townCentreCoordsLat; private String townCentreCoordsLong; - private String townLeftmostCoordsLat; - private String townRightmostCoordsLat; - private String townUppermostCoordsLong; - private String townLowermostCoordsLong; + private String townUppermostCoordsLat; + private String townLowermostCoordsLat; + private String townLeftmostCoordsLong; + private String townRightmostCoordsLong; public String getTownName() { return townName; @@ -22,29 +22,30 @@ public class TownWithTrails { return townCentreCoordsLong; } - public String getTownLeftmostCoordsLat() { - return townLeftmostCoordsLat; + public String getTownUppermostCoordsLat() { + return townUppermostCoordsLat; } - public String getTownRightmostCoordsLat() { - return townRightmostCoordsLat; + public String getTownLowermostCoordsLat() { + return townLowermostCoordsLat; } - public String getTownUppermostCoordsLong() { - return townUppermostCoordsLong; + public String getTownLeftmostCoordsLong() { + return townLeftmostCoordsLong; } - public String getTownLowermostCoordsLong() { - return townLowermostCoordsLong; + public String getTownRightmostCoordsLong() { + return townRightmostCoordsLong; } - public TownWithTrails(String townName, String townCentreCoordsLat, String townCentreCoordsLong, String townLeftmostCoordsLat, String townRightmostCoordsLat, String townUppermostCoordsLong, String townLowermostCoordsLong) { + + public TownWithTrails(String townName, String townCentreCoordsLat, String townCentreCoordsLong, String townUppermostCoordsLat, String townLowermostCoordsLat, String townLeftmostCoordsLong, String townRightmostCoordsLong) { this.townName = townName; this.townCentreCoordsLat = townCentreCoordsLat; this.townCentreCoordsLong = townCentreCoordsLong; - this.townLeftmostCoordsLat = townLeftmostCoordsLat; - this.townRightmostCoordsLat = townRightmostCoordsLat; - this.townUppermostCoordsLong = townUppermostCoordsLong; - this.townLowermostCoordsLong = townLowermostCoordsLong; + this.townUppermostCoordsLat = townUppermostCoordsLat; + this.townLowermostCoordsLat = townLowermostCoordsLat; + this.townLeftmostCoordsLong = townLeftmostCoordsLong; + this.townRightmostCoordsLong = townRightmostCoordsLong; } } diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index 35cf5a70..b75dec94 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -78,8 +78,17 @@ insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLon # 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 +delete from townsWithTrails; 'Caerphilly', '-3.22075','51.57903',,'-3.24597','-3.22496','51.57224','51.58856'); + +# insert into townsWithTrails (townName, townCentreCoordsLong, townCentreCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat) value ('Caerphilly', '51.57903','-3.22075','51.57224','51.58856','-3.24597','-3.22496'); +# insert into townsWithTrails (townName, townCentreCoordsLong, townCentreCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat) value ('Risca','51.61155','-3.10170','51.61483','51.60566','-3.09853','-3.09377'); +# insert into townsWithTrails (townName, townCentreCoordsLong, townCentreCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat) value ('Penarth','51.43893','-3.17354','51.34750','51.44365','-3.18830','-3.18187'); +# +# +# insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townLeftmostCoordsLat, townRightmostCoordsLat, townUppermostCoordsLong, townLowermostCoordsLong) value ('Caerphilly', '51.57903','-3. ','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'); +# lat=y=50s long=x=-3.0s +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) value ('Caerphilly', '51.57903','-3.22075 ','51.60418','51.55093','-3.25222','-3.17696'); +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) value ('Risca','51.61195','-3.09648','51.63039','51.59175','-3.12129','-3.06438'); +insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townUppermostCoordsLat, townLowermostCoordsLat, townLeftmostCoordsLong, townRightmostCoordsLong) value ('Penarth','51.43893','-3.17354','51.44878','51.41233','-3.20271','-3.16005'); \ No newline at end of file -- GitLab