mirror of
https://github.com/moparisthebest/Yaaic
synced 2024-11-25 18:32:15 -05:00
Commands can throw CommandExceptions
This commit is contained in:
parent
4c3fb69a02
commit
9b572792ea
@ -38,8 +38,9 @@ public abstract class BaseCommand
|
||||
* @param server The server object
|
||||
* @param channel The channel object or null if no channel is selected
|
||||
* @param service The service with all server connections
|
||||
* @throws CommandException if command couldn't be executed
|
||||
*/
|
||||
public abstract void execute(String[] params, Server server, Channel channel, IRCService service);
|
||||
public abstract void execute(String[] params, Server server, Channel channel, IRCService service) throws CommandException;
|
||||
|
||||
/**
|
||||
* Get the usage description for this command
|
||||
@ -47,13 +48,4 @@ public abstract class BaseCommand
|
||||
* @return The usage description
|
||||
*/
|
||||
public abstract String getUsage();
|
||||
|
||||
/**
|
||||
* How much params does this command need?
|
||||
*
|
||||
* Default: 0
|
||||
*
|
||||
* @return The number of params needed
|
||||
*/
|
||||
public abstract int needsParams();
|
||||
}
|
||||
|
20
src/org/yaaic/command/CommandException.java
Normal file
20
src/org/yaaic/command/CommandException.java
Normal file
@ -0,0 +1,20 @@
|
||||
package org.yaaic.command;
|
||||
|
||||
/**
|
||||
* The CommandException is thrown on command execution if the
|
||||
* command couldn't be executed due to invalid params
|
||||
*
|
||||
* @author Sebastian Kaspari
|
||||
*/
|
||||
public class CommandException extends Throwable
|
||||
{
|
||||
private static final long serialVersionUID = -8317993941455253288L;
|
||||
|
||||
/**
|
||||
* Create a new CommandException object
|
||||
*/
|
||||
public CommandException(String message)
|
||||
{
|
||||
super(message);
|
||||
}
|
||||
}
|
@ -28,6 +28,7 @@ import org.yaaic.model.Channel;
|
||||
import org.yaaic.model.Message;
|
||||
import org.yaaic.model.Server;
|
||||
|
||||
import android.R.color;
|
||||
import android.content.Intent;
|
||||
|
||||
/**
|
||||
@ -90,14 +91,18 @@ public class CommandParser
|
||||
|
||||
if (isCommand(type)) {
|
||||
BaseCommand command = commands.get(type);
|
||||
if (command.needsParams() > 0 && params.length - 1 == command.needsParams()) {
|
||||
try {
|
||||
command.execute(params, server, channel, service);
|
||||
} else {
|
||||
} catch(CommandException e) {
|
||||
// Wrong number of params
|
||||
if (channel != null) {
|
||||
Message message = new Message("Usage of " + type + ": " + command.getUsage());
|
||||
message.setColor(Message.COLOR_RED);
|
||||
channel.addMessage(message);
|
||||
Message errorMessage = new Message(type + ": " + e.getMessage());
|
||||
errorMessage.setColor(Message.COLOR_RED);
|
||||
channel.addMessage(errorMessage);
|
||||
|
||||
Message usageMessage = new Message("Usage of " + type + ": " + command.getUsage());
|
||||
//usageMessage.setColor(Message.COLOR_RED);
|
||||
channel.addMessage(usageMessage);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
|
@ -35,9 +35,13 @@ public class NickCommand extends BaseCommand
|
||||
* Execute /nick
|
||||
*/
|
||||
@Override
|
||||
public void execute(String[] params, Server server, Channel channel, IRCService service)
|
||||
public void execute(String[] params, Server server, Channel channel, IRCService service) throws CommandException
|
||||
{
|
||||
service.getConnection(server.getId()).changeNick(params[1]);
|
||||
if (params.length == 2) {
|
||||
service.getConnection(server.getId()).changeNick(params[1]);
|
||||
} else {
|
||||
throw new CommandException("Invalid number of params");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,14 +52,4 @@ public class NickCommand extends BaseCommand
|
||||
{
|
||||
return "/nick nickname";
|
||||
}
|
||||
|
||||
/**
|
||||
* Number of params needed (1)
|
||||
*/
|
||||
@Override
|
||||
public int needsParams()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user