aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java')
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java220
1 files changed, 0 insertions, 220 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java
deleted file mode 100644
index 6d50588..0000000
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/VehicleDatabaseDAO.java
+++ /dev/null
@@ -1,220 +0,0 @@
-package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao;
-
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.ElementNotFoundException;
-import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException;
-import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.HashSet;
-import java.util.Set;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public class VehicleDatabaseDAO implements VehicleDAO {
-
- private final JDBCConnectionManager jdbcConnectionManager;
- private RegistrationDatabaseDAO registrationDatabaseDao;
-
- public VehicleDatabaseDAO(
- JDBCConnectionManager j, RegistrationDatabaseDAO registrationDatabaseDao) {
- jdbcConnectionManager = j;
- this.registrationDatabaseDao = registrationDatabaseDao;
- }
-
- public long add(Vehicle vehicle) throws PersistenceException {
- String query1 =
- "INSERT INTO VehicleVersion (name,hasNef,constructionType,type) VALUES (?,?,?,?)";
- String query2 = "INSERT INTO Vehicle (version,status) VALUES (?,?)";
-
- String status = "ABGEMELDET";
- String name = "";
- int id = -1;
- int version = -1;
- try {
- Connection connection = jdbcConnectionManager.getConnection();
- connection.setAutoCommit(false);
- try (PreparedStatement p1 =
- connection.prepareStatement(query1, PreparedStatement.RETURN_GENERATED_KEYS)) {
-
- p1.setString(1, name);
- p1.setBoolean(2, vehicle.hasNef());
- p1.setString(3, vehicle.constructionType().name());
-
- p1.setString(4, vehicle.type().name());
-
- p1.executeUpdate();
- try (ResultSet keyResultSet = p1.getGeneratedKeys()) {
-
- if (keyResultSet.next()) {
- version = keyResultSet.getInt(1);
- }
- }
- }
- try (PreparedStatement p2 =
- connection.prepareStatement(query2, Statement.RETURN_GENERATED_KEYS)) {
-
- p2.setInt(1, version);
- p2.setString(2, status);
- p2.executeUpdate();
- try (ResultSet keyResultSet = p2.getGeneratedKeys()) {
-
- if (keyResultSet.next()) {
- id = keyResultSet.getInt(1);
- }
- }
-
- name = vehicle.type().name() + "-" + id;
- }
- query1 = "UPDATE VehicleVersion SET name=? WHERE id=?";
- try (PreparedStatement p3 = connection.prepareStatement(query1)) {
- p3.setString(1, name);
- p3.setInt(2, version);
- p3.executeUpdate();
- }
-
- connection.commit();
- connection.setAutoCommit(true);
- } catch (SQLException e) {
- throw new PersistenceException(e);
- }
- return id;
- }
-
- @Override
- public void update(Vehicle vehicle) throws ElementNotFoundException, PersistenceException {
- String query = "SELECT * FROM vehicle WHERE id=?";
-
- long vehicleID = -1;
- long vehicleVersion = -1;
- try {
- Connection connection = jdbcConnectionManager.getConnection();
- connection.setAutoCommit(false);
- try (PreparedStatement p =
- connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS)) {
-
- p.setLong(1, vehicle.id());
- p.executeQuery();
- try (ResultSet rs = p.getResultSet()) {
- while (rs.next()) {
- vehicleID = rs.getLong("id");
- }
- }
- }
- if (vehicleID == -1) {
- throw new ElementNotFoundException("Vehicle don´t found");
- }
-
- query =
- "INSERT INTO VehicleVersion (name,hasNef,constructionType,type) VALUES (?,?,?,?)";
- String name = "";
- try (PreparedStatement p =
- connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS)) {
- p.setString(1, name);
- p.setBoolean(2, vehicle.hasNef());
- p.setString(3, vehicle.constructionType().name());
-
- p.setString(4, vehicle.type().name());
-
- p.executeUpdate();
-
- try (ResultSet keyResultSet = p.getGeneratedKeys()) {
-
- if (keyResultSet.next()) {
- vehicleVersion = keyResultSet.getInt(1);
- }
- }
- if (vehicleVersion == -1) {
- throw new ElementNotFoundException("Vehicle don´t found");
- }
- }
- name = vehicle.type().name() + "-" + vehicleID;
-
- query = "UPDATE VehicleVersion SET name=? WHERE id=?";
- try (PreparedStatement p = connection.prepareStatement(query)) {
-
- p.setString(1, name);
- p.setLong(2, vehicleVersion);
- p.executeUpdate();
- }
- query = "UPDATE Vehicle SET version=? WHERE id=?";
- try (PreparedStatement p = connection.prepareStatement(query)) {
-
- p.setLong(1, vehicleVersion);
- p.setLong(2, vehicleID);
- p.executeUpdate();
- }
- connection.commit();
- connection.setAutoCommit(true);
- } catch (SQLException e) {
- throw new PersistenceException(e);
- }
- }
-
- @Override
- public Set<Vehicle> list() throws PersistenceException {
- Set<Vehicle> result = new HashSet<>();
-
- String sql =
- "Select * from VehicleVersion, Vehicle where VehicleVersion.id=Vehicle.version";
-
- try (PreparedStatement pstmt =
- jdbcConnectionManager.getConnection().prepareStatement(sql)) {
- pstmt.executeQuery();
- try (ResultSet rs = pstmt.getResultSet()) {
- while (rs.next()) {
- result.add(vehicleFromRS(rs));
- }
- }
- } catch (SQLException e) {
- throw new PersistenceException("Die Werte konnten nicht geladen werden.", e);
- }
- return result;
- }
-
- @Override
- public Vehicle get(long id) throws ElementNotFoundException, PersistenceException {
- String sql =
- "SELECT a.id, b.name, b.constructionType, b.type, a.status, b.hasNef"
- + " FROM Vehicle a"
- + " INNER JOIN VehicleVersion b"
- + " ON version = b.id"
- + " WHERE a.id = ?";
-
- try {
- Connection con = jdbcConnectionManager.getConnection();
- try (PreparedStatement pstmt = con.prepareStatement(sql)) {
- pstmt.setLong(1, id);
-
- try (ResultSet rs = pstmt.executeQuery()) {
- if (!rs.first()) throw new ElementNotFoundException("No such vehicle exists");
-
- return vehicleFromRS(rs);
- }
- }
- } catch (SQLException e) {
- throw new PersistenceException(e);
- }
- }
-
- @Override
- public void remove(long id) throws ElementNotFoundException, PersistenceException {}
-
- private Vehicle vehicleFromRS(ResultSet rs) throws SQLException, PersistenceException {
- return Vehicle.builder()
- .id(rs.getLong("Vehicle.id"))
- .name(rs.getString("name"))
- .constructionType(ConstructionType.values()[rs.getInt("constructionType")])
- .type(VehicleType.valueOf(rs.getString("type")))
- .status(Status.values()[rs.getInt("status")])
- .hasNef(rs.getBoolean("hasNef"))
- .registrations(registrationDatabaseDao.list(rs.getLong("id")))
- .build();
- }
-}