diff options
4 files changed, 33 insertions, 13 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateCarController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateCarController.java index 1dd41c7..4da46a2 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateCarController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateCarController.java @@ -189,7 +189,7 @@ public class CreateCarController { createOperationController.setVisible(true); } - private void updateVehiclePane() { + void updateVehiclePane() { try { fpVehicleList.getChildren().clear(); diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateOperationController.java index 8c1df80..e5d7b72 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateOperationController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/CreateOperationController.java @@ -340,6 +340,7 @@ public class CreateOperationController { private void openCreateCarWindow() { this.setVisible(false); createCarController.setVisible(true); + createCarController.updateVehiclePane(); } private void openRegistrationWindow() { diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java index 10bba3d..d06e13f 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/OperationDatabaseDAO.java @@ -6,6 +6,8 @@ import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation.Severity; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Operation.Status; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.ConstructionType; +import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle.VehicleType; import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; import java.sql.Connection; import java.sql.PreparedStatement; @@ -25,11 +27,15 @@ public class OperationDatabaseDAO implements OperationDAO { private JDBCConnectionManager jdbcConnectionManager; private VehicleDAO vehicleDAO; + private RegistrationDatabaseDAO registrationDAO; public OperationDatabaseDAO( - JDBCConnectionManager jdbcConnectionManager, VehicleDAO vehicleDAO) { + JDBCConnectionManager jdbcConnectionManager, + VehicleDAO vehicleDAO, + RegistrationDatabaseDAO registrationDAO) { this.jdbcConnectionManager = jdbcConnectionManager; this.vehicleDAO = vehicleDAO; + this.registrationDAO = registrationDAO; } @Override @@ -193,9 +199,12 @@ public class OperationDatabaseDAO implements OperationDAO { } private Set<Vehicle> getVehiclesFromOperationId(long operationId) throws PersistenceException { + /*String sql = + "SELECT id FROM Vehicle WHERE version IN" + + " (SELECT vehicleId FROM VehicleOperation WHERE operationId = ?)";*/ String sql = - "SELECT id FROM Vehicle WHERE version IN" - + " (SELECT vehicleId FROM VehicleOperation WHERE operationId = ?)"; + "SELECT vv.* FROM VehicleOperation vo JOIN VehicleVersion vv ON vv.id = vo.vehicleId WHERE operationId = ?"; + Set<Vehicle> vehicles = new HashSet<>(); try { @@ -206,16 +215,29 @@ public class OperationDatabaseDAO implements OperationDAO { try (ResultSet rs = pstmt.getResultSet()) { while (rs.next()) { - vehicles.add(vehicleDAO.get(rs.getLong("Vehicle.id"))); + vehicles.add(vehicleFromRS(rs)); } } } } catch (SQLException e) { throw new PersistenceException(e); - } catch (ElementNotFoundException e) { - throw new PersistenceException("VehicleOperation contained nonexistent vehicle", e); - } + } /*catch (ElementNotFoundException e) { + throw new PersistenceException("VehicleOperation contained nonexistent vehicle", e); + }*/ return vehicles; } + + private Vehicle vehicleFromRS(ResultSet rs) throws SQLException, PersistenceException { + return Vehicle.builder() + .id(rs.getLong("VehicleVersion.id")) + .name(rs.getString("VehicleVersion.name")) + .constructionType( + ConstructionType.values()[rs.getInt("VehicleVersion.constructionType")]) + .type(VehicleType.valueOf(rs.getString("VehicleVersion.type"))) + .status(Vehicle.Status.ABGEMELDET) + .hasNef(rs.getBoolean("VehicleVersion.hasNef")) + .registrations(registrationDAO.list(rs.getLong("VehicleVersion.id"))) + .build(); + } } diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/RegistrationDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/RegistrationDatabaseDAO.java index 2f52349..b08ee68 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/RegistrationDatabaseDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/dao/RegistrationDatabaseDAO.java @@ -83,7 +83,7 @@ public class RegistrationDatabaseDAO implements RegistrationDAO { con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { // vehicleId is a Vehicle.id as it comes from GUI => fetch VehicleVersion.id - pstmt.setLong(1, getVehicleVersionId(vehicleId)); + pstmt.setLong(1, getVehicleVersionId(vehicleId) /*vehicleId*/); for (Registration r : registrations) { pstmt.setLong(2, getEmployeeVersionId(r.employee().id())); @@ -123,9 +123,6 @@ public class RegistrationDatabaseDAO implements RegistrationDAO { protected List<Registration> list(long vehicleId) throws PersistenceException { - // vehicleId is a Vehicle.id as it comes from GUI => fetch VehicleVersion.id - long vehicleVersionId = getVehicleVersionId(vehicleId); - String sql = "SELECT * FROM Registration r " + "JOIN EmployeeVersion ev ON ev.id = r.employeeId " @@ -135,7 +132,7 @@ public class RegistrationDatabaseDAO implements RegistrationDAO { try (PreparedStatement stmt = jdbcConnectionManager.getConnection().prepareStatement(sql)) { List<Registration> registrationList = new ArrayList<>(); - stmt.setLong(1, vehicleVersionId); + stmt.setLong(1, vehicleId); // is vehicle version id! ResultSet rs = stmt.executeQuery(); while (rs.next()) { |