package ca.uqam.projet.service;
import ca.uqam.projet.repositories.AncrageVeloList;
import ca.uqam.projet.resources.AncrageVelo;
import static ca.uqam.projet.service.BD.connect;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BDAncrageVelo extends BD {
private static final String INSERT_ANCRAGE_VELO
= "INSERT INTO ancragevelo(geog)"
+ "VALUES (ST_GeographyFromText('POINT(' || ? || ' ' || ? || ')'))"
+ "on conflict do nothing";
private static final String SELECT_PROCHE
= "SELECT *,ST_X(geog::geometry) AS longitude, ST_Y(geog::geometry) AS latitude "
+ "FROM ancragevelo where ST_Distance( geog, ST_GeographyFromText('POINT(' || ? || ' ' || ? || ')')) <= 200 ;";
public static void insertAll(AncrageVeloList ancrageVeloList) {
Connection conn = connect();
for (AncrageVelo ancrageVelo : ancrageVeloList.getAncrageVelosList()) {
insertAncrageVelo(ancrageVelo, conn);
}
diconnect(conn);
}
private static void insertAncrageVelo(AncrageVelo ancrageVelo, Connection conn) {
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(INSERT_ANCRAGE_VELO);
ps.setFloat(1, ancrageVelo.getLongitude());
ps.setFloat(2, ancrageVelo.getLatitude());
ps.executeUpdate();
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
CloseConnection(ps);
}
}
public static List<AncrageVelo> Select(float longitude, float latitude) {
{
List<AncrageVelo> list = new ArrayList<>();
PreparedStatement ps = null;
Connection conn = connect();
try {
ps = conn.prepareStatement(SELECT_PROCHE);
ps.setFloat(1, longitude);
ps.setFloat(2, latitude);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
list.add(new AncrageVelo(
rs.getFloat("longitude"),
rs.getFloat("latitude")));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
CloseConnection(ps);
}
diconnect(conn);
return list;
}
}
}