Таким образом, я разрабатываю систему управления полетами в качестве школьного проекта, и у меня возникло задание.
Я должен предоставить возможность своему клиенту искать рейсы Multistop, которые состоят из прямых рейсов. .
Небольшой пример: клиент хочет перелет из Германии в США, и у меня есть два следующих рейса:
- Германия -> Турция
- Турция -> США
Если клиент ищет многоцелевой рейс, система должна объединить два рейса в один.
Пока я могу найти два рейса и сохранить название Multistop рейс в переменную, но у меня проблема с оператором SQL для поиска рейсов.
Мой код пока:
Небольшое объяснение: startAirportcombo - это инструмент выбора начальной точки для первого полета. zielTargetAirportcombo является целью.
Метод для поиска второго рейса:
möglicheFlüge =FXCollections.observableArrayList();
ResultSet myRs = pStatement.executeQuery(" select * from flügehin ");
while(myRs.next()) {
if (myRs.getString("startHinlughafen").equals(startAirportCombo.getValue())
&& myRs.getString("zielHinflughafen").equals(zielAirportCombo.getValue()) == false) {
tempMultiStopp = myRs.getString("zielHinflughafen");
if (myRs.getString("startHinlughafen").equals(tempMultiStopp) &&
myRs.getString("zielHinflughafen").equals(zielAirportCombo.getValue())) {
multiStop = tempMultiStopp;
}
}
}
Способ поиска комбинированных рейсов и отображения для клиента:
if(seatsComboBusiness.getSelectionModel().isEmpty() ||seatsComboEco.getSelectionModel().isEmpty()) {
Alert alert = new Alert(Alert.AlertType.WARNING, "Bitte wählen Sie mindestens einen Sitzplatz aus!");
alert.setTitle("Fehler");
alert.showAndWait();
} else {
if (seatsComboBusiness.getValue() == 0 && seatsComboEco.getValue() == 0) {
Alert alert = new Alert(Alert.AlertType.WARNING, "Bitte wählen Sie mindestens einen Sitzplatz aus!");
alert.setTitle("Fehler");
alert.showAndWait();
} else {
try {
// Ablesen
Statement pStatement = connection.createStatement();
möglicheFlüge = FXCollections.observableArrayList();
ResultSet myRs = pStatement.executeQuery("select * from flügehin where startHinlughafen = \""
+ startAirportCombo.getValue() + "\" AND anzahlsitzplätzeeco >= \""
+ seatsComboEco.getValue() + "\" AND anzahlsitzplätzebus >= \""
+ seatsComboBusiness.getValue() + "\" AND zielHinFlughafen = \""
+ zielAirportCombo.getValue() + "\" AND ( hinflugdatum = \"" + date.getValue()
+ "\" OR hinflugdatum = \"" + date.getValue().plusDays(-1) + "\" OR hinflugdatum =\""
+ date.getValue().plusDays(-2) + "\" OR hinflugdatum =\"" + date.getValue().plusDays(-3)
+ "\" OR hinflugdatum =\"" + date.getValue().plusDays(1) + "\" OR hinflugdatum =\""
+ date.getValue().plusDays(2) + "\" OR hinflugdatum =\"" + date.getValue().plusDays(3)
+ "\" ) "
);
while (myRs.next()) {
möglicheFlüge.add(
new InstancedFlightModel(myRs.getInt("flightHinId"), myRs.getString("startHinlugHafen"),
myRs.getString("zielHinFlughafen"), myRs.getString("hinflugdatum"),
myRs.getString("flugzeug"), myRs.getInt("anzahlsitzplätzeeco"),
myRs.getInt("anzahlsitzplätzebus"), myRs.getString("uhrzeitHinflug"),
myRs.getFloat("preisEconomy"), myRs.getFloat("preisBusiness"),
myRs.getFloat("distanz"), myRs.getString("FGM"), secondDirectFlight()));
}
} catch (Exception e) {
Alert alert = new Alert(Alert.AlertType.ERROR,
"Bitte überprüfen Sie Ihre Angaben auf Vollständigkeit");
alert.setTitle("Kein Flug gefunden");
alert.showAndWait();
e.printStackTrace();
}
startAirport.setCellValueFactory(new PropertyValueFactory<>("startToAirport"));
multistoppColumn.setCellValueFactory(new PropertyValueFactory<>("multistopp"));
targetAirport.setCellValueFactory(new PropertyValueFactory<>("targetToAirport"));
flightDate.setCellValueFactory(new PropertyValueFactory<>("flightDate"));
flightTime.setCellValueFactory(new PropertyValueFactory<>("flightTime"));
airplane.setCellValueFactory(new PropertyValueFactory<>("airPlane"));
priceEco.setCellValueFactory(new PropertyValueFactory<>("priceEconomy"));
priceBus.setCellValueFactory(new PropertyValueFactory<>("priceBusiness"));
idColumn.setCellValueFactory(new PropertyValueFactory<>("flightNumber"));
airline.setCellValueFactory(new PropertyValueFactory<>("fluggesellschaft"));
distanz.setCellValueFactory(new PropertyValueFactory<>("distance"));
table.setItems(möglicheFlüge);
if (möglicheFlüge.isEmpty()) {
Alert alert = new Alert(Alert.AlertType.WARNING,
"Es konnte auf Basis Ihrer Eingaben kein passender Flug gefunden werden.");
alert.setTitle("Kein Flug gefunden");
alert.showAndWait();
}
}
}
Я думаю, что проблемы l ie в операторе SQL в последнем методе, но переменная "multistop" остается нулевой в конце. Так может кто-нибудь может мне помочь или дать указатель?