|
@@ -50,21 +50,22 @@ import com.l2jserver.gameserver.taskmanager.tasks.TaskShutdown;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author Layane
|
|
* @author Layane
|
|
- *
|
|
|
|
*/
|
|
*/
|
|
public final class TaskManager
|
|
public final class TaskManager
|
|
{
|
|
{
|
|
- protected static final Logger _log = Logger.getLogger(TaskManager.class.getName());
|
|
|
|
|
|
+ private static final Logger _log = Logger.getLogger(TaskManager.class.getName());
|
|
|
|
+
|
|
|
|
+ private final FastMap<Integer, Task> _tasks = new FastMap<>();
|
|
|
|
+ protected final FastList<ExecutedTask> _currentTasks = new FastList<>();
|
|
|
|
|
|
- protected static final String[] SQL_STATEMENTS = {
|
|
|
|
|
|
+ private static final String[] SQL_STATEMENTS =
|
|
|
|
+ {
|
|
"SELECT id,task,type,last_activation,param1,param2,param3 FROM global_tasks",
|
|
"SELECT id,task,type,last_activation,param1,param2,param3 FROM global_tasks",
|
|
- "UPDATE global_tasks SET last_activation=? WHERE id=?", "SELECT id FROM global_tasks WHERE task=?",
|
|
|
|
|
|
+ "UPDATE global_tasks SET last_activation=? WHERE id=?",
|
|
|
|
+ "SELECT id FROM global_tasks WHERE task=?",
|
|
"INSERT INTO global_tasks (task,type,last_activation,param1,param2,param3) VALUES(?,?,?,?,?,?)"
|
|
"INSERT INTO global_tasks (task,type,last_activation,param1,param2,param3) VALUES(?,?,?,?,?,?)"
|
|
};
|
|
};
|
|
|
|
|
|
- private final FastMap<Integer, Task> _tasks = new FastMap<Integer, Task>();
|
|
|
|
- protected final FastList<ExecutedTask> _currentTasks = new FastList<ExecutedTask>();
|
|
|
|
-
|
|
|
|
public class ExecutedTask implements Runnable
|
|
public class ExecutedTask implements Runnable
|
|
{
|
|
{
|
|
int id;
|
|
int id;
|
|
@@ -80,7 +81,12 @@ public final class TaskManager
|
|
type = ptype;
|
|
type = ptype;
|
|
id = rset.getInt("id");
|
|
id = rset.getInt("id");
|
|
lastActivation = rset.getLong("last_activation");
|
|
lastActivation = rset.getLong("last_activation");
|
|
- params = new String[] { rset.getString("param1"), rset.getString("param2"), rset.getString("param3") };
|
|
|
|
|
|
+ params = new String[]
|
|
|
|
+ {
|
|
|
|
+ rset.getString("param1"),
|
|
|
|
+ rset.getString("param2"),
|
|
|
|
+ rset.getString("param3")
|
|
|
|
+ };
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -88,9 +94,7 @@ public final class TaskManager
|
|
{
|
|
{
|
|
task.onTimeElapsed(this);
|
|
task.onTimeElapsed(this);
|
|
lastActivation = System.currentTimeMillis();
|
|
lastActivation = System.currentTimeMillis();
|
|
-
|
|
|
|
Connection con = null;
|
|
Connection con = null;
|
|
-
|
|
|
|
try
|
|
try
|
|
{
|
|
{
|
|
con = L2DatabaseFactory.getInstance().getConnection();
|
|
con = L2DatabaseFactory.getInstance().getConnection();
|
|
@@ -109,7 +113,7 @@ public final class TaskManager
|
|
L2DatabaseFactory.close(con);
|
|
L2DatabaseFactory.close(con);
|
|
}
|
|
}
|
|
|
|
|
|
- if (type == TYPE_SHEDULED || type == TYPE_TIME)
|
|
|
|
|
|
+ if ((type == TYPE_SHEDULED) || (type == TYPE_TIME))
|
|
{
|
|
{
|
|
stopTask();
|
|
stopTask();
|
|
}
|
|
}
|
|
@@ -151,7 +155,9 @@ public final class TaskManager
|
|
task.onDestroy();
|
|
task.onDestroy();
|
|
|
|
|
|
if (scheduled != null)
|
|
if (scheduled != null)
|
|
|
|
+ {
|
|
scheduled.cancel(true);
|
|
scheduled.cancel(true);
|
|
|
|
+ }
|
|
|
|
|
|
_currentTasks.remove(this);
|
|
_currentTasks.remove(this);
|
|
}
|
|
}
|
|
@@ -171,19 +177,19 @@ public final class TaskManager
|
|
|
|
|
|
private void initializate()
|
|
private void initializate()
|
|
{
|
|
{
|
|
|
|
+ registerTask(new TaskBirthday());
|
|
registerTask(new TaskCleanUp());
|
|
registerTask(new TaskCleanUp());
|
|
- registerTask(new TaskScript());
|
|
|
|
- registerTask(new TaskJython());
|
|
|
|
|
|
+ registerTask(new TaskDailyQuestClean());
|
|
|
|
+ registerTask(new TaskDailySkillReuseClean());
|
|
registerTask(new TaskGlobalVariablesSave());
|
|
registerTask(new TaskGlobalVariablesSave());
|
|
|
|
+ registerTask(new TaskJython());
|
|
registerTask(new TaskOlympiadSave());
|
|
registerTask(new TaskOlympiadSave());
|
|
registerTask(new TaskRaidPointsReset());
|
|
registerTask(new TaskRaidPointsReset());
|
|
registerTask(new TaskRecom());
|
|
registerTask(new TaskRecom());
|
|
registerTask(new TaskRestart());
|
|
registerTask(new TaskRestart());
|
|
|
|
+ registerTask(new TaskScript());
|
|
registerTask(new TaskSevenSignsUpdate());
|
|
registerTask(new TaskSevenSignsUpdate());
|
|
registerTask(new TaskShutdown());
|
|
registerTask(new TaskShutdown());
|
|
- registerTask(new TaskDailyQuestClean());
|
|
|
|
- registerTask(new TaskDailySkillReuseClean());
|
|
|
|
- registerTask(new TaskBirthday());
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public void registerTask(Task task)
|
|
public void registerTask(Task task)
|
|
@@ -202,30 +208,30 @@ public final class TaskManager
|
|
try
|
|
try
|
|
{
|
|
{
|
|
con = L2DatabaseFactory.getInstance().getConnection();
|
|
con = L2DatabaseFactory.getInstance().getConnection();
|
|
- PreparedStatement statement = con.prepareStatement(SQL_STATEMENTS[0]);
|
|
|
|
- ResultSet rset = statement.executeQuery();
|
|
|
|
-
|
|
|
|
|
|
+ final PreparedStatement statement = con.prepareStatement(SQL_STATEMENTS[0]);
|
|
|
|
+ final ResultSet rset = statement.executeQuery();
|
|
while (rset.next())
|
|
while (rset.next())
|
|
{
|
|
{
|
|
Task task = _tasks.get(rset.getString("task").trim().toLowerCase().hashCode());
|
|
Task task = _tasks.get(rset.getString("task").trim().toLowerCase().hashCode());
|
|
|
|
|
|
if (task == null)
|
|
if (task == null)
|
|
|
|
+ {
|
|
continue;
|
|
continue;
|
|
|
|
+ }
|
|
|
|
|
|
- TaskTypes type = TaskTypes.valueOf(rset.getString("type"));
|
|
|
|
-
|
|
|
|
|
|
+ final TaskTypes type = TaskTypes.valueOf(rset.getString("type"));
|
|
if (type != TYPE_NONE)
|
|
if (type != TYPE_NONE)
|
|
{
|
|
{
|
|
ExecutedTask current = new ExecutedTask(task, type, rset);
|
|
ExecutedTask current = new ExecutedTask(task, type, rset);
|
|
if (launchTask(current))
|
|
if (launchTask(current))
|
|
|
|
+ {
|
|
_currentTasks.add(current);
|
|
_currentTasks.add(current);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
rset.close();
|
|
rset.close();
|
|
statement.close();
|
|
statement.close();
|
|
-
|
|
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
catch (Exception e)
|
|
{
|
|
{
|
|
@@ -233,13 +239,7 @@ public final class TaskManager
|
|
}
|
|
}
|
|
finally
|
|
finally
|
|
{
|
|
{
|
|
- try
|
|
|
|
- {
|
|
|
|
- L2DatabaseFactory.close(con);
|
|
|
|
- }
|
|
|
|
- catch (Exception e)
|
|
|
|
- {
|
|
|
|
- }
|
|
|
|
|
|
+ L2DatabaseFactory.close(con);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -248,8 +248,7 @@ public final class TaskManager
|
|
final ThreadPoolManager scheduler = ThreadPoolManager.getInstance();
|
|
final ThreadPoolManager scheduler = ThreadPoolManager.getInstance();
|
|
final TaskTypes type = task.getType();
|
|
final TaskTypes type = task.getType();
|
|
long delay, interval;
|
|
long delay, interval;
|
|
-
|
|
|
|
- switch(type)
|
|
|
|
|
|
+ switch (type)
|
|
{
|
|
{
|
|
case TYPE_STARTUP:
|
|
case TYPE_STARTUP:
|
|
task.run();
|
|
task.run();
|
|
@@ -315,19 +314,15 @@ public final class TaskManager
|
|
|
|
|
|
delay = min.getTimeInMillis() - System.currentTimeMillis();
|
|
delay = min.getTimeInMillis() - System.currentTimeMillis();
|
|
|
|
|
|
- if (check.after(min) || delay < 0)
|
|
|
|
|
|
+ if (check.after(min) || (delay < 0))
|
|
{
|
|
{
|
|
delay += interval;
|
|
delay += interval;
|
|
}
|
|
}
|
|
-
|
|
|
|
task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval);
|
|
task.scheduled = scheduler.scheduleGeneralAtFixedRate(task, delay, interval);
|
|
-
|
|
|
|
return true;
|
|
return true;
|
|
-
|
|
|
|
default:
|
|
default:
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
-
|
|
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -339,7 +334,6 @@ public final class TaskManager
|
|
public static boolean addUniqueTask(String task, TaskTypes type, String param1, String param2, String param3, long lastActivation)
|
|
public static boolean addUniqueTask(String task, TaskTypes type, String param1, String param2, String param3, long lastActivation)
|
|
{
|
|
{
|
|
Connection con = null;
|
|
Connection con = null;
|
|
-
|
|
|
|
try
|
|
try
|
|
{
|
|
{
|
|
con = L2DatabaseFactory.getInstance().getConnection();
|
|
con = L2DatabaseFactory.getInstance().getConnection();
|
|
@@ -358,10 +352,8 @@ public final class TaskManager
|
|
statement.setString(6, param3);
|
|
statement.setString(6, param3);
|
|
statement.execute();
|
|
statement.execute();
|
|
}
|
|
}
|
|
-
|
|
|
|
rset.close();
|
|
rset.close();
|
|
statement.close();
|
|
statement.close();
|
|
-
|
|
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
catch (SQLException e)
|
|
catch (SQLException e)
|
|
@@ -370,15 +362,8 @@ public final class TaskManager
|
|
}
|
|
}
|
|
finally
|
|
finally
|
|
{
|
|
{
|
|
- try
|
|
|
|
- {
|
|
|
|
- L2DatabaseFactory.close(con);
|
|
|
|
- }
|
|
|
|
- catch (Exception e)
|
|
|
|
- {
|
|
|
|
- }
|
|
|
|
|
|
+ L2DatabaseFactory.close(con);
|
|
}
|
|
}
|
|
-
|
|
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -390,7 +375,6 @@ public final class TaskManager
|
|
public static boolean addTask(String task, TaskTypes type, String param1, String param2, String param3, long lastActivation)
|
|
public static boolean addTask(String task, TaskTypes type, String param1, String param2, String param3, long lastActivation)
|
|
{
|
|
{
|
|
Connection con = null;
|
|
Connection con = null;
|
|
-
|
|
|
|
try
|
|
try
|
|
{
|
|
{
|
|
con = L2DatabaseFactory.getInstance().getConnection();
|
|
con = L2DatabaseFactory.getInstance().getConnection();
|
|
@@ -412,15 +396,8 @@ public final class TaskManager
|
|
}
|
|
}
|
|
finally
|
|
finally
|
|
{
|
|
{
|
|
- try
|
|
|
|
- {
|
|
|
|
- L2DatabaseFactory.close(con);
|
|
|
|
- }
|
|
|
|
- catch (Exception e)
|
|
|
|
- {
|
|
|
|
- }
|
|
|
|
|
|
+ L2DatabaseFactory.close(con);
|
|
}
|
|
}
|
|
-
|
|
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|