|
|
@ -16,10 +16,7 @@ import engine.objects.*; |
|
|
|
import org.joda.time.DateTime; |
|
|
|
import org.joda.time.DateTime; |
|
|
|
import org.pmw.tinylog.Logger; |
|
|
|
import org.pmw.tinylog.Logger; |
|
|
|
|
|
|
|
|
|
|
|
import java.sql.Connection; |
|
|
|
import java.sql.*; |
|
|
|
import java.sql.PreparedStatement; |
|
|
|
|
|
|
|
import java.sql.ResultSet; |
|
|
|
|
|
|
|
import java.sql.SQLException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class dbBaneHandler extends dbHandlerBase { |
|
|
|
public class dbBaneHandler extends dbHandlerBase { |
|
|
|
|
|
|
|
|
|
|
@ -90,19 +87,29 @@ public class dbBaneHandler extends dbHandlerBase { |
|
|
|
|
|
|
|
|
|
|
|
public boolean SET_BANE_TIME_NEW(int hour, int cityUUID) { |
|
|
|
public boolean SET_BANE_TIME_NEW(int hour, int cityUUID) { |
|
|
|
try (Connection connection = DbManager.getConnection(); |
|
|
|
try (Connection connection = DbManager.getConnection(); |
|
|
|
PreparedStatement getStatement = connection.prepareStatement("SELECT `liveDate` FROM `dyn_banes` WHERE `cityUUID`=?"); |
|
|
|
PreparedStatement getStatement = connection.prepareStatement("SELECT `placementDate`, `liveDate` FROM `dyn_banes` WHERE `cityUUID`=?"); |
|
|
|
PreparedStatement updateStatement = connection.prepareStatement("UPDATE `dyn_banes` SET `liveDate`=?, `time_set`=? WHERE `cityUUID`=?")) { |
|
|
|
PreparedStatement updateStatement = connection.prepareStatement("UPDATE `dyn_banes` SET `liveDate`=?, `time_set`=? WHERE `cityUUID`=?")) { |
|
|
|
|
|
|
|
|
|
|
|
// Retrieve the existing liveDate
|
|
|
|
// Retrieve placementDate and liveDate
|
|
|
|
getStatement.setInt(1, cityUUID); |
|
|
|
getStatement.setInt(1, cityUUID); |
|
|
|
try (ResultSet rs = getStatement.executeQuery()) { |
|
|
|
try (ResultSet rs = getStatement.executeQuery()) { |
|
|
|
if (rs.next()) { |
|
|
|
if (rs.next()) { |
|
|
|
DateTime existingDate = new DateTime(rs.getTimestamp("liveDate").getTime()); |
|
|
|
DateTime placementDate = new DateTime(rs.getTimestamp("placementDate").getTime()); |
|
|
|
// Update only the time
|
|
|
|
Timestamp liveDateTimestamp = rs.getTimestamp("liveDate"); |
|
|
|
DateTime updatedDate = existingDate.withHourOfDay(hour).withMinuteOfHour(0).withSecondOfMinute(0); |
|
|
|
|
|
|
|
|
|
|
|
DateTime toSet; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (liveDateTimestamp != null) { |
|
|
|
|
|
|
|
// liveDate is set, adjust its time
|
|
|
|
|
|
|
|
DateTime liveDate = new DateTime(liveDateTimestamp.getTime()); |
|
|
|
|
|
|
|
toSet = liveDate.withHourOfDay(hour).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
// liveDate is not set, use placementDate with updated time
|
|
|
|
|
|
|
|
toSet = placementDate.withHourOfDay(hour).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Update liveDate and time_set flag
|
|
|
|
// Update liveDate and time_set flag
|
|
|
|
updateStatement.setTimestamp(1, new java.sql.Timestamp(updatedDate.getMillis())); |
|
|
|
updateStatement.setTimestamp(1, new java.sql.Timestamp(toSet.getMillis())); |
|
|
|
updateStatement.setInt(2, 1); // time_set flag
|
|
|
|
updateStatement.setInt(2, 1); // time_set flag
|
|
|
|
updateStatement.setInt(3, cityUUID); |
|
|
|
updateStatement.setInt(3, cityUUID); |
|
|
|
|
|
|
|
|
|
|
@ -117,18 +124,25 @@ public class dbBaneHandler extends dbHandlerBase { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public boolean SET_BANE_DAY_NEW(int dayOffset, int cityUUID) { |
|
|
|
public boolean SET_BANE_DAY_NEW(int dayOffset, int cityUUID) { |
|
|
|
try (Connection connection = DbManager.getConnection(); |
|
|
|
try (Connection connection = DbManager.getConnection(); |
|
|
|
PreparedStatement getStatement = connection.prepareStatement("SELECT `liveDate` FROM `dyn_banes` WHERE `cityUUID`=?"); |
|
|
|
PreparedStatement getStatement = connection.prepareStatement("SELECT `placementDate`, `liveDate` FROM `dyn_banes` WHERE `cityUUID`=?"); |
|
|
|
PreparedStatement updateStatement = connection.prepareStatement("UPDATE `dyn_banes` SET `liveDate`=?, `day_set`=? WHERE `cityUUID`=?")) { |
|
|
|
PreparedStatement updateStatement = connection.prepareStatement("UPDATE `dyn_banes` SET `liveDate`=?, `day_set`=? WHERE `cityUUID`=?")) { |
|
|
|
|
|
|
|
|
|
|
|
// Retrieve the existing liveDate
|
|
|
|
// Retrieve placementDate and liveDate
|
|
|
|
getStatement.setInt(1, cityUUID); |
|
|
|
getStatement.setInt(1, cityUUID); |
|
|
|
try (ResultSet rs = getStatement.executeQuery()) { |
|
|
|
try (ResultSet rs = getStatement.executeQuery()) { |
|
|
|
if (rs.next()) { |
|
|
|
if (rs.next()) { |
|
|
|
DateTime existingDate = new DateTime(rs.getTimestamp("liveDate").getTime()); |
|
|
|
DateTime placementDate = new DateTime(rs.getTimestamp("placementDate").getTime()); |
|
|
|
// Update only the day
|
|
|
|
DateTime liveDate = new DateTime(rs.getTimestamp("liveDate").getTime()); |
|
|
|
DateTime updatedDate = existingDate.plusDays(dayOffset); |
|
|
|
|
|
|
|
|
|
|
|
// Calculate the new liveDate while preserving the time component
|
|
|
|
|
|
|
|
DateTime updatedDate = placementDate.plusDays(dayOffset) |
|
|
|
|
|
|
|
.withHourOfDay(liveDate.getHourOfDay()) |
|
|
|
|
|
|
|
.withMinuteOfHour(liveDate.getMinuteOfHour()) |
|
|
|
|
|
|
|
.withSecondOfMinute(liveDate.getSecondOfMinute()) |
|
|
|
|
|
|
|
.withMillisOfSecond(liveDate.getMillisOfSecond()); |
|
|
|
|
|
|
|
|
|
|
|
// Update liveDate and day_set flag
|
|
|
|
// Update liveDate and day_set flag
|
|
|
|
updateStatement.setTimestamp(1, new java.sql.Timestamp(updatedDate.getMillis())); |
|
|
|
updateStatement.setTimestamp(1, new java.sql.Timestamp(updatedDate.getMillis())); |
|
|
@ -147,6 +161,7 @@ public class dbBaneHandler extends dbHandlerBase { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public boolean SET_BANE_CAP_NEW(int count, int cityUUID) { |
|
|
|
public boolean SET_BANE_CAP_NEW(int count, int cityUUID) { |
|
|
|
|
|
|
|
|
|
|
|
try (Connection connection = DbManager.getConnection(); |
|
|
|
try (Connection connection = DbManager.getConnection(); |
|
|
|