package commands.roles;
import java.util.Iterator;
import polly.core.MSG;
import polly.core.MyPlugin;
import de.skuzzle.polly.sdk.Command;
import de.skuzzle.polly.sdk.MyPolly;
import de.skuzzle.polly.sdk.Parameter;
import de.skuzzle.polly.sdk.Signature;
import de.skuzzle.polly.sdk.Types;
import de.skuzzle.polly.sdk.User;
import de.skuzzle.polly.sdk.exceptions.CommandException;
import de.skuzzle.polly.sdk.exceptions.DuplicatedSignatureException;
import de.skuzzle.polly.sdk.exceptions.InsufficientRightsException;
public class ListPermissionsCommand extends Command {
public ListPermissionsCommand(MyPolly polly) throws DuplicatedSignatureException {
super(polly, "listpermissions"); //$NON-NLS-1$
this.createSignature(
MSG.listPermSig0Desc,
MyPlugin.LIST_PERMISSIONS_PERMISSION,
new Parameter(MSG.listPermSig0Name, Types.STRING));
this.setHelpText(MSG.listPermHelp);
}
@Override
protected boolean executeOnBoth(User executer, String channel,
Signature signature) throws CommandException, InsufficientRightsException {
if (this.match(signature, 0)) {
String roleName = signature.getStringValue(0);
if (!this.getMyPolly().roles().roleExists(roleName)) {
throw new CommandException(MSG.bind(MSG.listPermUnknownRole, roleName));
}
StringBuilder result = new StringBuilder();
Iterator<String> it =
this.getMyPolly().roles().getPermissions(roleName).iterator();
while (it.hasNext()) {
result.append(it.next());
if (it.hasNext()) {
result.append(", "); //$NON-NLS-1$
}
}
this.reply(channel, result.toString());
}
return false;
}
}