Jump to content
  • 0

problem with threadpool


Question

Posted

Why this code is not workin`

 

/* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jserver.gameserver.model.entity;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;

import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.Announcements;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;

public class EventTask
{
public static void getInstance()
{
	ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
	{
		public void run()
		{
			String currentEventKing = null,
			newEventKing = null;
			int topEventKills = 0;
			Connection con = null;
			try
			{
				con = L2DatabaseFactory.getInstance().getConnection();
				PreparedStatement stm = con.prepareStatement("SELECT char_name FROM characters WHERE EventKing=? AND accesslevel=?");
				stm.setInt(1, 1);
				stm.setInt(2, 1);
				ResultSet rSet = stm.executeQuery();

				if (rSet.next())
				{
					currentEventKing = rSet.getString("char_name");
				}

				rSet.close();
				stm.close();

				if (currentEventKing != null)
				{
					boolean cont = false;
					L2PcInstance cEventKing = L2World.getInstance().getPlayer(currentEventKing);
					if (cEventKing == null || cEventKing.isOnline() == 0)
					{
						cont = true;
					}
					else
					{
						cEventKing.setEventKing(false);
						cEventKing.broadcastUserInfo();
					}

					if (cont)
					{
						stm = con.prepareStatement("UPDATE characters SET EventKing=? WHERE char_name=?");
						stm.setInt(1, 0);
						stm.setString(2, currentEventKing);

						stm.execute();
						stm.close();
					}
				}

				stm = con.prepareStatement("SELECT eventkills,char_name FROM characters WHERE accesslevel=? ORDER BY eventkills DESC LIMIT 1");
				stm.setInt(1, 0);
				rSet = stm.executeQuery();

				if (rSet.next())
				{
					newEventKing = rSet.getString("char_name");
					topEventKills = rSet.getInt("eventkills");
				}

				rSet.close();
				stm.close();

				boolean cont = false;
				L2PcInstance nEventKing = L2World.getInstance().getPlayer(newEventKing);
				if (nEventKing == null || nEventKing.isOnline() == 0)
				{
					cont = true;
				}
				else
				{
					nEventKing.setEventKing(true);
					nEventKing.broadcastUserInfo();
				}

				if (cont)
				{
					stm = con.prepareStatement("UPDATE characters SET EventKing=? WHERE char_name=?");
					stm.setInt(1, 1);
					stm.setString(2, newEventKing);

					stm.execute();
					stm.close();
				}

				stm = con.prepareStatement("UPDATE characters SET eventkills=?");
				stm.setInt(1, 0);

				stm.execute();
				stm.close();

				Announcements.getInstance().announceToAll("New event king: "+newEventKing);
			}
			catch (Exception e)
			{ }
			finally
			{
				try
				{
					con.close();
				}
				catch (Exception e)
				{ }
			}
		}
	}
	, getValidationTime());
}

private static long getValidationTime()
{
	Calendar cld = Calendar.getInstance();
	cld.set(Calendar.HOUR_OF_DAY, 19);
	cld.set(Calendar.MINUTE, 0);
	cld.set(Calendar.SECOND, 0);

	long time = cld.getTimeInMillis();
	if (System.currentTimeMillis()-time <= 0)
	{
		return time;
	}

	return 0;
}
}

 

i used this System.out.println("[DEBUG-EVENT] Time left: "+getValidationTime()); before ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() and it worked ( i've got it in console like [DEBUG-EVENT] Time left: 13859604932849 i don't know why the fuck i got this time :|)

4 answers to this question

Recommended Posts

  • 0
Posted

because this time: 13859604932849 is time starting from January 1, 1970.

So if u want to get know how much time is left:

(getValidationTime()-System.currentTimeMillis())

Guest
This topic is now closed to further replies.


×
×
  • Create New...