From f02b304cd78e81a728831ca1d11b33aff961d937 Mon Sep 17 00:00:00 2001 From: "Edward M. Kagan" Date: Fri, 19 Feb 2021 00:34:33 +0300 Subject: [PATCH] Fixed type hierarchy problem on command-executor-object api level --- .gitignore | 1 + .../link/pagan/traqtor/_api/Commanded.java | 9 ++++++++ .../link/pagan/traqtor/_api/Executor.java | 22 +++++++++++++------ .../java/link/pagan/traqtor/api/Traqtor.java | 19 ++++++++-------- .../traqtor/api/workspace/Workspace.java | 7 +++++- .../link/pagan/traqtor/api/TraqtorTest.java | 21 +++++++----------- .../schema/data/mapping/MappingSchema.java | 10 ++------- .../mapping/frontend/FrontendMapping.java | 2 -- .../link/pagan/traqtor/util/Registrable.java | 6 ----- 9 files changed, 50 insertions(+), 47 deletions(-) create mode 100644 traqtor-api/src/main/java/link/pagan/traqtor/_api/Commanded.java diff --git a/.gitignore b/.gitignore index 0df42bc..066bff7 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ target .gitignore .classpath nbactions.xml +traqtor-demo-workspace \ No newline at end of file diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/_api/Commanded.java b/traqtor-api/src/main/java/link/pagan/traqtor/_api/Commanded.java new file mode 100644 index 0000000..9eb60ab --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/_api/Commanded.java @@ -0,0 +1,9 @@ +package link.pagan.traqtor._api; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +abstract class Commanded> { + +} \ No newline at end of file diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/_api/Executor.java b/traqtor-api/src/main/java/link/pagan/traqtor/_api/Executor.java index 24bf67a..06c8326 100644 --- a/traqtor-api/src/main/java/link/pagan/traqtor/_api/Executor.java +++ b/traqtor-api/src/main/java/link/pagan/traqtor/_api/Executor.java @@ -7,25 +7,33 @@ import link.pagan.traqtor._api.result.CommandExecResultStatus; * * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */ -public abstract class Executor { +public abstract class Executor> extends Commanded { private static boolean paranoindLoggin = false; + private static boolean mute = true; - public CommandExecResult execute(Command> command) { + public CommandExecResult execute(Command command, T arg) { CommandExecResult result = new CommandExecResult(); command.setResultHolder(result); - command.exec(this); - if (paranoindLoggin) { - result.print(); - } else { - if (result.getStatus() != CommandExecResultStatus.DONE) { + command.exec(arg); + if (!mute){ + if (paranoindLoggin) { result.print(); + } else { + if (result.getStatus() != CommandExecResultStatus.DONE) { + result.print(); + } } } return result; } public static void enableParanoindLoggin() { + enableLog(); paranoindLoggin = true; } + + public static void enableLog() { + mute = false; + } } diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/api/Traqtor.java b/traqtor-api/src/main/java/link/pagan/traqtor/api/Traqtor.java index 225e78c..951db83 100644 --- a/traqtor-api/src/main/java/link/pagan/traqtor/api/Traqtor.java +++ b/traqtor-api/src/main/java/link/pagan/traqtor/api/Traqtor.java @@ -11,24 +11,23 @@ import link.pagan.traqtor.api.workspace.Workspace; * * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */ -public class Traqtor extends Executor { - +public class Traqtor extends Executor { + private static Traqtor env = new Traqtor(); public static CommandExecResult exec(Command command) { - return env.execute(command); + return env.execute(command, env); } static void reset() { env = new Traqtor(); } - + Workspace workspace; - + public static Workspace getWorkspace() { return env.workspace; } - public static class CreateWorkspace extends Command { @@ -101,7 +100,7 @@ public class Traqtor extends Executor { return fail("IO erorr while creating " + Workspace.JSON_FILENAME + ".json in workspace root directory"); } } - + String hold = traqtor.workspace.getRoot(); traqtor.workspace.setRoot(workspacePath); @@ -127,11 +126,11 @@ public class Traqtor extends Executor { return fail("Workspace was not saved before - use \"save as\" command for the first save"); } File workspaceFile = new File(workspacePath, Workspace.JSON_FILENAME + ".json"); - + if (!workspaceFile.exists()) { return fail("Failed to save, " + Workspace.JSON_FILENAME + ".json does not exist, workspace corrupted?"); } - + if (!workspaceFile.canWrite()) { return fail("Can not write " + Workspace.JSON_FILENAME + ".json - permission denied"); } @@ -143,7 +142,7 @@ public class Traqtor extends Executor { } traqtor.workspace.setDirty(false); - + return done(); } diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/Workspace.java b/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/Workspace.java index 0117696..0654ea3 100644 --- a/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/Workspace.java +++ b/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/Workspace.java @@ -9,7 +9,7 @@ import link.pagan.traqtor._api.Executor; * * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */ -public class Workspace extends Executor { +public class Workspace extends Executor { public static final String JSON_FILENAME = "workspace"; public static final String DEFAULT_WORKSPACE_NAME = "I'm too lazy to think of a name for this workspace"; @@ -58,4 +58,9 @@ public class Workspace extends Executor { this.dirty = dirty; } +// @Override +// Workspace self() { +// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. +// } + } diff --git a/traqtor-api/src/test/java/link/pagan/traqtor/api/TraqtorTest.java b/traqtor-api/src/test/java/link/pagan/traqtor/api/TraqtorTest.java index cd669b6..a0b28ad 100644 --- a/traqtor-api/src/test/java/link/pagan/traqtor/api/TraqtorTest.java +++ b/traqtor-api/src/test/java/link/pagan/traqtor/api/TraqtorTest.java @@ -1,14 +1,12 @@ package link.pagan.traqtor.api; import java.io.IOException; -import link.pagan.traqtor._api.Executor; import link.pagan.traqtor._api.TraqtorApiTestUtils; import link.pagan.traqtor._api.result.CommandExecResult; import static link.pagan.traqtor._api.result.CommandExecResultStatus.DONE; import static link.pagan.traqtor._api.result.CommandExecResultStatus.FAIL; import org.junit.jupiter.api.AfterEach; import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -20,21 +18,15 @@ public class TraqtorTest { CommandExecResult result; - @BeforeAll - public static void setup() { - Executor.enableParanoindLoggin(); - } - @BeforeEach public void cleanTestDir() throws IOException { TraqtorApiTestUtils.killTestRoot(); } - - + + @AfterEach public void killCore() { Traqtor.reset(); - System.out.println("TEST_WORKSPACE_ROOT = " + TraqtorApiTestUtils.TEST_WORKSPACE_ROOT); } @Test @@ -43,7 +35,7 @@ public class TraqtorTest { assertEquals(result.getStatus(), DONE); assertEquals(Traqtor.getWorkspace().isDirty(), true); } - + @Test void newWorkspaceSave() { result = Traqtor.exec(new Traqtor.CreateWorkspace()); @@ -52,15 +44,18 @@ public class TraqtorTest { result = Traqtor.exec(new Traqtor.SaveWorkspace()); assertEquals(FAIL, result.getStatus()); assertEquals(Traqtor.getWorkspace().isDirty(), true); + result = Traqtor.exec(new Traqtor.SaveAsWorkspace(TraqtorApiTestUtils.TEST_WORKSPACE_ROOT)); + assertEquals(DONE, result.getStatus()); + assertEquals(Traqtor.getWorkspace().isDirty(), false); } - + @Test void newWorkspaceWithName() { result = Traqtor.exec(new Traqtor.CreateWorkspace(TraqtorApiTestUtils.TEST_WORKSPACE_NAME)); assertEquals(DONE, result.getStatus()); assertEquals(Traqtor.getWorkspace().isDirty(), true); } - + @Test void newWorkspaceWithNameAndPath() { result = Traqtor.exec(new Traqtor.CreateWorkspace(TraqtorApiTestUtils.TEST_WORKSPACE_NAME, TraqtorApiTestUtils.TEST_WORKSPACE_ROOT)); diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/MappingSchema.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/MappingSchema.java index 267cb0e..42fd56b 100644 --- a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/MappingSchema.java +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/MappingSchema.java @@ -1,20 +1,14 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package link.pagan.traqtor.schema.data.mapping; import link.pagan.traqtor.util.Named; import java.util.List; -import link.pagan.traqtor.schema.data.mapping.MappingEntry; /** * * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */ public interface MappingSchema extends Named { - + public List getMappings (); - + } diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/frontend/FrontendMapping.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/frontend/FrontendMapping.java index 7454bca..a461f1c 100644 --- a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/frontend/FrontendMapping.java +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/frontend/FrontendMapping.java @@ -2,8 +2,6 @@ package link.pagan.traqtor.schema.data.mapping.frontend; import java.util.HashMap; import link.pagan.traqtor.schema.data.mapping.Mapping; -import link.pagan.traqtor.schema.data.mapping.Mapping; -import link.pagan.traqtor.schema.data.mapping.MappingEntry; import link.pagan.traqtor.schema.data.mapping.MappingEntry; /** diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/util/Registrable.java b/traqtor-schema/src/main/java/link/pagan/traqtor/util/Registrable.java index b58bf7d..5ea99d8 100644 --- a/traqtor-schema/src/main/java/link/pagan/traqtor/util/Registrable.java +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/util/Registrable.java @@ -1,12 +1,6 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package link.pagan.traqtor.util; import java.util.Map; -import link.pagan.traqtor.schema.data.mapping.database.DatabaseAdapter; /** *