use of file.TextFile in project Lab5 by Arslanka.
the class CommandArguments method get.
public Object[] get(ArrayList<String> data) {
Class<?>[] commandArgsClasses = command.getArgumentsClasses();
ArrayList<Object> commandArgs = new ArrayList<>();
int start = 0;
for (Class<?> arg : commandArgsClasses) {
StringBuilder argAsString = new StringBuilder();
JsonString jsonString = new JsonString();
if (command instanceof SaveCommand) {
// todo fix instanceof + open/closed
try {
commandArgs.add(new JsonFile(new TextFile(new File(data.get(0).trim()))));
break;
} catch (ClassCastException | JsonParseException | IOException ignored) {
}
} else if (command instanceof ExecuteScriptCommand) {
try {
commandArgs.add(new AdvancedScript(new TextFile(new File(data.get(0).trim())), commandsByName, stringSupplierMap, requestMap, printer));
break;
} catch (ClassCastException | JsonParseException | IOException ignored) {
}
} else {
for (; start < data.size(); ++start) {
argAsString.append(data.get(start)).append('\n');
try {
Object obj = jsonString.read(argAsString.toString(), arg);
commandArgs.add(obj);
++start;
break;
} catch (Exception ignored) {
}
try {
Object obj = (requestMap.get(arg)).apply(new Scanner(argAsString.toString()), new Printer(true));
commandArgs.add(obj);
break;
} catch (Exception ignored) {
}
}
}
}
if (commandArgs.size() != commandArgsClasses.length && !data.toString().isEmpty()) {
throw new JsonParseException("You have entered incorrect arguments in the command " + command.getName());
}
return commandArgs.toArray();
}
use of file.TextFile in project Lab5 by Arslanka.
the class Application method startInteractiveMode.
public void startInteractiveMode() {
try {
String fileName = this.fileName[0];
final File file = new File(fileName.trim());
final TextFile textFile = new TextFile(file);
final JsonFile jsonFile = new JsonFile(textFile);
collection.add(jsonFile.read());
CommandInterpreter commandInterpreter = new CommandInterpreter(this.commandsByName, supplierMap, this.printer, requestMap);
boolean running = true;
while (running) {
printer.println(("Enter the command:"), REQUEST);
try {
running = commandInterpreter.run(new ArrayList<>(Arrays.asList(sc.nextLine().trim().split("\\s+"))));
} catch (NoSuchElementException e) {
running = false;
} catch (RecursiveCallException | InvalidCommandNameException | IllegalArgumentException | JsonParseException e) {
printer.println(e.getMessage(), ERROR);
}
}
printer.println("Program execution stopped", CONSOLE);
} catch (NoSuchElementException e) {
printer.println("The program ended incorrectly. Please restart the program.", ERROR);
} catch (ArrayIndexOutOfBoundsException e) {
printer.println("You didn't specify the file name to populate the collection", ERROR);
} catch (Exception e) {
printer.println(e.getMessage(), ERROR);
}
}
Aggregations