/*
* This file is part of aion-unique <aion-unique.org>.
*
* aion-unique 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 3 of the License, or
* (at your option) any later version.
*
* aion-unique 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 aion-unique. If not, see <http://www.gnu.org/licenses/>.
*/
package admincommands;
import java.lang.reflect.Field;
import com.aionemu.gameserver.configs.administration.AdminConfig;
import com.aionemu.gameserver.configs.main.CacheConfig;
import com.aionemu.gameserver.configs.main.CustomConfig;
import com.aionemu.gameserver.configs.main.GSConfig;
import com.aionemu.gameserver.configs.main.GroupConfig;
import com.aionemu.gameserver.configs.main.LegionConfig;
import com.aionemu.gameserver.configs.main.PeriodicSaveConfig;
import com.aionemu.gameserver.configs.main.RateConfig;
import com.aionemu.gameserver.configs.main.ShutdownConfig;
import com.aionemu.gameserver.configs.main.TaskManagerConfig;
import com.aionemu.gameserver.configs.network.IPConfig;
import com.aionemu.gameserver.configs.network.NetworkConfig;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.utils.PacketSendUtility;
import com.aionemu.gameserver.utils.chathandlers.AdminCommand;
/**
* @author ATracer
*
*/
public class Configure extends AdminCommand
{
public Configure()
{
super("configure");
}
@SuppressWarnings("unchecked")
@Override
public void executeCommand(Player admin, String[] params)
{
if(admin.getAccessLevel() < AdminConfig.COMMAND_CONFIGURE)
{
PacketSendUtility.sendMessage(admin, "You dont have enough rights to execute this command");
return;
}
String command = "";
if(params.length == 3)
{
//show
command = params[0];
if(!"show".equalsIgnoreCase(command))
{
PacketSendUtility.sendMessage(admin, "syntax //configure <set|show> <configname> <property> [<newvalue>]");
return;
}
}else if(params.length == 4)
{
//set
command = params[0];
if(!"set".equalsIgnoreCase(command))
{
PacketSendUtility.sendMessage(admin, "syntax //configure <set|show> <configname> <property> [<newvalue>]");
return;
}
}
else
{
PacketSendUtility.sendMessage(admin, "syntax //configure <set|show> <configname> <property> [<newvalue>]");
return;
}
Class classToMofify = null;
String className = params[1];
if("admin".equalsIgnoreCase(className))
{
classToMofify = AdminConfig.class;
}
else if("cache".equalsIgnoreCase(className))
{
classToMofify = CacheConfig.class;
}
else if("custom".equalsIgnoreCase(className))
{
classToMofify = CustomConfig.class;
}
else if("group".equalsIgnoreCase(className))
{
classToMofify = GroupConfig.class;
}
else if("gs".equalsIgnoreCase(className))
{
classToMofify = GSConfig.class;
}
else if("legion".equalsIgnoreCase(className))
{
classToMofify = LegionConfig.class;
}
else if("ps".equalsIgnoreCase(className))
{
classToMofify = PeriodicSaveConfig.class;
}
else if("rate".equalsIgnoreCase(className))
{
classToMofify = RateConfig.class;
}
else if("shutdown".equalsIgnoreCase(className))
{
classToMofify = ShutdownConfig.class;
}
else if("tm".equalsIgnoreCase(className))
{
classToMofify = TaskManagerConfig.class;
}
else if("ip".equalsIgnoreCase(className))
{
classToMofify = IPConfig.class;
}
else if("network".equalsIgnoreCase(className))
{
classToMofify = NetworkConfig.class;
}
if(command.equalsIgnoreCase("show"))
{
String fieldName = params[2];
Field someField;
try
{
someField = classToMofify.getDeclaredField(fieldName.toUpperCase());
PacketSendUtility.sendMessage(admin, "Current value is " + someField.get(null));
} catch (Exception e) {
PacketSendUtility.sendMessage(admin, "Something really bad happend :)");
return;
}
}
else if(command.equalsIgnoreCase("set"))
{
String fieldName = params[2];
String newValue = params[3];
if(classToMofify != null)
{
Field someField;
try
{
someField = classToMofify.getDeclaredField(fieldName.toUpperCase());
Class classType = someField.getType();
if(classType == String.class)
{
someField.set(null, newValue);
}
else if(classType == int.class || classType == Integer.class)
{
someField.set(null, Integer.parseInt(newValue));
}
else if(classType == Boolean.class || classType == boolean.class)
{
someField.set(null, Boolean.valueOf(newValue));
}
} catch (Exception e) {
PacketSendUtility.sendMessage(admin, "Something really bad happend :)");
return;
}
}
PacketSendUtility.sendMessage(admin, "Property changed");
}
}
}