Work on Dynamic server monitor.
This commit is contained in:
parent
08497e474d
commit
b9560cf4da
@ -293,4 +293,19 @@
|
||||
</jar>
|
||||
<copy file="../bin/Mineplexer.jar" todir="../../Testing/Proxy/plugins"/>
|
||||
</target>
|
||||
<target name ="ServerMonitor" description="ServerMonitor">
|
||||
<jar jarfile="../bin/ServerMonitor.jar">
|
||||
<fileset dir="../Mineplex.ServerMonitor/bin">
|
||||
<include name="**/*.class"/>
|
||||
</fileset>
|
||||
|
||||
<zipfileset src="../Libraries/mysql.zip" />
|
||||
|
||||
<manifest>
|
||||
<attribute name="Main-Class"
|
||||
value="mineplex.servermonitor.ServerMonitor"/>
|
||||
</manifest>
|
||||
</jar>
|
||||
<copy file="../bin/ServerMonitor.jar" todir="../../Testing/ServerMonitor/"/>
|
||||
</target>
|
||||
</project>
|
@ -1,483 +0,0 @@
|
||||
package me.chiss.Core.ClientData;
|
||||
|
||||
import java.util.AbstractMap;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
|
||||
import me.chiss.Core.Class.IPvpClass;
|
||||
import me.chiss.Core.Skill.ISkill;
|
||||
import me.chiss.Core.Skill.ISkill.SkillType;
|
||||
import mineplex.core.account.CoreClient;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.minecraft.game.core.classcombat.Class.IPvpClass.ClassType;
|
||||
import mineplex.minecraft.game.core.classcombat.Class.repository.token.CustomBuildToken;
|
||||
|
||||
public class ClientClass extends ClientDataBase<Object> implements IClientClass
|
||||
{
|
||||
//Class and Skills
|
||||
private IPvpClass _gameClass;
|
||||
private HashMap<SkillType, Entry<ISkill, Integer>> _skillMap;
|
||||
|
||||
//Temp
|
||||
private IPvpClass _lastClass;
|
||||
private ItemStack[] _lastArmor;
|
||||
private HashMap<Integer, ItemStack> _lastItems;
|
||||
private HashMap<SkillType, Entry<ISkill, Integer>> _lastSkillMap;
|
||||
|
||||
public ClientClass(CoreClient client)
|
||||
{
|
||||
super(client, "Class", null);
|
||||
|
||||
_lastItems = new HashMap<Integer, ItemStack>();
|
||||
_lastArmor = new ItemStack[4];
|
||||
_lastSkillMap = new HashMap<SkillType, Entry<ISkill, Integer>>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Load()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void LoadToken(Object token)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String GetName()
|
||||
{
|
||||
return Client.GetPlayerName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ResetToDefaults(boolean equipItems, boolean equipDefaultArmor)
|
||||
{
|
||||
if (equipDefaultArmor)
|
||||
{
|
||||
if (_lastArmor[3] != null)
|
||||
GetInventory().setHelmet(_lastArmor[3].clone());
|
||||
|
||||
if (_lastArmor[2] != null)
|
||||
GetInventory().setChestplate(_lastArmor[2].clone());
|
||||
|
||||
if (_lastArmor[1] != null)
|
||||
GetInventory().setLeggings(_lastArmor[1].clone());
|
||||
|
||||
if (_lastArmor[0] != null)
|
||||
GetInventory().setBoots(_lastArmor[0].clone());
|
||||
}
|
||||
|
||||
if (equipItems)
|
||||
{
|
||||
for (Entry<Integer, ItemStack> defaultItem : _lastItems.entrySet())
|
||||
{
|
||||
GetInventory().setItem(defaultItem.getKey(), (defaultItem.getValue() == null ? new ItemStack(Material.AIR) : defaultItem.getValue().clone()));
|
||||
}
|
||||
}
|
||||
|
||||
SetGameClass(_lastClass, false);
|
||||
|
||||
NewSkills();
|
||||
for (Entry<SkillType, Entry<ISkill, Integer>> entry : _lastSkillMap.entrySet())
|
||||
AddSkill(entry.getValue().getKey(), entry.getValue().getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetGameClass(IPvpClass gameClass)
|
||||
{
|
||||
SetGameClass(gameClass, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetGameClass(IPvpClass gameClass, boolean addDefaultSkills)
|
||||
{
|
||||
ClearSkills();
|
||||
|
||||
_gameClass = gameClass;
|
||||
|
||||
if (_gameClass == null)
|
||||
return;
|
||||
|
||||
//Load Saved
|
||||
if (Client.Manager.Classes().GetRestore().IsActive())
|
||||
{
|
||||
Collection<Entry<ISkill, Integer>> skills = Client.Manager.Classes().GetRestore().GetBuild(Client.GetPlayerName(), gameClass);
|
||||
|
||||
if (skills != null)
|
||||
{
|
||||
for (Entry<ISkill, Integer> skill : skills)
|
||||
AddSkill(skill.getKey(), skill.getValue());
|
||||
|
||||
//Inform
|
||||
UtilPlayer.message(Client.GetPlayer(), F.main("Class", "Armor Class: " + F.oo(_gameClass.GetName(), true)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
_lastClass = gameClass;
|
||||
|
||||
for (ISkill cur : gameClass.GetDefaultSkills().keySet())
|
||||
{
|
||||
if (addDefaultSkills || cur.GetSkillType() == SkillType.Class)
|
||||
AddSkill(cur, gameClass.GetDefaultSkills().get(cur));
|
||||
}
|
||||
|
||||
//Inform
|
||||
UtilPlayer.message(Client.GetPlayer(), F.main("Class", "Armor Class: " + F.oo(_gameClass.GetName(), true)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPvpClass GetGameClass()
|
||||
{
|
||||
return _gameClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ClearDefaults()
|
||||
{
|
||||
_lastItems.clear();
|
||||
_lastArmor = new ItemStack[4];
|
||||
_lastSkillMap.clear();
|
||||
}
|
||||
|
||||
public String GetGameClassTag()
|
||||
{
|
||||
IPvpClass gameClass = GetGameClass();
|
||||
if (gameClass == null) return "";
|
||||
return gameClass.GetName().charAt(0)+".";
|
||||
}
|
||||
|
||||
public void NewSkills()
|
||||
{
|
||||
ClearSkills();
|
||||
_skillMap = new HashMap<SkillType, Entry<ISkill, Integer>>();
|
||||
}
|
||||
|
||||
public void ClearSkills()
|
||||
{
|
||||
if (_skillMap != null)
|
||||
for (Entry<ISkill, Integer> entry : _skillMap.values())
|
||||
entry.getKey().RemoveUser(Client.GetPlayer());
|
||||
|
||||
_skillMap = null;
|
||||
}
|
||||
|
||||
public void AddSkill(String skillName, int level)
|
||||
{
|
||||
ISkill skill = Client.Manager.Skills().GetSkill(skillName);
|
||||
if (skill == null)
|
||||
return;
|
||||
|
||||
AddSkill(skill, level);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void AddSkill(ISkill skill, int level)
|
||||
{
|
||||
if (level <= 0)
|
||||
return;
|
||||
|
||||
if (_skillMap == null)
|
||||
_skillMap = new HashMap<SkillType, Entry<ISkill, Integer>>();
|
||||
|
||||
if (_skillMap.get(skill.GetSkillType()) != null)
|
||||
_skillMap.get(skill.GetSkillType()).getKey().RemoveUser(Client.GetPlayer());
|
||||
|
||||
_skillMap.put(skill.GetSkillType(), new AbstractMap.SimpleEntry<ISkill, Integer>(skill, level));
|
||||
_lastSkillMap.put(skill.GetSkillType(), new AbstractMap.SimpleEntry<ISkill, Integer>(skill, level));
|
||||
|
||||
skill.AddUser(Client.GetPlayer(), level);
|
||||
|
||||
//Save
|
||||
if (Client.Manager.Classes().GetRestore().IsActive())
|
||||
Client.Manager.Classes().GetRestore().SaveBuild(Client.GetPlayerName(), _gameClass, GetSkills());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void RemoveSkill(ISkill skill)
|
||||
{
|
||||
if (skill == null)
|
||||
return;
|
||||
|
||||
if (_skillMap == null)
|
||||
return;
|
||||
|
||||
_skillMap.remove(skill.GetSkillType());
|
||||
_lastSkillMap.remove(skill.GetSkillType());
|
||||
|
||||
skill.RemoveUser(Client.GetPlayer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Entry<ISkill, Integer>> GetSkills()
|
||||
{
|
||||
if (_skillMap == null)
|
||||
_skillMap = new HashMap<SkillType, Entry<ISkill, Integer>>();
|
||||
|
||||
return _skillMap.values();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Entry<ISkill, Integer>> GetDefaultSkills()
|
||||
{
|
||||
return _lastSkillMap.values();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ResetSkills()
|
||||
{
|
||||
for (Entry<ISkill, Integer> entry : GetSkills())
|
||||
{
|
||||
entry.getKey().Reset(Client.GetPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearDefaultSkills()
|
||||
{
|
||||
_lastSkillMap = new HashMap<SkillType, Entry<ISkill, Integer>>();
|
||||
}
|
||||
|
||||
public boolean IsGameClass(ClassType type)
|
||||
{
|
||||
if (GetGameClass() == null)
|
||||
return false;
|
||||
|
||||
return GetGameClass().GetType() == type;
|
||||
}
|
||||
|
||||
public ISkill GetSkillByType(SkillType skillType)
|
||||
{
|
||||
if (_skillMap == null)
|
||||
_skillMap = new HashMap<SkillType, Entry<ISkill, Integer>>();
|
||||
|
||||
if (_skillMap.containsKey(skillType))
|
||||
return _skillMap.get(skillType).getKey();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public int GetSkillLevel(ISkill skill)
|
||||
{
|
||||
//No Class
|
||||
if (_skillMap == null)
|
||||
return 0;
|
||||
|
||||
if (_skillMap.containsKey(skill.GetSkillType()) && _skillMap.get(skill.GetSkillType()).getKey() == skill)
|
||||
return _skillMap.get(skill.GetSkillType()).getValue();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void SetSkillLevel(ISkill skill, int level)
|
||||
{
|
||||
_skillMap.put(skill.GetSkillType(), new AbstractMap.SimpleEntry<ISkill, Integer>(skill, level));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerInventory GetInventory()
|
||||
{
|
||||
if (Client.GetPlayer() == null)
|
||||
return null;
|
||||
|
||||
return Client.GetPlayer().getInventory();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void OpenInventory(Inventory skillsCategory)
|
||||
{
|
||||
if (Client.GetPlayer() == null)
|
||||
return;
|
||||
|
||||
Client.GetPlayer().openInventory(skillsCategory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void CloseInventory()
|
||||
{
|
||||
if (Client.GetPlayer() == null)
|
||||
return;
|
||||
|
||||
Client.GetPlayer().closeInventory();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public void UpdateInventory()
|
||||
{
|
||||
if (Client.GetPlayer() == null)
|
||||
return;
|
||||
|
||||
Client.GetPlayer().updateInventory();
|
||||
}
|
||||
|
||||
public void ListSkills(Player caller)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Skill", "Listing Class Skills;"));
|
||||
|
||||
for (SkillType type : SkillType.values())
|
||||
if (caller.isOp() || type != SkillType.Class)
|
||||
if (_skillMap.containsKey(type))
|
||||
UtilPlayer.message(caller, F.desc(type.toString(), _skillMap.get(type).getKey().GetName() + " " + F.elem(_skillMap.get(type).getValue() + "/" + _skillMap.get(type).getKey().GetMaxLevel())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void AddDefaultArmor(ItemStack[] armorContents)
|
||||
{
|
||||
_lastArmor = armorContents;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void PutDefaultItem(ItemStack deliverable, int slot)
|
||||
{
|
||||
_lastItems.put(slot, deliverable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] GetDefaultArmor()
|
||||
{
|
||||
if (_lastArmor[0] == null || _lastArmor[1] == null || _lastArmor[2] == null || _lastArmor[3] == null)
|
||||
return new ItemStack[4];
|
||||
|
||||
ItemStack[] armorReturn = new ItemStack[4];
|
||||
|
||||
armorReturn[3] = _lastArmor[3].clone();
|
||||
armorReturn[2] = _lastArmor[2].clone();
|
||||
armorReturn[1] = _lastArmor[1].clone();
|
||||
armorReturn[0] = _lastArmor[0].clone();
|
||||
|
||||
return armorReturn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<Integer, ItemStack> GetDefaultItems()
|
||||
{
|
||||
return _lastItems;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetDefaultHead(ItemStack armor)
|
||||
{
|
||||
_lastArmor[3] = armor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetDefaultChest(ItemStack armor)
|
||||
{
|
||||
_lastArmor[2] = armor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetDefaultLegs(ItemStack armor)
|
||||
{
|
||||
_lastArmor[1] = armor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetDefaultFeet(ItemStack armor)
|
||||
{
|
||||
_lastArmor[0] = armor;
|
||||
}
|
||||
|
||||
public void EquipCustomBuild(CustomBuildToken customBuild)
|
||||
{
|
||||
EquipCustomBuild(customBuild, true, true);
|
||||
}
|
||||
|
||||
public void EquipCustomBuild(CustomBuildToken customBuild, boolean equipItems, boolean equipDefaultArmor)
|
||||
{
|
||||
_lastClass = Client.Manager.Classes().GetClass(customBuild.PvpClassId);
|
||||
|
||||
if (_lastClass == null)
|
||||
return;
|
||||
|
||||
_lastSkillMap.remove(SkillType.Class);
|
||||
|
||||
if (equipDefaultArmor)
|
||||
{
|
||||
SetDefaultHead(ItemStackFactory.Instance.CreateStack(_lastClass.GetHead()));
|
||||
SetDefaultChest(ItemStackFactory.Instance.CreateStack(_lastClass.GetChestplate()));
|
||||
SetDefaultLegs(ItemStackFactory.Instance.CreateStack(_lastClass.GetLeggings()));
|
||||
SetDefaultFeet(ItemStackFactory.Instance.CreateStack(_lastClass.GetBoots()));
|
||||
}
|
||||
|
||||
if (equipItems)
|
||||
{
|
||||
for (int i=0; i < 9; i++)
|
||||
{
|
||||
if (customBuild.Slots == null || customBuild.Slots.size() <= i || customBuild.Slots.get(i).Material == "AIR" || customBuild.Slots.get(i).Material == "NULL")
|
||||
_lastItems.put(i, null);
|
||||
else
|
||||
{
|
||||
/*
|
||||
if (ItemFactory.Instance.GetItem(customBuild.Slots.get(i).Material) != null)
|
||||
_lastItems.put(i, ItemFactory.Instance.GetItem(customBuild.Slots.get(i).Material).);
|
||||
*/
|
||||
_lastItems.put(i, ItemStackFactory.Instance.CreateStack(Material.getMaterial(customBuild.Slots.get(i).Material), customBuild.Slots.get(i).Amount));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (customBuild.SwordSkillId != -1)
|
||||
_lastSkillMap.put(SkillType.Sword, Client.Manager.Skills().GetSkillBySalesPackageId(customBuild.SwordSkillId));
|
||||
else
|
||||
_lastSkillMap.remove(SkillType.Sword);
|
||||
|
||||
if (customBuild.AxeSkillId != -1)
|
||||
_lastSkillMap.put(SkillType.Axe, Client.Manager.Skills().GetSkillBySalesPackageId(customBuild.AxeSkillId));
|
||||
else
|
||||
_lastSkillMap.remove(SkillType.Axe);
|
||||
|
||||
if (customBuild.BowSkillId != -1)
|
||||
_lastSkillMap.put(SkillType.Bow, Client.Manager.Skills().GetSkillBySalesPackageId(customBuild.BowSkillId));
|
||||
else
|
||||
_lastSkillMap.remove(SkillType.Bow);
|
||||
|
||||
if (customBuild.ClassPassiveASkillId != -1)
|
||||
_lastSkillMap.put(SkillType.PassiveA, Client.Manager.Skills().GetSkillBySalesPackageId(customBuild.ClassPassiveASkillId));
|
||||
else
|
||||
_lastSkillMap.remove(SkillType.PassiveA);
|
||||
|
||||
if (customBuild.ClassPassiveBSkillId != -1)
|
||||
_lastSkillMap.put(SkillType.PassiveB, Client.Manager.Skills().GetSkillBySalesPackageId(customBuild.ClassPassiveBSkillId));
|
||||
else
|
||||
_lastSkillMap.remove(SkillType.PassiveB);
|
||||
|
||||
if (customBuild.GlobalPassiveASkillId != -1)
|
||||
_lastSkillMap.put(SkillType.PassiveC, Client.Manager.Skills().GetSkillBySalesPackageId(customBuild.GlobalPassiveASkillId));
|
||||
else
|
||||
_lastSkillMap.remove(SkillType.PassiveC);
|
||||
|
||||
if (customBuild.GlobalPassiveBSkillId != -1)
|
||||
_lastSkillMap.put(SkillType.PassiveD, Client.Manager.Skills().GetSkillBySalesPackageId(customBuild.GlobalPassiveBSkillId));
|
||||
else
|
||||
_lastSkillMap.remove(SkillType.PassiveD);
|
||||
|
||||
if (customBuild.GlobalPassiveCSkillId != -1)
|
||||
_lastSkillMap.put(SkillType.PassiveE, Client.Manager.Skills().GetSkillBySalesPackageId(customBuild.GlobalPassiveCSkillId));
|
||||
else
|
||||
_lastSkillMap.remove(SkillType.PassiveE);
|
||||
|
||||
ResetToDefaults(equipItems, equipDefaultArmor);
|
||||
|
||||
Client.Donor().SetTokens(customBuild.SkillTokensBalance, customBuild.ItemTokensBalance);
|
||||
|
||||
ListSkills(Client.GetPlayer());
|
||||
Client.GetPlayer().getWorld().playSound(Client.GetPlayer().getLocation(), Sound.LEVEL_UP, 1f, 1f);
|
||||
|
||||
Client.GetPlayer().sendMessage(F.main("Class", "You equipped " + F.skill(customBuild.Name) + "."));
|
||||
}
|
||||
}
|
@ -43,7 +43,6 @@ public class LobbyBalancer implements Listener, Runnable
|
||||
|
||||
synchronized (_serverLock)
|
||||
{
|
||||
long timeStart = System.currentTimeMillis();
|
||||
if (_playersSentToBestServer >= _maxPlayersToSendToBestServer)
|
||||
{
|
||||
_playersSentToBestServer = 0;
|
||||
|
@ -1,6 +0,0 @@
|
||||
package mineplex.servermonitor;
|
||||
|
||||
public class DynamicMonitor
|
||||
{
|
||||
|
||||
}
|
@ -3,11 +3,24 @@ package mineplex.servermonitor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class GroupStatusData
|
||||
{
|
||||
public String Name;
|
||||
public int EmptyServers;
|
||||
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.Players == 0)
|
||||
EmptyServers++;
|
||||
|
||||
Servers.add(serverStatusData);
|
||||
}
|
||||
}
|
||||
|
@ -6,8 +6,10 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class Repository
|
||||
{
|
||||
private String _connectionString = "jdbc:mysql://localhost:3306/ServerStatus";
|
||||
@ -16,7 +18,10 @@ public class Repository
|
||||
|
||||
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 RETRIEVE_OLD_SERVER_STATUSES = "SELECT serverName, address, motd, players, maxPlayers FROM ServerStatus WHERE TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.updated)) > 10;";
|
||||
private static String RETRIEVE_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;";
|
||||
|
||||
public void initialize()
|
||||
{
|
||||
@ -63,6 +68,50 @@ public class Repository
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
connection = null;
|
||||
preparedStatement = null;
|
||||
|
||||
try
|
||||
{
|
||||
Class.forName("com.mysql.jdbc.Driver");
|
||||
|
||||
connection = DriverManager.getConnection(_connectionString, _userName, _password);
|
||||
|
||||
// Create table
|
||||
preparedStatement = connection.prepareStatement(CREATE_DYNAMIC_TABLE);
|
||||
preparedStatement.execute();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (preparedStatement != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
preparedStatement.close();
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (connection != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
connection.close();
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<ServerStatusData> retrieveOldServerStatuses()
|
||||
@ -141,18 +190,18 @@ public class Repository
|
||||
return serverData;
|
||||
}
|
||||
|
||||
public List<GroupStatusData> retrieveGroupStatusData()
|
||||
public HashMap<String, GroupStatusData> retrieveGroupStatusData()
|
||||
{
|
||||
Connection connection = null;
|
||||
ResultSet resultSet = null;
|
||||
PreparedStatement preparedStatement = null;
|
||||
List<GroupStatusData> groupData = new ArrayList<GroupStatusData>();
|
||||
HashMap<String, GroupStatusData> groupData = new HashMap<String, GroupStatusData>();
|
||||
|
||||
try
|
||||
{
|
||||
connection = DriverManager.getConnection(_connectionString, _userName, _password);
|
||||
|
||||
preparedStatement = connection.prepareStatement(RETRIEVE_SERVER_STATUSES);
|
||||
preparedStatement = connection.prepareStatement(RETRIEVE_SERVERGROUP_STATUSES);
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
|
||||
while (resultSet.next())
|
||||
@ -160,15 +209,89 @@ public class Repository
|
||||
ServerStatusData serverStatusData = new ServerStatusData();
|
||||
|
||||
serverStatusData.Name = resultSet.getString(1);
|
||||
|
||||
String addressPortString = resultSet.getString(2);
|
||||
String serverGroup = resultSet.getString(2);
|
||||
String addressPortString = resultSet.getString(3);
|
||||
serverStatusData.Address = addressPortString.split(":")[0];
|
||||
serverStatusData.Port = Integer.parseInt(addressPortString.split(":")[1]);
|
||||
serverStatusData.Motd = resultSet.getString(3);
|
||||
serverStatusData.Players = resultSet.getInt(4);
|
||||
serverStatusData.MaxPlayers = resultSet.getInt(5);
|
||||
|
||||
serverData.add(serverStatusData);
|
||||
if (!groupData.containsKey(serverGroup))
|
||||
{
|
||||
groupData.put(serverGroup, new GroupStatusData());
|
||||
}
|
||||
|
||||
groupData.get(serverGroup).addServer(serverStatusData);
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (preparedStatement != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
preparedStatement.close();
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (resultSet != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
resultSet.close();
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (connection != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
connection.close();
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return groupData;
|
||||
}
|
||||
|
||||
public List<DynamicServerData> retrieveDynamicServers()
|
||||
{
|
||||
Connection connection = null;
|
||||
ResultSet resultSet = null;
|
||||
PreparedStatement preparedStatement = null;
|
||||
List<DynamicServerData> serverData = new ArrayList<DynamicServerData>();
|
||||
|
||||
try
|
||||
{
|
||||
connection = DriverManager.getConnection(_connectionString, _userName, _password);
|
||||
|
||||
preparedStatement = connection.prepareStatement(RETRIEVE_AVAILABLE_SERVERS);
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
|
||||
while (resultSet.next())
|
||||
{
|
||||
DynamicServerData dynamicServer = new DynamicServerData();
|
||||
|
||||
dynamicServer.Name = resultSet.getString(1);
|
||||
dynamicServer.Address = resultSet.getString(2);
|
||||
|
||||
serverData.add(dynamicServer);
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
|
@ -2,6 +2,9 @@ package mineplex.servermonitor;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
|
||||
public class ServerMonitor
|
||||
{
|
||||
@ -14,6 +17,7 @@ public class ServerMonitor
|
||||
|
||||
while (true)
|
||||
{
|
||||
/*
|
||||
if (_count % 20 == 0)
|
||||
{
|
||||
for (ServerStatusData statusData : _repository.retrieveOldServerStatuses())
|
||||
@ -51,27 +55,74 @@ public class ServerMonitor
|
||||
System.out.println("Sent restart command to " + key + "");
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
if (_count % 10 == 0)
|
||||
{
|
||||
HashMap<String, GroupStatusData>
|
||||
for (ServerStatusData statusData : _repository.retrieveGroupStatusData())
|
||||
{
|
||||
String key = statusData.Address + " " + statusData.Name;
|
||||
List<DynamicServerData> dynamicServers = _repository.retrieveDynamicServers();
|
||||
|
||||
String cmd = "/home/mineplex/restartServer.sh";
|
||||
for (DynamicServerData dynamicServer : dynamicServers)
|
||||
{
|
||||
Process process = null;
|
||||
|
||||
try
|
||||
{
|
||||
process = new ProcessBuilder(new String[] {"/bin/sh", "-x", cmd, statusData.Address, statusData.Name}).start();
|
||||
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)
|
||||
{
|
||||
System.out.println(line);
|
||||
|
||||
line=reader.readLine();
|
||||
}
|
||||
}
|
||||
@ -87,8 +138,9 @@ public class ServerMonitor
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("Sent restart command to " + key + "");
|
||||
//System.out.println("Sent restart command to " + key + "");
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
try
|
||||
|
Loading…
Reference in New Issue
Block a user