More Login processing.

This commit is contained in:
Rsl1122 2017-08-22 11:00:27 +03:00
parent 997ec683ae
commit b9c9f4d950
10 changed files with 127 additions and 13 deletions

View File

@ -478,7 +478,9 @@ public class Plan extends BukkitPlugin<Plan> {
return tpsCountTimer; return tpsCountTimer;
} }
public void addToProcessQueue(Processor processor) { public void addToProcessQueue(Processor... processors) {
for (Processor processor : processors) {
processingQueue.addToQueue(processor); processingQueue.addToQueue(processor);
} }
}
} }

View File

@ -10,7 +10,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* Part responsible for all Player login related analysis. * Part responsible for all Player player related analysis.
* <p> * <p>
* Placeholder values can be retrieved using the get method. * Placeholder values can be retrieved using the get method.
* <p> * <p>

View File

@ -0,0 +1,31 @@
/*
* Licence is provided in the jar as license.yml also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
*/
package main.java.com.djrapitops.plan.data.handling;
import main.java.com.djrapitops.plan.Log;
import main.java.com.djrapitops.plan.database.Database;
import main.java.com.djrapitops.plan.queue.processing.Processor;
import java.sql.SQLException;
/**
* Processor for queueing a Database Commit after changes.
*
* @author Rsl1122
*/
public class DBCommitProcessor extends Processor<Database> {
public DBCommitProcessor(Database object) {
super(object);
}
@Override
public void process() {
try {
object.commit();
} catch (SQLException e) {
Log.toLog(this.getClass().getName(), e);
}
}
}

View File

@ -0,0 +1,25 @@
/*
* Licence is provided in the jar as license.yml also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
*/
package main.java.com.djrapitops.plan.data.handling.player;
import java.util.UUID;
/**
* //TODO Class Javadoc Comment
*
* @author Rsl1122
*/
public class BanProcessor extends PlayerProcessor {
public BanProcessor(UUID uuid) {
super(uuid);
}
@Override
public void process() {
UUID uuid = getUUID();
// TODO DB Update Ban status
}
}

View File

@ -2,10 +2,9 @@
* Licence is provided in the jar as license.yml also here: * Licence is provided in the jar as license.yml also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
*/ */
package main.java.com.djrapitops.plan.data.handling.login; package main.java.com.djrapitops.plan.data.handling.player;
import main.java.com.djrapitops.plan.data.cache.GeolocationCacheHandler; import main.java.com.djrapitops.plan.data.cache.GeolocationCacheHandler;
import main.java.com.djrapitops.plan.data.handling.PlayerProcessor;
import java.util.UUID; import java.util.UUID;
@ -26,7 +25,7 @@ public class IPUpdateProcessor extends PlayerProcessor {
@Override @Override
public void process() { public void process() {
UUID uuid = getUUID(); UUID uuid = getUUID();
GeolocationCacheHandler.getCountry(ip); String country = GeolocationCacheHandler.getCountry(ip);
// TODO DB Update IP & Geolocation // TODO DB Update IP & Geolocation
} }
} }

View File

@ -0,0 +1,30 @@
/*
* Licence is provided in the jar as license.yml also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
*/
package main.java.com.djrapitops.plan.data.handling.player;
import java.util.UUID;
/**
* //TODO Class Javadoc Comment
*
* @author Rsl1122
*/
public class NameProcessor extends PlayerProcessor {
private final String playerName;
private final String displayName;
public NameProcessor(UUID uuid, String playerName, String displayName) {
super(uuid);
this.playerName = playerName;
this.displayName = displayName;
}
@Override
public void process() {
UUID uuid = getUUID();
// TODO DB Update Name & Nicknames.
}
}

View File

@ -2,7 +2,7 @@
* Licence is provided in the jar as license.yml also here: * Licence is provided in the jar as license.yml also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
*/ */
package main.java.com.djrapitops.plan.data.handling; package main.java.com.djrapitops.plan.data.handling.player;
import main.java.com.djrapitops.plan.queue.processing.Processor; import main.java.com.djrapitops.plan.queue.processing.Processor;

View File

@ -2,10 +2,9 @@
* Licence is provided in the jar as license.yml also here: * Licence is provided in the jar as license.yml also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
*/ */
package main.java.com.djrapitops.plan.data.handling.login; package main.java.com.djrapitops.plan.data.handling.player;
import main.java.com.djrapitops.plan.Plan; import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.handling.PlayerProcessor;
import java.util.UUID; import java.util.UUID;

View File

@ -8,10 +8,14 @@ import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.Session; import main.java.com.djrapitops.plan.data.Session;
import main.java.com.djrapitops.plan.data.UserData; import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.cache.DataCache; import main.java.com.djrapitops.plan.data.cache.DataCache;
import main.java.com.djrapitops.plan.data.handling.DBCommitProcessor;
import main.java.com.djrapitops.plan.data.handling.info.KickInfo; import main.java.com.djrapitops.plan.data.handling.info.KickInfo;
import main.java.com.djrapitops.plan.data.handling.info.LoginInfo; import main.java.com.djrapitops.plan.data.handling.info.LoginInfo;
import main.java.com.djrapitops.plan.data.handling.info.LogoutInfo; import main.java.com.djrapitops.plan.data.handling.info.LogoutInfo;
import main.java.com.djrapitops.plan.data.handling.login.RegisterProcessor; import main.java.com.djrapitops.plan.data.handling.player.BanProcessor;
import main.java.com.djrapitops.plan.data.handling.player.IPUpdateProcessor;
import main.java.com.djrapitops.plan.data.handling.player.NameProcessor;
import main.java.com.djrapitops.plan.data.handling.player.RegisterProcessor;
import main.java.com.djrapitops.plan.utilities.MiscUtils; import main.java.com.djrapitops.plan.utilities.MiscUtils;
import main.java.com.djrapitops.plan.utilities.NewPlayerCreator; import main.java.com.djrapitops.plan.utilities.NewPlayerCreator;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -20,6 +24,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import java.net.InetAddress; import java.net.InetAddress;
@ -48,6 +53,15 @@ public class PlanPlayerListener implements Listener {
cache = plugin.getHandler(); cache = plugin.getHandler();
} }
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerLogin(PlayerLoginEvent event) {
PlayerLoginEvent.Result result = event.getResult();
UUID uuid = event.getPlayer().getUniqueId();
if (result == PlayerLoginEvent.Result.KICK_BANNED) {
plugin.addToProcessQueue(new BanProcessor(uuid));
}
}
/** /**
* PlayerJoinEvent Listener. * PlayerJoinEvent Listener.
* <p> * <p>
@ -58,22 +72,34 @@ public class PlanPlayerListener implements Listener {
* @param event The Fired event. * @param event The Fired event.
*/ */
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onPlayerLogin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
IPlayer iPlayer = Fetch.wrapBukkit(player); IPlayer iPlayer = Fetch.wrapBukkit(player);
plugin.getNotificationCenter().checkNotifications(iPlayer); plugin.getNotificationCenter().checkNotifications(iPlayer);
UUID uuid = player.getUniqueId(); UUID uuid = player.getUniqueId();
long time = MiscUtils.getTime();
String world = player.getWorld().getName(); String world = player.getWorld().getName();
String gm = player.getGameMode().name(); String gm = player.getGameMode().name();
long time = MiscUtils.getTime();
String ip = player.getAddress().getAddress().toString();
String playerName = player.getName();
String displayName = player.getDisplayName();
int playersOnline = plugin.getTpsCountTimer().getLatestPlayersOnline(); int playersOnline = plugin.getTpsCountTimer().getLatestPlayersOnline();
cache.cacheSession(uuid, Session.start(time, world, gm)); cache.cacheSession(uuid, Session.start(time, world, gm));
plugin.addToProcessQueue(new RegisterProcessor(uuid, time, playersOnline)); plugin.addToProcessQueue(
new RegisterProcessor(uuid, time, playersOnline), //TODO Add required variables after UsersTable is done.
new IPUpdateProcessor(uuid, ip),
new NameProcessor(uuid, playerName, displayName),
new DBCommitProcessor(plugin.getDB())
);
plugin.getRunnableFactory().createNew(new AbsRunnable("NewPlayerCheckTask") { plugin.getRunnableFactory().createNew(new AbsRunnable("NewPlayerCheckTask") {
@Override @Override

View File

@ -321,4 +321,6 @@ public abstract class Database {
public ServerTable getServerTable() { public ServerTable getServerTable() {
return serverTable; return serverTable;
} }
public abstract void commit() throws SQLException;
} }