From 1b7718d420abfc3b8bb9eefd28b5006729d2acee Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sat, 28 Oct 2023 22:03:30 +0300 Subject: [PATCH] Add cli parsers. --- .../cli/parsers/ArgumentParser.java | 30 +++++++++++++++++++ .../cli/parsers/CommandParser.java | 20 +++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/main/java/space/kklochko/jdbc_hospital_example/cli/parsers/ArgumentParser.java create mode 100644 src/main/java/space/kklochko/jdbc_hospital_example/cli/parsers/CommandParser.java diff --git a/src/main/java/space/kklochko/jdbc_hospital_example/cli/parsers/ArgumentParser.java b/src/main/java/space/kklochko/jdbc_hospital_example/cli/parsers/ArgumentParser.java new file mode 100644 index 0000000..8d3b706 --- /dev/null +++ b/src/main/java/space/kklochko/jdbc_hospital_example/cli/parsers/ArgumentParser.java @@ -0,0 +1,30 @@ +package space.kklochko.jdbc_hospital_example.cli.parsers; + +import lombok.NonNull; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.TreeMap; + +public class ArgumentParser { + public Map parse(@NonNull String args) { + Map parsed = new LinkedHashMap(); + + if(args == "") return parsed; + + // remove last ' + args = args.substring(0, args.length() - 1); + + for(String arg : args.split("',")) { + String[] parts = arg.split("="); + parsed.put(parts[0].trim(), removeQuotes(parts[1])); + } + + return parsed; + } + + public String removeQuotes(@NonNull String withQuotes) { + return withQuotes.substring(1, withQuotes.length()); + } +} diff --git a/src/main/java/space/kklochko/jdbc_hospital_example/cli/parsers/CommandParser.java b/src/main/java/space/kklochko/jdbc_hospital_example/cli/parsers/CommandParser.java new file mode 100644 index 0000000..469feb8 --- /dev/null +++ b/src/main/java/space/kklochko/jdbc_hospital_example/cli/parsers/CommandParser.java @@ -0,0 +1,20 @@ +package space.kklochko.jdbc_hospital_example.cli.parsers; + +import lombok.NonNull; +import lombok.ToString; +import space.kklochko.jdbc_hospital_example.cli.commands.CommandData; + +@ToString +public class CommandParser { + public CommandData parse(@NonNull String command) { + ArgumentParser parser = new ArgumentParser(); + String[] command_args = command.split("[()]"); + String[] command_parts = command_args[0].split(" "); + + String args=""; + if(command_args.length > 1) + args = command_args[1]; + + return new CommandData(command_parts[0], command_parts[1], parser.parse(args)); + } +}