Fixed up ServerStatusRepository to insert into specific columns
Fixed Dominate shop. Some work on Server Monitor
This commit is contained in:
parent
6999d7979f
commit
2064c58d1b
|
@ -16,7 +16,7 @@ public class ServerStatusRepository
|
|||
private String _password;
|
||||
|
||||
private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ServerStatus (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), serverGroup VARCHAR(256), address VARCHAR(256), updated LONG, motd VARCHAR(256), players INT, maxPlayers INT, tps INT, ram INT, maxRam INT, PRIMARY KEY (id));";
|
||||
private static String INSERT_PLAYER_COUNT = "INSERT INTO ServerStatus values(default, ?, ?, ?, now(), 'Configuring server.', ?, ?, 0, ?, ?);";
|
||||
private static String INSERT_PLAYER_COUNT = "INSERT INTO ServerStatus (serverName, serverGroup, address, updated, motd, players, maxPlayers, tps, ram, maxRam) values(default, ?, ?, ?, now(), 'Configuring server.', ?, ?, 0, ?, ?);";
|
||||
private static String UPDATE_PLAYER_COUNT = "UPDATE ServerStatus SET updated = now(), serverName = ?, serverGroup = ?, motd = ?, players = ?, maxPlayers = ?, tps = ?, ram = ?, maxRam = ? WHERE id = ?;";
|
||||
private static String RETRIEVE_ID = "SELECT id FROM ServerStatus WHERE address = ?;";
|
||||
private static String RETRIEVE_SERVER_STATUSES = "SELECT serverName, motd, players, maxPlayers FROM ServerStatus WHERE TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) < 10;";
|
||||
|
|
|
@ -11,6 +11,7 @@ import mineplex.core.shop.page.ShopPageBase;
|
|||
import mineplex.core.common.CurrencyType;
|
||||
import mineplex.core.common.util.NautHashMap;
|
||||
import mineplex.minecraft.game.classcombat.Class.ClientClass;
|
||||
import mineplex.minecraft.game.classcombat.shop.page.ArmorPage;
|
||||
import mineplex.minecraft.game.classcombat.shop.page.CustomBuildPage;
|
||||
|
||||
public class ClassCombatShop extends ShopBase<ClassShopManager>
|
||||
|
@ -29,13 +30,13 @@ public class ClassCombatShop extends ShopBase<ClassShopManager>
|
|||
@Override
|
||||
protected ShopPageBase<ClassShopManager, ClassCombatShop> BuildPagesFor(Player player)
|
||||
{
|
||||
return new CustomBuildPage(Plugin, this, ClientManager, DonationManager, player);
|
||||
return new ArmorPage(Plugin, this, ClientManager, DonationManager, player, Purchasing);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ShopPageBase<ClassShopManager, ? extends ShopBase<ClassShopManager>> GetOpeningPageForPlayer(Player player)
|
||||
{
|
||||
return new CustomBuildPage(Plugin, this, ClientManager, DonationManager, player);
|
||||
return new ArmorPage(Plugin, this, ClientManager, DonationManager, player, Purchasing);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -3,24 +3,49 @@ package mineplex.servermonitor;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class GroupStatusData
|
||||
{
|
||||
public String Name;
|
||||
public int EmptyServers;
|
||||
private int _totalCount = 0;
|
||||
private int _joinableCount = 0;
|
||||
|
||||
public int Players;
|
||||
public int MaxPlayers;
|
||||
|
||||
public List<ServerStatusData> Servers = new ArrayList<ServerStatusData>();
|
||||
|
||||
|
||||
public void addServer(ServerStatusData serverStatusData)
|
||||
{
|
||||
Players += serverStatusData.Players;
|
||||
MaxPlayers += serverStatusData.MaxPlayers;
|
||||
|
||||
if (serverStatusData.Motd.contains("Starting") || serverStatusData.Motd.contains("Recruiting") || serverStatusData.Motd.contains("Waiting") || serverStatusData.Motd.contains("Cup") || serverStatusData.Motd.isEmpty() || serverStatusData.Motd.equals(""))
|
||||
{
|
||||
if (serverStatusData.Players < serverStatusData.MaxPlayers)
|
||||
{
|
||||
if (serverStatusData.Motd.isEmpty() || serverStatusData.Motd.equals(""))
|
||||
{
|
||||
if (serverStatusData.Players / serverStatusData.MaxPlayers < .9)
|
||||
_joinableCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
_joinableCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (serverStatusData.Players == 0)
|
||||
EmptyServers++;
|
||||
_totalCount++;
|
||||
|
||||
Servers.add(serverStatusData);
|
||||
}
|
||||
|
||||
public int getTotalServers()
|
||||
{
|
||||
return _totalCount;
|
||||
}
|
||||
|
||||
public int getJoinableCount()
|
||||
{
|
||||
return _joinableCount;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,9 @@ import java.sql.DriverManager;
|
|||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -16,12 +18,14 @@ public class Repository
|
|||
private String _userName = "root";
|
||||
private String _password = "y2D4atu3Pene2asw";
|
||||
|
||||
private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ServerStatus (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), serverGroup VARCHAR(256), address VARCHAR(256), updated LONG, motd VARCHAR(256), players INT, maxPlayers INT, tps INT, ram INT, maxRam INT, PRIMARY KEY (id));";
|
||||
private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ServerStatus (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), serverGroup VARCHAR(256), address VARCHAR(256), updated LONG, lastTimeWithPlayers LONG, motd VARCHAR(256), players INT, maxPlayers INT, tps INT, ram INT, maxRam INT, PRIMARY KEY (id));";
|
||||
private static String RETRIEVE_OLD_SERVER_STATUSES = "SELECT serverName, address, motd, players, maxPlayers FROM ServerStatus WHERE TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) > 10;";
|
||||
|
||||
private static String CREATE_DYNAMIC_TABLE = "CREATE TABLE IF NOT EXISTS DynamicServers (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), address VARCHAR(256), PRIMARY KEY (id));";
|
||||
private static String RETRIEVE_AVAILABLE_SERVERS = "SELECT serverName, address FROM DynamicServers;";
|
||||
private static String RETRIEVE_SERVERGROUP_STATUSES = "SELECT serverName, serverGroup, address, players, maxPlayers FROM ServerStatus WHERE TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) <= 10;";
|
||||
private static String RETRIEVE_AVAILABLE_SERVERS = "SELECT `DynamicServers`.`serverName`, `DynamicServers`.`address`, `ServerStatus`.`serverGroup`, COUNT(*) As serverCount FROM `DynamicServers` INNER JOIN `ServerStatus` ON `ServerStatus`.`address` LIKE CONCAT(`DynamicServers`.`address`, '%') GROUP BY `DynamicServers`.`address`, `ServerStatus`.`serverGroup`";
|
||||
private static String RETRIEVE_SERVERGROUP_STATUSES = "SELECT serverName, serverGroup, address, players, maxPlayers, lastTimeWithPlayers FROM ServerStatus WHERE TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) <= 10;";
|
||||
private static String RETRIEVE_SERVER_GROUP_DATA = "SELECT groupName, scriptName, requiredRam, cpuRequired, requiredTotal, requiredJoinable FROM ServerGroups;";
|
||||
|
||||
|
||||
public void initialize()
|
||||
{
|
||||
|
@ -196,7 +200,7 @@ public class Repository
|
|||
ResultSet resultSet = null;
|
||||
PreparedStatement preparedStatement = null;
|
||||
HashMap<String, GroupStatusData> groupData = new HashMap<String, GroupStatusData>();
|
||||
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try
|
||||
{
|
||||
connection = DriverManager.getConnection(_connectionString, _userName, _password);
|
||||
|
@ -215,6 +219,7 @@ public class Repository
|
|||
serverStatusData.Port = Integer.parseInt(addressPortString.split(":")[1]);
|
||||
serverStatusData.Players = resultSet.getInt(4);
|
||||
serverStatusData.MaxPlayers = resultSet.getInt(5);
|
||||
serverStatusData.LastTimeWithPlayers = dateFormat.parse(resultSet.getString(6)).getTime();
|
||||
|
||||
if (!groupData.containsKey(serverGroup))
|
||||
{
|
||||
|
@ -270,17 +275,36 @@ public class Repository
|
|||
return groupData;
|
||||
}
|
||||
|
||||
public List<DynamicServerData> retrieveDynamicServers()
|
||||
public Collection<DynamicServerData> retrieveDynamicServers()
|
||||
{
|
||||
Connection connection = null;
|
||||
ResultSet resultSet = null;
|
||||
PreparedStatement preparedStatement = null;
|
||||
List<DynamicServerData> serverData = new ArrayList<DynamicServerData>();
|
||||
HashMap<String, DynamicServerData> serverMap = new HashMap<String, DynamicServerData>();
|
||||
HashMap<String, ServerGroupData> serverGroupMap = new HashMap<String, ServerGroupData>();
|
||||
|
||||
try
|
||||
{
|
||||
connection = DriverManager.getConnection(_connectionString, _userName, _password);
|
||||
|
||||
preparedStatement = connection.prepareStatement(RETRIEVE_SERVER_GROUP_DATA);
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
|
||||
while (resultSet.next())
|
||||
{
|
||||
ServerGroupData serverGroupData = new ServerGroupData();
|
||||
|
||||
serverGroupData.Name = resultSet.getString(1);
|
||||
serverGroupData.ScriptName = resultSet.getString(2);
|
||||
serverGroupData.RequiredRAM = resultSet.getInt(3);
|
||||
serverGroupData.RequiredCPU = resultSet.getInt(4);
|
||||
serverGroupData.RequiredTotalServers = resultSet.getInt(5);
|
||||
serverGroupData.RequiredJoinableServers = resultSet.getInt(6);
|
||||
|
||||
if (!serverGroupMap.containsKey(serverGroupData.Name))
|
||||
serverGroupMap.put(serverGroupData.Name, serverGroupData);
|
||||
}
|
||||
|
||||
preparedStatement = connection.prepareStatement(RETRIEVE_AVAILABLE_SERVERS);
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
|
||||
|
@ -291,7 +315,12 @@ public class Repository
|
|||
dynamicServer.Name = resultSet.getString(1);
|
||||
dynamicServer.Address = resultSet.getString(2);
|
||||
|
||||
serverData.add(dynamicServer);
|
||||
if (!serverMap.containsKey(dynamicServer.Name))
|
||||
serverMap.put(dynamicServer.Name, dynamicServer);
|
||||
|
||||
String serverGroupName = resultSet.getString(3);
|
||||
if (serverGroupMap.containsKey(serverGroupName))
|
||||
serverMap.get(dynamicServer.Name).setServerGroupCount(serverGroupMap.get(serverGroupName), resultSet.getInt(4));
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
|
@ -337,6 +366,6 @@ public class Repository
|
|||
}
|
||||
}
|
||||
|
||||
return serverData;
|
||||
return serverMap.values();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,9 @@ package mineplex.servermonitor;
|
|||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
|
@ -58,89 +61,10 @@ public class ServerMonitor
|
|||
*/
|
||||
if (_count % 10 == 0)
|
||||
{
|
||||
List<DynamicServerData> dynamicServers = _repository.retrieveDynamicServers();
|
||||
Collection<DynamicServerData> dynamicServers = _repository.retrieveDynamicServers();
|
||||
List<ServerTargetData> targetList = new ArrayList<ServerTargetData>();
|
||||
HashMap<String, GroupStatusData> groupStatusList = _repository.retrieveGroupStatusData();
|
||||
|
||||
|
||||
|
||||
for (DynamicServerData dynamicServer : dynamicServers)
|
||||
{
|
||||
Process process = null;
|
||||
|
||||
try
|
||||
{
|
||||
process = new ProcessBuilder(new String[] {"/bin/sh", "-x", "/home/mineplex/retrieveRemoteFreeMemory.sh", dynamicServer.Address }).start();
|
||||
process.waitFor();
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
||||
String line = reader.readLine();
|
||||
|
||||
if (line != null)
|
||||
{
|
||||
dynamicServer.FreeRam = Integer.parseInt(line) / 1024;
|
||||
System.out.println(dynamicServer.Name + " has " + dynamicServer.FreeRam + "KB of free ram.");
|
||||
}
|
||||
|
||||
process = new ProcessBuilder(new String[] {"/bin/sh", "-x", "/home/mineplex/retrieveServerCount.sh", dynamicServer.Address }).start();
|
||||
process.waitFor();
|
||||
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
||||
line = reader.readLine();
|
||||
|
||||
int serverCount = 0;
|
||||
|
||||
while (line != null)
|
||||
{
|
||||
serverCount++;
|
||||
line = reader.readLine();
|
||||
}
|
||||
|
||||
dynamicServer.ServerCount = serverCount;
|
||||
System.out.println(dynamicServer.Name + " has " + dynamicServer.ServerCount + " servers running.");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (process != null)
|
||||
{
|
||||
process.destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (Entry<String, GroupStatusData> statusEntry : _repository.retrieveGroupStatusData().entrySet())
|
||||
{
|
||||
GroupStatusData groupData = statusEntry.getValue();
|
||||
|
||||
Process process = null;
|
||||
|
||||
try
|
||||
{
|
||||
process = new ProcessBuilder(new String[] {"/bin/sh", "-x", "/home/mineplex/retrieveRemoteFreeMemory.sh", "208.115.216.114" }).start();
|
||||
process.waitFor();
|
||||
BufferedReader reader=new BufferedReader(new InputStreamReader(process.getInputStream()));
|
||||
String line = reader.readLine();
|
||||
|
||||
while(line != null)
|
||||
{
|
||||
|
||||
line=reader.readLine();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (process != null)
|
||||
{
|
||||
process.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
//System.out.println("Sent restart command to " + key + "");
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
|
|
|
@ -8,4 +8,5 @@ public class ServerStatusData
|
|||
public int MaxPlayers;
|
||||
public String Address;
|
||||
public int Port;
|
||||
public long LastTimeWithPlayers;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue