Move SystemComandMap From ChatScene to Its Own Component #74
@ -0,0 +1,39 @@
|
|||||||
|
package envoy.client.data.commands;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface defines an action that should be performed when a system
|
||||||
|
* command gets called.
|
||||||
|
*
|
||||||
|
* @author Leon Hofmeister
|
||||||
|
* @since Envoy Client v0.2-beta
|
||||||
|
*/
|
||||||
|
public interface Callable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs the instance specific action when a {@link SystemCommand} has been
|
||||||
|
* called.
|
||||||
|
*
|
||||||
|
* @param arguments the arguments that should be passed to the
|
||||||
|
* {@link SystemCommand}
|
||||||
|
* @since Envoy Client v0.2-beta
|
||||||
|
*/
|
||||||
|
void call(List<String> arguments);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs the instance specific action when a {@link SystemCommand} has been
|
||||||
|
* called and additionally enables the user to execute his own action once it
|
||||||
|
* has been called.
|
||||||
|
*
|
||||||
|
* @param arguments the arguments that should be passed to the
|
||||||
|
* {@link SystemCommand}
|
||||||
|
* @param additionalAction the action to perform when this system command has
|
||||||
|
* been called
|
||||||
|
* @since Envoy Client v0.2-beta
|
||||||
|
*/
|
||||||
|
default void call(List<String> arguments, Runnable additionalAction) {
|
||||||
|
call(arguments);
|
||||||
|
additionalAction.run();
|
||||||
|
}
|
||||||
|
}
|
@ -1,30 +0,0 @@
|
|||||||
package envoy.client.data.commands;
|
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface defines an action that should be performed when a system
|
|
||||||
* command gets called.
|
|
||||||
*
|
|
||||||
* @author Leon Hofmeister
|
|
||||||
* @since Envoy Client v0.2-beta
|
|
||||||
*/
|
|
||||||
public interface OnCall {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Performs class specific actions when a {@link SystemCommand} has been called.
|
|
||||||
*
|
|
||||||
* @since Envoy Client v0.2-beta
|
|
||||||
*/
|
|
||||||
void onCall();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Performs actions that can only be performed by classes that are not
|
|
||||||
* {@link SystemCommand}s when a SystemCommand has been called.
|
|
||||||
*
|
|
||||||
* @param consumer the action to perform when this {@link SystemCommand} has
|
|
||||||
* been called
|
|
||||||
* @since Envoy Client v0.2-beta
|
|
||||||
*/
|
|
||||||
void onCall(Supplier<Void> consumer);
|
|
||||||
}
|
|
@ -1,7 +1,7 @@
|
|||||||
package envoy.client.data.commands;
|
package envoy.client.data.commands;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.*;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is the base class of all {@code SystemCommands} and contains an
|
* This class is the base class of all {@code SystemCommands} and contains an
|
||||||
@ -17,7 +17,7 @@ import java.util.function.*;
|
|||||||
* @author Leon Hofmeister
|
* @author Leon Hofmeister
|
||||||
* @since Envoy Client v0.2-beta
|
* @since Envoy Client v0.2-beta
|
||||||
*/
|
*/
|
||||||
public final class SystemCommand implements OnCall {
|
public final class SystemCommand implements Callable {
|
||||||
|
|
||||||
protected int relevance;
|
protected int relevance;
|
||||||
|
|
||||||
@ -55,12 +55,6 @@ public final class SystemCommand implements OnCall {
|
|||||||
this.description = description;
|
this.description = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the action that should be performed
|
|
||||||
* @since Envoy Client v0.2-beta
|
|
||||||
*/
|
|
||||||
public Consumer<List<String>> getAction() { return action; }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the argument count of the command
|
* @return the argument count of the command
|
||||||
* @since Envoy Client v0.2-beta
|
* @since Envoy Client v0.2-beta
|
||||||
@ -85,20 +79,10 @@ public final class SystemCommand implements OnCall {
|
|||||||
*/
|
*/
|
||||||
public void setRelevance(int relevance) { this.relevance = relevance; }
|
public void setRelevance(int relevance) { this.relevance = relevance; }
|
||||||
|
|
||||||
/**
|
|
||||||
* Increments the relevance of this {@code SystemCommand}.
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void onCall() { relevance++; }
|
public void call(List<String> arguments) {
|
||||||
|
action.accept(arguments);
|
||||||
/**
|
++relevance;
|
||||||
* Increments the relevance of this {@code SystemCommand} and executes the
|
|
||||||
* supplier.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onCall(Supplier<Void> consumer) {
|
|
||||||
onCall();
|
|
||||||
consumer.get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -155,14 +155,7 @@ public final class SystemCommandMap {
|
|||||||
final var arguments = extractArguments(input, systemCommand);
|
final var arguments = extractArguments(input, systemCommand);
|
||||||
// Executing the function
|
// Executing the function
|
||||||
try {
|
try {
|
||||||
systemCommand.getAction().accept(arguments);
|
systemCommand.call(arguments);
|
||||||
systemCommand.onCall();
|
|
||||||
} catch (final IndexOutOfBoundsException e) {
|
|
||||||
logger.log(Level.SEVERE,
|
|
||||||
String.format(
|
|
||||||
"System command %s threw an IndexOutOfBoundsException. The most likely cause is a lower number of arguments than expected. It could also be a problem of the action performed: ",
|
|
||||||
command),
|
|
||||||
e);
|
|
||||||
} catch (final NumberFormatException e) {
|
} catch (final NumberFormatException e) {
|
||||||
logger.log(Level.INFO,
|
logger.log(Level.INFO,
|
||||||
String.format(
|
String.format(
|
||||||
|
Reference in New Issue
Block a user