60 lines
1.7 KiB
Java
60 lines
1.7 KiB
Java
package core.benchmark;
|
|
|
|
import java.util.HashMap;
|
|
import commands.benchmark.*;
|
|
|
|
// Based on general core structure, this registers sub-commands and keeps tabs on them.
|
|
public class BenchmarkFramework
|
|
{
|
|
// Variables
|
|
public HashMap<String, BenchmarkCommand> benchmarkCommand;
|
|
public BenchmarkManager benchmarkManager;
|
|
|
|
// Constructor and command registration
|
|
public BenchmarkFramework()
|
|
{
|
|
this.benchmarkManager = new BenchmarkManager();
|
|
this.benchmarkCommand = new HashMap<String, BenchmarkCommand>();
|
|
|
|
registerCommand("find", new BenchmarkCommandFind());
|
|
registerCommand("compare", new BenchmarkCommandCompare());
|
|
registerCommand("info", new BenchmarkCommandInfo());
|
|
}
|
|
|
|
// Runs a command if possible.
|
|
public BenchmarkFormattable run(String args)
|
|
{
|
|
BenchmarkInput input = new BenchmarkInput(args);
|
|
return executeCommand(input.key, input);
|
|
}
|
|
|
|
public void update()
|
|
{
|
|
synchronized(benchmarkManager)
|
|
{
|
|
benchmarkManager.update();
|
|
}
|
|
}
|
|
|
|
// Registers a command
|
|
private void registerCommand(String commandName, BenchmarkCommand command)
|
|
{
|
|
commandName = commandName.toLowerCase();
|
|
if(benchmarkCommand.put(commandName, command) != null)
|
|
BenchmarkLog.log("Multiple registration of a command with name '" + commandName + "'!");
|
|
|
|
BenchmarkLog.log("Registered " + commandName);
|
|
}
|
|
|
|
// Executes a command with the specified name, and provides it with some extra input data.
|
|
private BenchmarkFormattable executeCommand(String name, BenchmarkInput input)
|
|
{
|
|
BenchmarkCommand command = benchmarkCommand.get(name.toLowerCase());
|
|
|
|
if(command != null && benchmarkManager != null)
|
|
return command.onRun(benchmarkManager, input);
|
|
|
|
return null;
|
|
}
|
|
}
|