package com.nijikokun.bukkit.Permissions;
import java.util.Map;
import java.util.logging.Logger;
import org.buckit.access.AccessLevel;
import org.buckit.datasource.DataSourceManager;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.util.config.Configuration;
import com.nijiko.permissions.PermissionHandler;
public class PermissionsEmu extends PermissionHandler {
private Server server;
private final Logger log = Logger.getLogger("Minecraft");
public PermissionsEmu(Server server) {
this.server = server;
}
@Override
public void addGroupInfo(String world, String group, String node, Object data) {}
@Override
public void addUserPermission(String world, String user, String node) {
// TODO Auto-generated method stub
}
@Override
public boolean canGroupBuild(String world, String group) {
AccessLevel level = server.getDataSourceManager().getAccessDataSource().getAccessLevel(group);
if(level != null) {
return level.canBuild();
} else
return false;
}
@Override
public boolean checkWorld(String world) {
return loadWorld(world);
}
@Override
public void clearAllCache() {}
@Override
public void clearCache(String world) {}
@Override
public void forceLoadWorld(String world) {}
@Override
public Map<String, Boolean> getCache(String world) {return null;}
@Override
public boolean getCacheItem(String world, String player, String permission) { return false;}
@Override
public String getGroup(String world, String name) {
if(server.getDataSourceManager().getAccessDataSource().getAccessLevel(name) != null)
return server.getDataSourceManager().getAccessDataSource().getAccessLevel(name).getName();
else
return null;
}
@Override
public boolean getGroupPermissionBoolean(String world, String group, String permission) {return false;}
@Override
public double getGroupPermissionDouble(String world, String group, String permission) {return 0;}
@Override
public int getGroupPermissionInteger(String world, String group, String permission) {return 0;}
@Override
public String getGroupPermissionString(String world, String group, String permission) {return null;}
@Override
public String getGroupPrefix(String world, String group) {
AccessLevel level = server.getDataSourceManager().getAccessDataSource().getAccessLevel(group);
if(level == null) return null;
String str = level.getUsernameformat();
if(str.contains("{$username}")) {
String[] split = str.split("{$username}");
return split[0];
} else
return str;
}
@Override
public String getGroupSuffix(String world, String group) {
AccessLevel level = server.getDataSourceManager().getAccessDataSource().getAccessLevel(group);
if(level == null) return null;
String str = level.getUsernameformat();
if(str.contains("{$username}")) {
String[] split = str.split("{$username}");
return split[1];
} else
return str;
}
@Override
public String[] getGroups(String world, String name) {
return null;
}
@Override
public boolean getPermissionBoolean(String world, String name, String permission) {return false;}
@Override
public double getPermissionDouble(String world, String name, String permission) {return 0;}
@Override
public int getPermissionInteger(String world, String name, String permission) {return 0;}
@Override
public String getPermissionString(String world, String name, String permission) {return null;}
@Override
public boolean getUserPermissionBoolean(String world, String name, String permission) {return false;}
@Override
public double getUserPermissionDouble(String world, String name, String permission) {return 0;}
@Override
public int getUserPermissionInteger(String world, String name, String permission) {return 0;}
@Override
public String getUserPermissionString(String world, String name, String permission) {return null;}
@Override
public boolean has(Player player, String permission) {
return permission(player,permission);
}
@Override
public boolean inGroup(String world, String name, String group) {
Player player = server.getPlayer(name);
if(player == null){
log.info("[PermissionsEmu]inGroup - Player not found " + name);
return false;
}
AccessLevel level = server.getDataSourceManager().getAccessDataSource().getAccessLevel(group);
if(level == null)return false;
return level.getId() >= player.getAccessLevel().getId();
}
@Override
public boolean inSingleGroup(String world, String name, String group) {
Player player = server.getPlayer(name);
if(player == null){
log.info("[PermissionsEmu]SingleGroup - Player not found " + name);
return false;
}
return player.getAccessLevel().getName().equalsIgnoreCase(group);
}
@Override
public void load() {}
@Override
public void load(String world, Configuration config) {}
@Override
public boolean loadWorld(String world) {
return server.getWorld(world) != null;
}
@Override
public boolean permission(Player player, String permission) {
return player.canUseCommand(permission);
}
@Override
public void reload() {
DataSourceManager manager = server.getDataSourceManager();
manager.getAccessDataSource().load();
}
@Override
public boolean reload(String world) {
if(server.getWorld(world) != null) {
reload();
return true;
} else
return false;
}
@Override
public void removeCachedItem(String world, String player, String permission) {}
@Override
public void removeGroupInfo(String world, String group, String node) {}
@Override
public void removeUserPermission(String world, String user, String node) {}
@Override
public void setCache(String world, Map<String, Boolean> Cache) {}
@Override
public void setCacheItem(String world, String player, String permission, boolean data) {}
@Override
public void setDefaultWorld(String world) {}
}