package org.example.utils;
import lombok.SneakyThrows;
import org.example.pojo.Station;
import org.jetbrains.annotations.NotNull;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class SqlUtils {
private static String driver;
private static String url;
private static String username;
private static String password;
private static Connection connection;
private static PreparedStatement preparedStatement;
static {
try {
driver = "com.mysql.jdbc.Driver";
url = "jdbc:mysql://localhost:3307/subway";
username = "root";
password = "123456";
connection = DriverManager.getConnection(url, username, password);
}
catch (Exception e){
e.printStackTrace();
}
}
@SneakyThrows
public static Station getstation(int id){
preparedStatement=connection.prepareStatement("select * from line where stationid=?", ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
preparedStatement.setInt(1,id);
ResultSet resultSet=preparedStatement.executeQuery();
resultSet.next();
if(resultSet.getRow()<1) return null;
Station station=new Station();
station.setStationid(id);
station.setStationname(resultSet.getString("stationname"));
List<String> lines=new ArrayList<>();
if(resultSet.getInt(3)>0) lines.add("地铁1号线");
if(resultSet.getInt(4)>0) lines.add("地铁八通线");
if(resultSet.getInt(5)>0) lines.add("地铁2号线");
if(resultSet.getInt(6)>0) lines.add("地铁4号线");
if(resultSet.getInt(7)>0) lines.add("地铁大兴线");
if(resultSet.getInt(8)>0) lines.add("地铁5号线");
if(resultSet.getInt(9)>0) lines.add("地铁6号线");
if(resultSet.getInt(10)>0) lines.add("地铁7号线");
if(resultSet.getInt(11)>0) lines.add("地铁8号线");
if(resultSet.getInt(12)>0) lines.add("地铁9号线");
if(resultSet.getInt(13)>0) lines.add("地铁10号线");
if(resultSet.getInt(14)>0) lines.add("地铁13号线");
if(resultSet.getInt(15)>0) lines.add("地铁14号线");
if(resultSet.getInt(16)>0) lines.add("地铁15号线");
if(resultSet.getInt(17)>0) lines.add("地铁房山线");
if(resultSet.getInt(18)>0) lines.add("地铁昌平线");
if(resultSet.getInt(19)>0) lines.add("地铁亦庄线");
if(resultSet.getInt(20)>0) lines.add("机场线");
station.setLines(lines);
List<Station> stations=new ArrayList<>();
for(int i:getId(id)){
Station temp=getstation(i);
if(temp!=null) stations.add(temp);
}
station.setStations(stations);
preparedStatement.close();
connection.close();
return station;
}
@SneakyThrows
public static List<Integer> getId(int id){
preparedStatement=connection.prepareStatement("select * from transfer where startid=?", ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
preparedStatement.setInt(1,id);
ResultSet resultSet=preparedStatement.executeQuery();
List<Integer> Id=new ArrayList<>();
while (resultSet.next()){
Id.add(resultSet.getInt(2));
}
preparedStatement.close();
return Id;
}
@SneakyThrows
public static List<String> getAllstations(String line){
preparedStatement=connection.prepareStatement("select * from line where ?>0 order by stationid",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
preparedStatement.setString(1,line);
ResultSet resultSet=preparedStatement.executeQuery();
List<String> stations=new ArrayList<>();
while (resultSet.next()){
stations.add(resultSet.getString("stationname"));
}
return stations;
}
@SneakyThrows
public static List<String> getlines(String stationname){
preparedStatement=connection.prepareStatement("select * from line where stationname like ?",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
preparedStatement.setString(1,stationname);
ResultSet resultSet=preparedStatement.executeQuery();
resultSet.next();
List<String> lines=new ArrayList<>();
if(resultSet.getInt(3)>0) lines.add("地铁1号线");
if(resultSet.getInt(4)>0) lines.add("地铁八通线");
if(resultSet.getInt(5)>0) lines.add("地铁2号线");
if(resultSet.getInt(6)>0) lines.add("地铁4号线");
if(resultSet.getInt(7)>0) lines.add("地铁大兴线");
if(resultSet.getInt(8)>0) lines.add("地铁5号线");
if(resultSet.getInt(9)>0) lines.add("地铁6号线");
if(resultSet.getInt(10)>0) lines.add("地铁7号线");
if(resultSet.getInt(11)>0) lines.add("地铁8号线");
if(resultSet.getInt(12)>0) lines.add("地铁9号线");
if(resultSet.getInt(13)>0) lines.add("地铁10号线");
if(resultSet.getInt(14)>0) lines.add("地铁13号线");
if(resultSet.getInt(15)>0) lines.add("地铁14号线");
if(resultSet.getInt(16)>0) lines.add("地铁15号线");
if(resultSet.getInt(17)>0) lines.add("地铁房山线");
if(resultSet.getInt(18)>0) lines.add("地铁昌平线");
if(resultSet.getInt(19)>0) lines.add("地铁亦庄线");
if(resultSet.getInt(20)>0) lines.add("机场线");
return lines;
}
}