Added persist method for estates
Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
@ -292,7 +292,7 @@ public class Main {
|
|||||||
house.setGarden(input.equals("Y") || input.equals("y"));
|
house.setGarden(input.equals("Y") || input.equals("y"));
|
||||||
}
|
}
|
||||||
|
|
||||||
//_orm.persist(estate);
|
_orm.persist(estate);
|
||||||
|
|
||||||
System.out.println("------------------");
|
System.out.println("------------------");
|
||||||
System.out.println("Estate with the ID " + estate.getId() + " was modified.");
|
System.out.println("Estate with the ID " + estate.getId() + " was modified.");
|
||||||
|
|||||||
@ -413,4 +413,125 @@ public class ORM {
|
|||||||
_agentsUsername.put(agent.getLogin(), agent);
|
_agentsUsername.put(agent.getLogin(), agent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Persists the given estate.
|
||||||
|
*
|
||||||
|
* @param estate the estate that should be persisted
|
||||||
|
*/
|
||||||
|
public void persist(Estate estate)
|
||||||
|
{
|
||||||
|
boolean changeFinished = false;
|
||||||
|
try {
|
||||||
|
_connection.setAutoCommit(false);
|
||||||
|
if (estate.getId() == -1) {
|
||||||
|
String insertSQL = "INSERT INTO ESTATE (city, postalCode, street, streetNumber, squareArea, agent) " +
|
||||||
|
"VALUES (?, ?, ?, ?, ?, ?)";
|
||||||
|
PreparedStatement pstmt = _connection.prepareStatement(insertSQL, Statement.RETURN_GENERATED_KEYS);
|
||||||
|
pstmt.setString(1, estate.getCity());
|
||||||
|
pstmt.setString(2, estate.getPostalCode());
|
||||||
|
pstmt.setString(3, estate.getStreet());
|
||||||
|
pstmt.setInt(4, estate.getStreetNumber());
|
||||||
|
pstmt.setInt(5, estate.getSquareArea());
|
||||||
|
pstmt.setInt(6, estate.getAgent());
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
|
||||||
|
ResultSet rs = pstmt.getGeneratedKeys();
|
||||||
|
if (rs.next()) {
|
||||||
|
estate.setId(rs.getInt(1));
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pstmt.close();
|
||||||
|
|
||||||
|
if (estate instanceof House) {
|
||||||
|
House house = (House) estate;
|
||||||
|
String insertSQLHouse = "INSERT INTO HOUSE (ID, price, garden, floors) VALUES (?, ?, ?, ?)";
|
||||||
|
PreparedStatement pstmtHouse = _connection.prepareStatement(insertSQLHouse);
|
||||||
|
pstmtHouse.setInt(1, house.getId());
|
||||||
|
pstmtHouse.setInt(2, house.getPrice());
|
||||||
|
pstmtHouse.setInt(3, house.hasGarden() ? 1 : 0);
|
||||||
|
pstmtHouse.setInt(4, house.getFloors());
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
pstmtHouse.executeUpdate();
|
||||||
|
pstmt.close();
|
||||||
|
pstmtHouse.close();
|
||||||
|
changeFinished = true;
|
||||||
|
}
|
||||||
|
else if (estate instanceof Apartment) {
|
||||||
|
Apartment apartment = (Apartment) estate;
|
||||||
|
String insertSQLApartment = "INSERT INTO APARTMENT (ID, floor, rent, rooms, balcony, builtInKitchen) " +
|
||||||
|
"VALUES (?, ?, ?, ?, ?, ?)";
|
||||||
|
PreparedStatement pstmtApartment = _connection.prepareStatement(insertSQLApartment);
|
||||||
|
pstmtApartment.setInt(1, apartment.getId());
|
||||||
|
pstmtApartment.setInt(2, apartment.getFloor());
|
||||||
|
pstmtApartment.setInt(3, apartment.getRent());
|
||||||
|
pstmtApartment.setInt(4, apartment.getRooms());
|
||||||
|
pstmtApartment.setInt(5, apartment.hasBalcony() ? 1 : 0);
|
||||||
|
pstmtApartment.setInt(6, apartment.hasBuiltinKitchen() ? 1 : 0);
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
pstmtApartment.executeUpdate();
|
||||||
|
pstmt.close();
|
||||||
|
pstmtApartment.close();
|
||||||
|
changeFinished = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// create query
|
||||||
|
String updateSQL = "UPDATE ESTATE SET city = ?, postalCode = ?, street = ?, streetNumber = ?, " +
|
||||||
|
"squareArea = ?, agent = ? WHERE ID = ?";
|
||||||
|
PreparedStatement pstmt = _connection.prepareStatement(updateSQL);
|
||||||
|
pstmt.setString(1, estate.getCity());
|
||||||
|
pstmt.setString(2, estate.getPostalCode());
|
||||||
|
pstmt.setString(3, estate.getStreet());
|
||||||
|
pstmt.setInt(4, estate.getStreetNumber());
|
||||||
|
pstmt.setInt(5, estate.getSquareArea());
|
||||||
|
pstmt.setInt(6, estate.getAgent());
|
||||||
|
|
||||||
|
if (estate instanceof House) {
|
||||||
|
House house = (House) estate;
|
||||||
|
String updateSQLHouse = "UPDATE HOUSE SET floors = ?, garden = ?, price = ? WHERE ID = ?";
|
||||||
|
PreparedStatement pstmtHouse = _connection.prepareStatement(updateSQLHouse);
|
||||||
|
pstmtHouse.setInt(1, house.getFloors());
|
||||||
|
pstmtHouse.setInt(2, house.hasGarden() ? 1 : 0);
|
||||||
|
pstmtHouse.setInt(3, house.getPrice());
|
||||||
|
pstmtHouse.setInt(4, house.getId());
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
pstmtHouse.executeUpdate();
|
||||||
|
pstmt.close();
|
||||||
|
pstmtHouse.close();
|
||||||
|
changeFinished = true;
|
||||||
|
}
|
||||||
|
else if (estate instanceof Apartment) {
|
||||||
|
Apartment apartment = (Apartment) estate;
|
||||||
|
String updateSQLApartment = "UPDATE APARTMENT SET floor = ?, rent = ?, rooms = ?, " +
|
||||||
|
"balcony = ?, builtInKitchen = ? WHERE ID = ?";
|
||||||
|
PreparedStatement pstmtApartment = _connection.prepareStatement(updateSQLApartment);
|
||||||
|
pstmtApartment.setInt(1, apartment.getFloor());
|
||||||
|
pstmtApartment.setInt(2, apartment.getRent());
|
||||||
|
pstmtApartment.setInt(3, apartment.getRooms());
|
||||||
|
pstmtApartment.setInt(4, apartment.hasBalcony() ? 1 : 0);
|
||||||
|
pstmtApartment.setInt(5, apartment.hasBuiltinKitchen() ? 1 : 0);
|
||||||
|
pstmtApartment.setInt(6, apartment.getId());
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
pstmtApartment.executeUpdate();
|
||||||
|
pstmt.close();
|
||||||
|
pstmtApartment.close();
|
||||||
|
changeFinished = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (changeFinished) {
|
||||||
|
_connection.commit();
|
||||||
|
if (!_estates.containsKey(estate.getId())) {
|
||||||
|
_estates.put(estate.getId(), estate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_connection.setAutoCommit(true);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
try {
|
||||||
|
_connection.rollback();
|
||||||
|
} catch (SQLException e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user