/*
* 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 3 of the License, 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, see .
*/
package net.sf.l2j.gameserver.datatables;
import net.sf.l2j.gameserver.model.L2AccessLevel;
/**
* @author FBIagent
*/
public class AdminCommandAccessRight
{
/** The admin command
*/
private String _adminCommand = null;
/** The access levels which can use the admin command
*/
private L2AccessLevel[] _accessLevels = null;
/**
* Initialized members
*
* @param adminCommand as String
* @param accessLevels as String
*/
public AdminCommandAccessRight(String adminCommand, String accessLevels)
{
_adminCommand = adminCommand;
String[] accessLevelsSplit = accessLevels.split(",");
int numLevels = accessLevelsSplit.length;
_accessLevels = new L2AccessLevel[numLevels];
for (int i = 0; i < numLevels; ++i)
{
try
{
_accessLevels[i] = AccessLevels.getInstance().getAccessLevel(Integer.valueOf(accessLevelsSplit[i]));
}
catch (NumberFormatException nfe)
{
_accessLevels[i] = null;
}
}
}
/**
* Returns the admin command the access right belongs to
*
* @return String: the admin command the access right belongs to
*/
public String getAdminCommand()
{
return _adminCommand;
}
/**
* Checks if the given characterAccessLevel is allowed to use the admin command which belongs to this access right
*
* @param characterAccessLevel
*
* @return boolean: true if characterAccessLevel is allowed to use the admin command which belongs to this access right, otherwise false
*/
public boolean hasAccess(L2AccessLevel characterAccessLevel)
{
for (int i = 0; i < _accessLevels.length; ++i)
{
L2AccessLevel accessLevel = _accessLevels[i];
if (accessLevel != null
&& (accessLevel.getLevel() == characterAccessLevel.getLevel() || characterAccessLevel.hasChildAccess(accessLevel)))
return true;
}
return false;
}
}