57 lines
2.2 KiB
Java
57 lines
2.2 KiB
Java
package net.server.task;
|
|
|
|
import java.sql.Connection;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.SQLException;
|
|
import java.util.Calendar;
|
|
|
|
import client.MapleFamily;
|
|
import net.server.world.World;
|
|
import tools.DatabaseConnection;
|
|
import tools.FilePrinter;
|
|
|
|
public class FamilyDailyResetTask implements Runnable {
|
|
|
|
private final World world;
|
|
|
|
public FamilyDailyResetTask(World world) {
|
|
this.world = world;
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
resetEntitlementUsage(world);
|
|
for(MapleFamily family : world.getFamilies()) {
|
|
family.resetDailyReps();
|
|
}
|
|
}
|
|
|
|
public static void resetEntitlementUsage(World world) {
|
|
Calendar resetTime = Calendar.getInstance();
|
|
resetTime.add(Calendar.MINUTE, 1); // to make sure that we're in the "next day", since this is called at midnight
|
|
resetTime.set(Calendar.HOUR_OF_DAY, 0);
|
|
resetTime.set(Calendar.MINUTE, 0);
|
|
resetTime.set(Calendar.SECOND, 0);
|
|
resetTime.set(Calendar.MILLISECOND, 0);
|
|
try(Connection con = DatabaseConnection.getConnection()) {
|
|
try(PreparedStatement ps = con.prepareStatement("UPDATE family_character SET todaysrep = 0, reptosenior = 0 WHERE lastresettime <= ?")) {
|
|
ps.setLong(1, resetTime.getTimeInMillis());
|
|
ps.executeUpdate();
|
|
} catch(SQLException e) {
|
|
FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not reset daily rep for families. On " + Calendar.getInstance().getTime());
|
|
e.printStackTrace();
|
|
}
|
|
try(PreparedStatement ps = con.prepareStatement("DELETE FROM family_entitlement WHERE timestamp <= ?")) {
|
|
ps.setLong(1, resetTime.getTimeInMillis());
|
|
ps.executeUpdate();
|
|
} catch(SQLException e) {
|
|
FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not do daily reset for family entitlements. On " + Calendar.getInstance().getTime());
|
|
e.printStackTrace();
|
|
}
|
|
} catch(SQLException e) {
|
|
FilePrinter.printError(FilePrinter.FAMILY_ERROR, e, "Could not get connection to DB.");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|