From 4feca1319e05b1f2085bae789709fd8c1f4a4be9 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sun, 26 Nov 2023 13:38:59 +0200 Subject: [PATCH] Remove the CLI. --- .../jpa_hospital_example/cli/CLI.java | 136 --------------- .../cli/commands/CommandData.java | 14 -- .../cli/commands/CommandEntities.java | 28 --- .../cli/commands/CommandEntity.java | 32 ---- .../commands/factories/CommandFactory.java | 58 ------- .../cli/commands/factories/EntityFactory.java | 52 ------ .../commands/factories/ReadAllFactory.java | 19 -- .../cli/parsers/ArgumentParser.java | 30 ---- .../cli/parsers/CommandParser.java | 20 --- .../cli/validators/CommandValidator.java | 22 --- .../InputStringFormatValidator.java | 21 --- .../cli/validators/Validator.java | 9 - .../cli/commands/CommandEntitySpec.groovy | 163 ------------------ .../validators/CommandValidatorSpec.groovy | 27 --- .../InputStringFormatValidatorSpec.groovy | 28 --- 15 files changed, 659 deletions(-) delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/CLI.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandData.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandEntities.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandEntity.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/CommandFactory.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/EntityFactory.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/ReadAllFactory.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/parsers/ArgumentParser.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/parsers/CommandParser.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/validators/CommandValidator.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/validators/InputStringFormatValidator.java delete mode 100644 src/main/java/space/kklochko/jpa_hospital_example/cli/validators/Validator.java delete mode 100644 src/test/groovy/space/kklochko/jpa_hospital_example/cli/commands/CommandEntitySpec.groovy delete mode 100644 src/test/groovy/space/kklochko/jpa_hospital_example/cli/validators/CommandValidatorSpec.groovy delete mode 100644 src/test/groovy/space/kklochko/jpa_hospital_example/cli/validators/InputStringFormatValidatorSpec.groovy diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/CLI.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/CLI.java deleted file mode 100644 index 59087da..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/CLI.java +++ /dev/null @@ -1,136 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli; - -import jakarta.persistence.EntityManager; -import lombok.Getter; -import lombok.NonNull; -import lombok.Setter; -import space.kklochko.jpa_hospital_example.cli.commands.CommandData; -import space.kklochko.jpa_hospital_example.cli.commands.CommandEntities; -import space.kklochko.jpa_hospital_example.cli.commands.CommandEntity; -import space.kklochko.jpa_hospital_example.cli.commands.factories.CommandFactory; -import space.kklochko.jpa_hospital_example.cli.commands.factories.ReadAllFactory; -import space.kklochko.jpa_hospital_example.cli.parsers.CommandParser; -import space.kklochko.jpa_hospital_example.cli.validators.CommandValidator; -import space.kklochko.jpa_hospital_example.cli.validators.InputStringFormatValidator; -import space.kklochko.jpa_hospital_example.cli.validators.Validator; -import space.kklochko.jpa_hospital_example.db.factories.DataBaseConnection; -import space.kklochko.jpa_hospital_example.db.repositories.AbstractRepository; -import space.kklochko.jpa_hospital_example.db.repositories.DepartmentRepository; -import space.kklochko.jpa_hospital_example.db.repositories.IndicatorRepository; -import space.kklochko.jpa_hospital_example.db.repositories.PatientRepository; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Scanner; -@Setter -@Getter -public class CLI { - private final String prompt = "> "; - private String state = "prompt"; - private final String help = "Help (help or h)\n" + - "Command format: `command {item}(arg1=value1, ...`\n\n" + - - "Commands: \n" + - "insert {item}({args}): \n" + - "update {item}({args}): \n" + - "readAll {item}: \n" + - "delete {item}(uuid='07c6e39e-727a-11ee-8e7b-c0e4349366ab'}).\n" + - - "Examples:\n" + - - "\nDepartment:\n" + - "\tinsert department(id='bcbbcdb4-702c-11ee-9113-c0e4349366cb', name='First department', location='Stepan Bandera Street', phone='380123451244')\n" + - "\tinsert department(name='First department', location='Stepan Bandera Street', phone='380123451244')\n" + - "\tupdate department(id='bcbbcdb4-702c-11ee-9113-c0e4349366cb', name='First department', location='Stepan Bandera Street', phone='380123451244')\n" + - "\treadAll department()\n" + - "\tremove department(id='bcbbcdb4-702c-11ee-9113-c0e4349366cb')\n" + - - "\nPatient:\n" + - "\tinsert patient(id='bcbbcdb4-702c-11ee-9113-c0e4349366bb', name='Oleh', age='21', phone='380123451234')\n" + - "\tinsert patient(name='Oleh', age='21', phone='380123451234')\n" + - "\tupdate patient(id='bcbbcdb4-702c-11ee-9113-c0e4349366bb', name='Oleh', age='21', phone='380123451234')\n" + - "\treadAll patient()\n" + - "\tremove patient(id='bcbbcdb4-702c-11ee-9113-c0e4349366bb')\n" + - - "\nIndicators:\n" + - "\tinsert indicator(id='07c6e39e-727a-11ee-8e7b-c0e4349366ab', type='blood245', values='well maybe', timestamp='2023-10-17 14:30:00')\n" + - "\tinsert indicator(type='blood246', values='well maybe', timestamp='2023-10-17 14:30:00')\n" + - "\tupdate indicator(id='07c6e39e-727a-11ee-8e7b-c0e4349366ab', type='blood247', values='well maybe', timestamp='2023-10-17 14:30:00')\n" + - "\treadAll indicator()\n" + - "\tremove indicator(id='07c6e39e-727a-11ee-8e7b-c0e4349366ab')\n"; - - EntityManager manager; - - public CLI(EntityManager manager) { - this.manager = manager; - } - - public void run() { - Scanner reader = new Scanner(System.in); - String line = ""; - CommandData commandData; - - while(true) { - if(getState() == "prompt") { - System.out.print(prompt); - setState("waitInput"); - }else if(getState() == "waitInput") { - line = reader.nextLine(); - setState("isHelp?"); - }else if(getState() == "isHelp?") { - if(line.equals("h") || line.equals("help")) { - System.out.println(help); - setState("prompt"); - }else { - setState("validate"); - } - } else if(getState() == "validate") { - ArrayList validators = new ArrayList<>(); - validators.add(new CommandValidator(line)); - validators.add(new InputStringFormatValidator(line)); - - setState("run"); - - for (Validator validator : validators) { - if(!validator.isValid()) { - System.err.println(validator.getMessage()); - System.out.println(); - setState("prompt"); - } - } - } else if(getState() == "run") { - CommandParser commandParser = new CommandParser(); - commandData = commandParser.parse(line); - - runCommand(commandData); - setState("prompt"); - } - } - } - - public void runCommand(CommandData commandData) { - if(commandData.getName().equals("readAll")) { - ReadAllFactory factory = new ReadAllFactory(); - CommandEntities command = factory.create(commandData, getRepository(commandData)); - ArrayList items = command.run(); - - for(Iterator iter = command.run().iterator(); iter.hasNext(); ) { - System.out.println(iter.next()); - } - } else { - CommandFactory factory = new CommandFactory(); - CommandEntity command = factory.create(commandData, getRepository(commandData)); - command.run(); - } - } - - public AbstractRepository getRepository(@NonNull CommandData commandData) { - if(commandData.getDatatype().equals("indicator")) { - return new IndicatorRepository(manager); - }else if(commandData.getDatatype().equals("patient")) { - return new PatientRepository(manager); - }else { - return new DepartmentRepository(manager); - } - } -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandData.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandData.java deleted file mode 100644 index 9501052..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandData.java +++ /dev/null @@ -1,14 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.commands; - -import lombok.AllArgsConstructor; -import lombok.Data; - -import java.util.Map; - -@AllArgsConstructor -@Data -public class CommandData { - public String name; - public String datatype; - public Map arguments; -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandEntities.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandEntities.java deleted file mode 100644 index ca7055f..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandEntities.java +++ /dev/null @@ -1,28 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.commands; - -import lombok.AllArgsConstructor; -import lombok.Data; -import space.kklochko.jpa_hospital_example.db.repositories.AbstractRepository; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; - -@AllArgsConstructor -@Data -public class CommandEntities { - private AbstractRepository repository; - private Method method; - - public ArrayList run() { - try { - return (ArrayList) method.invoke(getRepository()); - } catch (InvocationTargetException e) { - System.err.println(e.getMessage()); - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - System.err.println(e.getMessage()); - throw new RuntimeException(e); - } - }; -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandEntity.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandEntity.java deleted file mode 100644 index 1fc77ef..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/CommandEntity.java +++ /dev/null @@ -1,32 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.commands; - -import lombok.Data; -import space.kklochko.jpa_hospital_example.db.repositories.AbstractRepository; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -@Data -public class CommandEntity { - private AbstractRepository repository; - private Method method; - private A argument; - - public CommandEntity(AbstractRepository repository, Method method, A argument) { - this.repository = repository; - this.method = method; - this.argument = argument; - } - - public boolean run() { - try { - return (Boolean) method.invoke(getRepository(), getArgument()); - } catch (InvocationTargetException e) { - System.err.println(e.getMessage()); - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - System.err.println(e.getMessage()); - throw new RuntimeException(e); - } - }; -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/CommandFactory.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/CommandFactory.java deleted file mode 100644 index 4a5dbc9..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/CommandFactory.java +++ /dev/null @@ -1,58 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.commands.factories; - -import lombok.NonNull; -import space.kklochko.jpa_hospital_example.cli.commands.CommandData; -import space.kklochko.jpa_hospital_example.cli.commands.CommandEntity; -import space.kklochko.jpa_hospital_example.db.repositories.AbstractRepository; -import space.kklochko.jpa_hospital_example.models.Department; -import space.kklochko.jpa_hospital_example.models.Indicator; -import space.kklochko.jpa_hospital_example.models.Patient; - -import java.lang.reflect.Method; -import java.util.UUID; - -public class CommandFactory { - public CommandEntity create(@NonNull CommandData commandData, @NonNull AbstractRepository repository) { - try { - EntityFactory entityFactory = new EntityFactory(); - - if(commandData.getName().equals("insert")) { - if(commandData.getDatatype().equals("indicator")) { - Method method = repository.getClass().getMethod("create", Indicator.class); - Indicator indicator = (Indicator) entityFactory.create(commandData); - return new CommandEntity(repository, method, indicator); - }else if(commandData.getDatatype().equals("patient")) { - Method method = repository.getClass().getMethod("create", Patient.class); - Patient patient = (Patient) entityFactory.create(commandData); - return new CommandEntity(repository, method, patient); - }else { - Method method = repository.getClass().getMethod("create", Department.class); - Department department = (Department) entityFactory.create(commandData); - return new CommandEntity(repository, method, department); - } - }else if(commandData.getName().equals("update")) { - if(commandData.getDatatype().equals("indicator")) { - Method method = repository.getClass().getMethod("update", Indicator.class); - Indicator indicator = (Indicator) entityFactory.create(commandData); - return new CommandEntity(repository, method, indicator); - }else if(commandData.getDatatype().equals("patient")) { - Method method = repository.getClass().getMethod("update", Patient.class); - Patient patient = (Patient) entityFactory.create(commandData); - return new CommandEntity(repository, method, patient); - }else { - Method method = repository.getClass().getMethod("update", Department.class); - Department department = (Department) entityFactory.create(commandData); - return new CommandEntity(repository, method, department); - } - }else { - String uuidString = commandData.arguments.get("id"); - UUID uuid = UUID.fromString(uuidString); - - Method method = repository.getClass().getMethod("delete", UUID.class); - return new CommandEntity(repository, method, uuid); - } - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/EntityFactory.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/EntityFactory.java deleted file mode 100644 index e7b14f3..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/EntityFactory.java +++ /dev/null @@ -1,52 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.commands.factories; - -import lombok.NonNull; -import space.kklochko.jpa_hospital_example.cli.commands.CommandData; -import space.kklochko.jpa_hospital_example.models.Department; -import space.kklochko.jpa_hospital_example.models.Indicator; -import space.kklochko.jpa_hospital_example.models.Patient; - -import java.sql.Timestamp; -import java.util.Map; -import java.util.UUID; - -public class EntityFactory { - public Object create(@NonNull CommandData commandData) { - if(commandData.getDatatype().equals("indicator")) { - Map values = commandData.getArguments(); - Timestamp timestamp = Timestamp.valueOf(values.get("timestamp")); - Indicator indicator = new Indicator(values.get("type"), values.get("values"), timestamp); - - String uuidString = values.getOrDefault("id", null); - if(uuidString != null) { - UUID uuid = UUID.fromString(uuidString); - indicator.setId(uuid); - } - - return (Object) indicator; - }else if(commandData.getDatatype().equals("patient")) { - Map values = commandData.getArguments(); - short age = Short.parseShort(values.get("age")); - Patient patient = new Patient(values.get("name"), age, values.get("phone")); - - String uuidString = values.getOrDefault("id", null); - if(uuidString != null) { - UUID uuid = UUID.fromString(uuidString); - patient.setId(uuid); - } - - return (Object) patient; - }else { - Map values = commandData.getArguments(); - Department department = new Department(values.get("name"), values.get("location"), values.get("phone")); - - String uuidString = values.getOrDefault("id", null); - if(uuidString != null) { - UUID uuid = UUID.fromString(uuidString); - department.setId(uuid); - } - - return (Object) department; - } - } -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/ReadAllFactory.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/ReadAllFactory.java deleted file mode 100644 index 4f43ed4..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/commands/factories/ReadAllFactory.java +++ /dev/null @@ -1,19 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.commands.factories; - -import lombok.NonNull; -import space.kklochko.jpa_hospital_example.cli.commands.CommandData; -import space.kklochko.jpa_hospital_example.cli.commands.CommandEntities; -import space.kklochko.jpa_hospital_example.db.repositories.AbstractRepository; - -import java.lang.reflect.Method; - -public class ReadAllFactory { - public CommandEntities create(@NonNull CommandData commandData, @NonNull AbstractRepository repository) { - try { - Method method = repository.getClass().getMethod("readAll"); - return new CommandEntities(repository, method); - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/parsers/ArgumentParser.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/parsers/ArgumentParser.java deleted file mode 100644 index 9b03303..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/parsers/ArgumentParser.java +++ /dev/null @@ -1,30 +0,0 @@ -package space.kklochko.jpa_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/jpa_hospital_example/cli/parsers/CommandParser.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/parsers/CommandParser.java deleted file mode 100644 index 8cecf3b..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/parsers/CommandParser.java +++ /dev/null @@ -1,20 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.parsers; - -import lombok.NonNull; -import lombok.ToString; -import space.kklochko.jpa_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)); - } -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/CommandValidator.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/CommandValidator.java deleted file mode 100644 index ef5fce1..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/CommandValidator.java +++ /dev/null @@ -1,22 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.validators; - -import java.util.regex.Pattern; - -public class CommandValidator extends Validator { - String command; - - String formatRegEx = "(readAll|insert|update|remove)\\s(indicator|patient|department)\\(.*\\)"; - - public CommandValidator(String command) { - this.command = command; - } - - public boolean isValid() { - Pattern pattern = Pattern.compile(formatRegEx); - return pattern.matcher(command).matches(); - } - - public String getMessage() { - return "Please, check the format: `command item(arg1=value1, ...)`. Or check the `help`"; - } -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/InputStringFormatValidator.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/InputStringFormatValidator.java deleted file mode 100644 index ca575db..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/InputStringFormatValidator.java +++ /dev/null @@ -1,21 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.validators; - -import java.util.regex.Pattern; - -public class InputStringFormatValidator extends Validator { - String command; - String formatRegEx = "\\w+\\s\\w+\\([^)]*\\)"; - - public InputStringFormatValidator(String command) { - this.command = command; - } - - public boolean isValid() { - Pattern pattern = Pattern.compile(formatRegEx); - return pattern.matcher(command).matches(); - } - - public String getMessage() { - return "Please, check the format: `command item(arg1=value1, ...)`. Or check the `help`"; - } -} diff --git a/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/Validator.java b/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/Validator.java deleted file mode 100644 index 1577484..0000000 --- a/src/main/java/space/kklochko/jpa_hospital_example/cli/validators/Validator.java +++ /dev/null @@ -1,9 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.validators; - -import java.util.regex.Pattern; - -abstract public class Validator { - abstract public boolean isValid(); - - abstract public String getMessage(); -} diff --git a/src/test/groovy/space/kklochko/jpa_hospital_example/cli/commands/CommandEntitySpec.groovy b/src/test/groovy/space/kklochko/jpa_hospital_example/cli/commands/CommandEntitySpec.groovy deleted file mode 100644 index 3ffae69..0000000 --- a/src/test/groovy/space/kklochko/jpa_hospital_example/cli/commands/CommandEntitySpec.groovy +++ /dev/null @@ -1,163 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.commands - -import groovy.sql.Sql -import jakarta.persistence.EntityManager -import space.kklochko.jpa_hospital_example.cli.commands.factories.CommandFactory -import space.kklochko.jpa_hospital_example.config.factories.LoadDataBaseConfigFromEnvFile -import space.kklochko.jpa_hospital_example.config.models.DataBaseConfig -import space.kklochko.jpa_hospital_example.db.factories.DataBaseConnection -import space.kklochko.jpa_hospital_example.db.factories.EntityManagerConnection -import space.kklochko.jpa_hospital_example.db.repositories.DepartmentRepository -import space.kklochko.jpa_hospital_example.db.repositories.IndicatorRepository -import space.kklochko.jpa_hospital_example.db.repositories.PatientRepository -import spock.lang.Shared -import spock.lang.Specification -import spock.lang.Stepwise -import spock.lang.Subject - -@Stepwise -class CommandEntitySpec extends Specification { - @Shared - Sql sql - - @Shared - EntityManager manager - - @Shared - DataBaseConfig db - - @Shared - DataBaseConnection dbc - - def setupSpec() { - db = (new LoadDataBaseConfigFromEnvFile()).load("db.testing") - dbc = new DataBaseConnection(db) - - manager = (new EntityManagerConnection("testing")).connect() - - sql = Sql.newInstance(db.getUrl(), db.getProperties().get("user"), db.getProperties().get("password")) - } - - def "Test insert commands"() { - given: "I have a command data" - CommandData data = new CommandData("insert", datatype, values) - UUID id = UUID.fromString(data.arguments.get("id")) - - and: "I have factory for the command" - CommandFactory factory = new CommandFactory() - @Subject - CommandEntity command = factory.create(data, repository) - - when: "The command is executed" - def result = command.run() - - then: "checking that the insert was successful" - result - id - - and: "checking that the entry is added" - def isExist = sql.firstRow(verifyStatement, id) - isExist - - cleanup: "remove the data" - sql.execute("delete from " + datatype + "s") - - where: - datatype | values | repository || verifyStatement - "indicator" | ["id": "3b3f62f4-75b4-11ee-99cb-c0e4349366ad", - "type": "blood, blood", - "values": "Good samples.", - "timestamp": "2023-10-17 14:30:00"] | new IndicatorRepository(manager) || "SELECT type FROM indicators WHERE id = ?" - "patient" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366bd", - "name": "Oleh", - "age": "21", - "phone": "380123451234"] | new PatientRepository(manager) || "SELECT name FROM patients WHERE id = ?" - "department" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366cd", - "name": "First department", - "location": "Stepan Bandera Street", - "phone": "380123451244"] | new DepartmentRepository(manager) || "SELECT name FROM departments WHERE id = ?" - } - - def "Test update commands"() { - given: "I have a command data" - CommandData data = new CommandData("update", datatype, values) - UUID id = UUID.fromString(data.arguments.get("id")) - - and: "I have a fixture" - sql.execute(fixture) - - and: "I have factory for the command" - CommandFactory factory = new CommandFactory() - @Subject - CommandEntity command = factory.create(data, repository) - - when: "The command is executed" - def result = command.run() - - then: "checking that the insert was successful" - result - id - - and: "checking that the entry is added" - def isExist = sql.firstRow(verifyStatement, id) - isExist - - cleanup: "remove the data" - sql.execute("delete from " + datatype + "s") - - where: - datatype | values | fixture | repository || verifyStatement - "indicator" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366ab", - "type": "blood, blood", - "values": "Good samples.", - "timestamp": "2023-10-17 14:30:00"] | "insert into indicators (id, type, values, timestamp) values ('bcbbcdb4-702c-11ee-9113-c0e4349366ab', 'Samples', 'fine', '2023-10-17 16:30:00')" - | new IndicatorRepository(manager) || "SELECT type FROM indicators WHERE id = ? AND type='blood, blood'" - "patient" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366bb", - "name": "Oleh", - "age": "21", - "phone": "380123451234"] | "insert into patients (id, name, age, phone) values ('bcbbcdb4-702c-11ee-9113-c0e4349366bb', 'Maybe Oleh', 22, '380123451234')" - | new PatientRepository(manager) || "SELECT name FROM patients WHERE id = ? AND name='Oleh'" - "department" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366cb", - "name": "First department", - "location": "Stepan Bandera Street", - "phone": "380123451244"] | "insert into departments (id, name, location, phone) values ('bcbbcdb4-702c-11ee-9113-c0e4349366cb', 'Second department', 'Stepan Bandera Street', '380123451244')" - | new DepartmentRepository(manager) || "SELECT name FROM departments WHERE id = ? AND name='First department'" - } - - def "Test delete commands"() { - given: "I have a command data" - CommandData data = new CommandData("remove", datatype, values) - UUID id = UUID.fromString(data.arguments.get("id")) - - and: "I have a fixture" - sql.execute(fixture) - - and: "I have factory for the command" - CommandFactory factory = new CommandFactory() - @Subject - CommandEntity command = factory.create(data, repository) - - when: "The command is executed" - def result = command.run() - - then: "checking that the insert was successful" - result - id - - and: "checking that the entry is added" - def isExist = sql.firstRow(verifyStatement, id) - !isExist - - cleanup: "remove the data" - sql.execute("delete from " + datatype + "s") - - where: - datatype | values | fixture | repository || verifyStatement - "indicator" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366ab"] | "insert into indicators (id, type, values, timestamp) values ('bcbbcdb4-702c-11ee-9113-c0e4349366ab', 'Samples', 'fine', '2023-10-17 16:30:00')" - | new IndicatorRepository(manager) || "SELECT type FROM indicators WHERE id = ?" - "patient" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366bb"] | "insert into patients (id, name, age, phone) values ('bcbbcdb4-702c-11ee-9113-c0e4349366bb', 'Maybe Oleh', 22, '380123451234')" - | new PatientRepository(manager) || "SELECT name FROM patients WHERE id = ?" - "department" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366cb"] | "insert into departments (id, name, location, phone) values ('bcbbcdb4-702c-11ee-9113-c0e4349366cb', 'Second department', 'Stepan Bandera Street', '380123451244')" - | new DepartmentRepository(manager) || "SELECT name FROM departments WHERE id = ?" - } -} diff --git a/src/test/groovy/space/kklochko/jpa_hospital_example/cli/validators/CommandValidatorSpec.groovy b/src/test/groovy/space/kklochko/jpa_hospital_example/cli/validators/CommandValidatorSpec.groovy deleted file mode 100644 index cb16e40..0000000 --- a/src/test/groovy/space/kklochko/jpa_hospital_example/cli/validators/CommandValidatorSpec.groovy +++ /dev/null @@ -1,27 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.validators - -import spock.lang.Specification -import spock.lang.Subject - -class CommandValidatorSpec extends Specification { - def "Parser parse the commands"() { - given: "I have the validator" - @Subject - def validator = new CommandValidator(command) - - when: "check if valid" - boolean status = validator.isValid() - - then: "the result must be as expected" - status == expectedStatus - - where: - command || expectedStatus - "insert indicator(id='1', type='blood', values='Good samples.', timestamp='2023-10-17 14:30:00')" || true - "insert indicator(id='1', type='blood, blood', values='Good samples.', timestamp='2023-10-17 14:30:00')" || true - "update indicator(id='1', type='blood, blood', values='Good samples.', timestamp='2023-10-17 14:30:00')" || true - "remove indicator(id='1', type='blood, blood', values='Good samples.', timestamp='2023-10-17 14:30:00')" || true - "readAll indicator()" || true - } -} - diff --git a/src/test/groovy/space/kklochko/jpa_hospital_example/cli/validators/InputStringFormatValidatorSpec.groovy b/src/test/groovy/space/kklochko/jpa_hospital_example/cli/validators/InputStringFormatValidatorSpec.groovy deleted file mode 100644 index a4ca103..0000000 --- a/src/test/groovy/space/kklochko/jpa_hospital_example/cli/validators/InputStringFormatValidatorSpec.groovy +++ /dev/null @@ -1,28 +0,0 @@ -package space.kklochko.jpa_hospital_example.cli.validators - -import space.kklochko.jpa_hospital_example.cli.commands.CommandData -import space.kklochko.jpa_hospital_example.cli.parsers.CommandParser -import spock.lang.Specification -import spock.lang.Subject - -class InputStringFormatValidatorSpec extends Specification { - def "Parser parse the commands"() { - given: "I have the validator" - @Subject - def validator = new InputStringFormatValidator(command) - - when: "check if valid" - boolean status = validator.isValid() - - then: "the result must be as expected" - status == expectedStatus - - where: - command || expectedStatus - "insert indicator(id='1', type='blood', values='Good samples.', timestamp='2023-10-17 14:30:00')" || true - " insert indicator(id='1', type='blood, blood', values='Good samples.', timestamp='2023-10-17 14:30:00') " || false - "insert indicator(id='1', type='blood, blood', values='Good samples.', timestamp='2023-10-17 14:30:00')" || true - "readAll indicator()" || true - " readAll indicator() " || false - } -}