diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8c9c62d --- /dev/null +++ b/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + link.pagan + traqtor + 0.0.1-SNAPSHOT + pom + TraQtor + + + traqtor-framework + traqtor-generator + traqtor-schema + traqtor-schema-ref + traqtor-api + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.2 + + 11 + 11 + + + + + diff --git a/traqtor-api/pom.xml b/traqtor-api/pom.xml new file mode 100644 index 0000000..1911a8c --- /dev/null +++ b/traqtor-api/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + link.pagan + traqtor + 0.0.1-SNAPSHOT + + link.pagan + traqtor-api + 0.0.1-SNAPSHOT + jar + TraQtor / API + + UTF-8 + 11 + 11 + + + + + org.junit + junit-bom + 5.7.1 + pom + import + + + + + + ${project.groupId} + traqtor-schema-basic + ${project.version} + + + ${project.groupId} + traqtor-generator + ${project.version} + + + ${project.groupId} + traqtor-framework + ${project.version} + + + org.junit.jupiter + junit-jupiter + test + + + com.fasterxml.jackson.core + jackson-databind + 2.12.1 + + + + + + + maven-compiler-plugin + 3.8.1 + + + maven-surefire-plugin + 2.22.2 + + + + diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/_api/Command.java b/traqtor-api/src/main/java/link/pagan/traqtor/_api/Command.java new file mode 100644 index 0000000..43e7cfd --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/_api/Command.java @@ -0,0 +1,45 @@ +package link.pagan.traqtor._api; + +import link.pagan.traqtor._api.result.CommandExecResult; +import link.pagan.traqtor._api.result.message.CommandExecMessage; +import link.pagan.traqtor._api.result.message.CommandExecMessageStatus; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class Command { + + protected CommandExecResult result; + + public abstract CommandExecResult exec(T object); + + protected CommandExecResult fail(String message) { + result.add(new CommandExecMessage(CommandExecMessageStatus.FAIL, message)); + return result; + } + + protected CommandExecResult info(String message) { + result.add(new CommandExecMessage(CommandExecMessageStatus.INFO, message)); + return result; + } + + protected CommandExecResult warn(String message) { + result.add(new CommandExecMessage(CommandExecMessageStatus.WARN, message)); + return result; + } + + protected CommandExecResult done(String message) { + result.add(new CommandExecMessage(CommandExecMessageStatus.DONE, message)); + return result; + } + + protected CommandExecResult done() { + result.add(new CommandExecMessage(CommandExecMessageStatus.DONE, "OK")); + return result; + } + + public void setResultHolder(CommandExecResult result) { + this.result = result; + } +} 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 new file mode 100644 index 0000000..24bf67a --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/_api/Executor.java @@ -0,0 +1,31 @@ +package link.pagan.traqtor._api; + +import link.pagan.traqtor._api.result.CommandExecResult; +import link.pagan.traqtor._api.result.CommandExecResultStatus; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class Executor { + + private static boolean paranoindLoggin = false; + + public CommandExecResult execute(Command> command) { + CommandExecResult result = new CommandExecResult(); + command.setResultHolder(result); + command.exec(this); + if (paranoindLoggin) { + result.print(); + } else { + if (result.getStatus() != CommandExecResultStatus.DONE) { + result.print(); + } + } + return result; + } + + public static void enableParanoindLoggin() { + paranoindLoggin = true; + } +} diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/CommandExecResult.java b/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/CommandExecResult.java new file mode 100644 index 0000000..58e8cb0 --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/CommandExecResult.java @@ -0,0 +1,42 @@ +package link.pagan.traqtor._api.result; + +import java.util.ArrayList; +import link.pagan.traqtor._api.result.message.CommandExecMessage; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class CommandExecResult { + + final ArrayList messages; + + public CommandExecResult() { + this.messages = new ArrayList(); + } + + public void add(CommandExecMessage message) { + this.messages.add(message); + } + + public boolean OK () { + return this.getStatus() == CommandExecResultStatus.DONE; + } + + public CommandExecResultStatus getStatus() { + int status = 100; + for (CommandExecMessage message : messages) { + if (status > message.getStatus().getCode()) { + status = message.getStatus().getCode(); + } + } + return CommandExecResultStatus.ofCode(status); + } + + public void print() { + for (CommandExecMessage message : messages) { + message.print(); + } + } + +} diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/CommandExecResultStatus.java b/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/CommandExecResultStatus.java new file mode 100644 index 0000000..72a82ac --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/CommandExecResultStatus.java @@ -0,0 +1,27 @@ +package link.pagan.traqtor._api.result; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public enum CommandExecResultStatus { + DONE(0), + WARN(-1), + FAIL(-2); + + int code; + + private CommandExecResultStatus(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + + public static CommandExecResultStatus ofCode (int code) { + if (code < -1) return FAIL; + if (code == -1) return WARN; + return DONE; + } +} diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/message/CommandExecMessage.java b/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/message/CommandExecMessage.java new file mode 100644 index 0000000..da8fb75 --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/message/CommandExecMessage.java @@ -0,0 +1,33 @@ +package link.pagan.traqtor._api.result.message; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class CommandExecMessage { + + final CommandExecMessageStatus status; + final String message; + + public CommandExecMessage(CommandExecMessageStatus status, String message) { + this.status = status; + this.message = message; + } + + public CommandExecMessageStatus getStatus() { + return status; + } + + public String getMessage() { + return message; + } + + public void print() { +// if (status.getCode() < 0) { + System.out.println(status.toString() + " : " + message); +// } else { +// System.out.println(status.toString() + " : " + message); +// } + } + +} diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/message/CommandExecMessageStatus.java b/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/message/CommandExecMessageStatus.java new file mode 100644 index 0000000..b947457 --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/_api/result/message/CommandExecMessageStatus.java @@ -0,0 +1,28 @@ +/* + * 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._api.result.message; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public enum CommandExecMessageStatus { + INFO(1), + DONE(0), + WARN(-1), + FAIL(-2); + + int code; + + private CommandExecMessageStatus(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + +} 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 new file mode 100644 index 0000000..56e5954 --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/api/Traqtor.java @@ -0,0 +1,155 @@ +package link.pagan.traqtor.api; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import link.pagan.traqtor._api.Command; +import link.pagan.traqtor._api.Executor; +import link.pagan.traqtor._api.result.CommandExecResult; +import link.pagan.traqtor.api.workspace.Workspace; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class Traqtor extends Executor { + + private static Traqtor env = new Traqtor(); + + public static CommandExecResult exec(Command command) { + return env.execute(command); + } + + static void reset() { + env = new Traqtor(); + } + + Workspace workspace; + + public static Workspace getWorkspace() { + return env.workspace; + } + + + public static class CreateWorkspace extends Command { + + private final String name; + private final String path; + + public CreateWorkspace() { + this(Workspace.DEFAULT_WORKSPACE_NAME); + } + + public CreateWorkspace(String name) { + this(name, null); + } + + public CreateWorkspace(String name, String path) { + this.name = name; + this.path = path; + } + + @Override + public CommandExecResult exec(Traqtor traqtor) { + if (traqtor.workspace != null) { + return fail("There is an open workspace - please close this first, before creating new one"); + } + traqtor.workspace = new Workspace(); + traqtor.workspace.setName(name); + if (path != null) { + SaveAsWorkspace saveAsWorkspace = new SaveAsWorkspace(path); + saveAsWorkspace.setResultHolder(result); + saveAsWorkspace.exec(traqtor); + if (!result.OK()) { + traqtor.workspace = null; + return result; + } + } + return done(); + } + + } + + public static class SaveAsWorkspace extends Command { + + private String workspacePath; + + public SaveAsWorkspace(String workspacePath) { + this.workspacePath = workspacePath; + } + + @Override + public CommandExecResult exec(Traqtor traqtor) { + File workspaceDir = new File(workspacePath); + if (!workspaceDir.exists()) { + if (!workspaceDir.mkdir()) { + return fail("Failed to create workspace root directory at " + workspacePath); + } else { + info("Workspace root directory created at " + workspacePath); + } + } else { + if (workspaceDir.listFiles().length > 0) { + return fail("Root directory is not empty, failed to assing " + workspacePath + " as root for workspace"); + } + } + File workspaceFile = new File(workspacePath, Workspace.JSON_FILENAME + ".json"); + if (!workspaceFile.exists()) { + try { + if (!workspaceFile.createNewFile()){ + return fail("Failed to create " + Workspace.JSON_FILENAME + ".json in workspace root directory"); + } + } catch (IOException ex) { + return fail("IO erorr while creating " + Workspace.JSON_FILENAME + ".json in workspace root directory"); + } + } + + String hold = traqtor.workspace.getRoot(); + traqtor.workspace.setRoot(workspacePath); + + SaveWorkspace saveWorkspace = new SaveWorkspace(); + saveWorkspace.setResultHolder(result); + saveWorkspace.exec(traqtor); + if (!result.OK()) { + traqtor.workspace.setRoot(hold); + return result; + } + + return done(); + } + + } + + public static class SaveWorkspace extends Command { + + @Override + public CommandExecResult exec(Traqtor traqtor) { + String workspacePath = traqtor.workspace.getRoot(); + if (traqtor.workspace.getRoot() == null) { + 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"); + } + + try { + traqtor.workspace.getMapper().writeValue(workspaceFile, traqtor.workspace); + } catch (IOException ex) { + return fail("Failed to write " + Workspace.JSON_FILENAME + ".json"); + } + + traqtor.workspace.setDirty(false); + + return done(); + } + + } +} diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/api/project/Project.java b/traqtor-api/src/main/java/link/pagan/traqtor/api/project/Project.java new file mode 100644 index 0000000..78288c0 --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/api/project/Project.java @@ -0,0 +1,36 @@ +package link.pagan.traqtor.api.project; + +import java.util.ArrayList; +import java.util.List; +import link.pagan.traqtor.generator.blueprint.database.DatabaseBlueprint; +import link.pagan.traqtor.schema.basic.EndpointSchemaImpl; +import link.pagan.traqtor.schema.basic.data.DataTypeSchemaImpl; +import link.pagan.traqtor.schema.data.DataTypeSchema; +import link.pagan.traqtor.schema.logic.EndpointSchema; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class Project { + + private EndpointSchema endpointSchema; + private DataTypeSchema dataTypeSchema; + + private List dataBases; + + static Project init() { + return new Project(new EndpointSchemaImpl(), new DataTypeSchemaImpl()); + } + + public Project(EndpointSchema endpointSchema, DataTypeSchema dataTypeSchema) { + this.endpointSchema = endpointSchema; + this.dataTypeSchema = dataTypeSchema; + this.dataBases = new ArrayList(); + } + + void addDataBaseBlueprint(DatabaseBlueprint dataBaseBlueprint) { + this.dataBases.add(dataBaseBlueprint); + } + +} 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 new file mode 100644 index 0000000..0117696 --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/Workspace.java @@ -0,0 +1,61 @@ +package link.pagan.traqtor.api.workspace; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import link.pagan.traqtor._api.Executor; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +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"; + + private String name; + + @JsonIgnore + private boolean dirty; + + @JsonIgnore + private final ObjectMapper mapper; + + @JsonIgnore + private String root; + + public Workspace() { + this.mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT); + this.dirty = true; + } + + public String getName() { + return name; + } + + public String getRoot() { + return root; + } + + public void setRoot(String root) { + this.root = root; + } + + public void setName(String name) { + this.name = name; + } + + public ObjectMapper getMapper() { + return mapper; + } + + public boolean isDirty() { + return dirty; + } + + public void setDirty(boolean dirty) { + this.dirty = dirty; + } + +} diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/command/WorkbenchCommandSave.java b/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/command/WorkbenchCommandSave.java new file mode 100644 index 0000000..b3cc1cc --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/command/WorkbenchCommandSave.java @@ -0,0 +1,35 @@ +package link.pagan.traqtor.api.workspace.command; + +//package link.pagan.traqtor.api.workbench.command; +// +//import java.io.File; +//import java.io.IOException; +//import link.pagan.traqtor._api.Command; +//import link.pagan.traqtor._api.result.CommandExecResult; +//import link.pagan.traqtor.api.workbench.Workbench; +// +///** +// * +// * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} +// */ +//public class WorkbenchCommandSave extends Command { +// +// @Override +// public CommandExecResult exec(Workbench workbench) { +// if (workbench.getRoot() == null) { +// return fail("Workspace was not saved before - use \"save as\" command for the first save"); +// } +// File demoDir = new File(workbench.getRoot()); +// File workbenchFile = new File(demoDir, Workbench.JSON_FILENAME + ".json"); +// if (!workbenchFile.exists()) { +// return fail("Workspace lock file (" + (workbenchFile.getAbsolutePath()) + ") does not exit "); +// } +// try { +// workbench.getMapper().writeValue(workbenchFile, workbench); +// } catch (IOException ex) { +// return fail("Failed to write" + Workbench.JSON_FILENAME + ".json"); +// } +// return done(); +// } +// +//} diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/command/WorkbenchCommandSaveAs.java b/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/command/WorkbenchCommandSaveAs.java new file mode 100644 index 0000000..0b0d6e7 --- /dev/null +++ b/traqtor-api/src/main/java/link/pagan/traqtor/api/workspace/command/WorkbenchCommandSaveAs.java @@ -0,0 +1,47 @@ +package link.pagan.traqtor.api.workspace.command; + +//package link.pagan.traqtor.api.workbench.command; +// +//import java.io.File; +//import java.io.IOException; +//import link.pagan.traqtor._api.Command; +//import link.pagan.traqtor._api.result.CommandExecResult; +//import link.pagan.traqtor.api.workbench.Workbench; +// +///** +// * +// * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} +// */ +//public class WorkbenchCommandSaveAs extends Command { +// +// String path; +// +// public WorkbenchCommandSaveAs(String path) { +// this.path = path; +// } +// +// @Override +// public CommandExecResult exec(Workbench workbench) { +// File demoDir = new File(path); +// if (!demoDir.exists()) { +// if (!demoDir.mkdir()) { +// return fail("Failed to create workbench root directory at " + path); +// } else { +// info("Create workbench root directory at " + path); +// } +// } else { +// if (demoDir.listFiles().length > 0) { +// return fail("Root directory is not empty, failed to assing " + path + " as root for workspace"); +// } +// } +// File workbenchFile = new File(demoDir, Workbench.JSON_FILENAME + ".json"); +// try { +// workbench.getMapper().writeValue(workbenchFile, workbench); +// } catch (IOException ex) { +// return fail("Failed to write " + Workbench.JSON_FILENAME + ".json"); +// } +// workbench.setRoot(path); +// return done(); +// } +// +//} diff --git a/traqtor-api/src/test/java/link/pagan/traqtor/_api/TraqtorApiTestUtils.java b/traqtor-api/src/test/java/link/pagan/traqtor/_api/TraqtorApiTestUtils.java new file mode 100644 index 0000000..722c6aa --- /dev/null +++ b/traqtor-api/src/test/java/link/pagan/traqtor/_api/TraqtorApiTestUtils.java @@ -0,0 +1,28 @@ +package link.pagan.traqtor._api; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Comparator; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class TraqtorApiTestUtils { + + public static final String TEST_WORKSPACE_ROOT = new File(new File("").getAbsoluteFile().getParentFile(), "traqtor-demo-workspace").getAbsolutePath(); + public static final String TEST_WORKSPACE_NAME = "TRAQTOR_DEMO_WORKSPACE"; + + public static final void killTestRoot() throws IOException { + File root = new File(TEST_WORKSPACE_ROOT); + if (root.exists()) { + Files.walk(new File(TEST_WORKSPACE_ROOT).toPath()) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + } + +} 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 new file mode 100644 index 0000000..cd669b6 --- /dev/null +++ b/traqtor-api/src/test/java/link/pagan/traqtor/api/TraqtorTest.java @@ -0,0 +1,71 @@ +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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +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 + void newWorkspace() { + result = Traqtor.exec(new Traqtor.CreateWorkspace()); + assertEquals(result.getStatus(), DONE); + assertEquals(Traqtor.getWorkspace().isDirty(), true); + } + + @Test + void newWorkspaceSave() { + result = Traqtor.exec(new Traqtor.CreateWorkspace()); + assertEquals(DONE, result.getStatus()); + assertEquals(Traqtor.getWorkspace().isDirty(), true); + result = Traqtor.exec(new Traqtor.SaveWorkspace()); + assertEquals(FAIL, result.getStatus()); + assertEquals(Traqtor.getWorkspace().isDirty(), true); + } + + @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)); + assertEquals(DONE, result.getStatus()); + assertEquals(Traqtor.getWorkspace().isDirty(), false); + } + +} diff --git a/traqtor-api/src/test/java/link/pagan/traqtor/api/workspace/WorkspaceTest.java b/traqtor-api/src/test/java/link/pagan/traqtor/api/workspace/WorkspaceTest.java new file mode 100644 index 0000000..6320889 --- /dev/null +++ b/traqtor-api/src/test/java/link/pagan/traqtor/api/workspace/WorkspaceTest.java @@ -0,0 +1,55 @@ +package link.pagan.traqtor.api.workspace; + +//package link.pagan.traqtor.api.workbench; +// +//import link.pagan.traqtor.api.workbench.command.WorkbenchCommandSaveAs; +//import link.pagan.traqtor.api.workbench.command.WorkbenchCommandSave; +//import java.io.IOException; +//import link.pagan.traqtor._api.PrimedTest; +//import link.pagan.traqtor._api.Executor; +//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 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; +// +///** +// * +// * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} +// */ +//public class WorkbenchTest { +// +// @BeforeAll +// public static void setup() throws IOException { +// Executor.enableParanoindLoggin(); +// } +// +// @BeforeEach +// public void clean() throws IOException { +// killTestRoot(); +// } +// +//// @Test +//// void initSave() { +//// CommandExecResult result = Workbench.init().exec(new WorkbenchCommandSave()); +//// assertEquals(FAIL, result.getStatus()); +//// } +//// +//// @Test +//// void initSaveAs() { +//// CommandExecResult result = Workbench.init().exec(new WorkbenchCommandSaveAs(TEST_ROOT)); +//// assertEquals(DONE, result.getStatus()); +//// } +//// +//// @Test +//// void initSaveAsSave() { +//// Workbench workbench = Workbench.init(); +//// CommandExecResult result = workbench.exec(new WorkbenchCommandSaveAs(TEST_ROOT)); +//// assertEquals(DONE, result.getStatus()); +//// result = workbench.exec(new WorkbenchCommandSave()); +//// assertEquals(DONE, result.getStatus()); +//// } +// +//} diff --git a/traqtor-framework/pom.xml b/traqtor-framework/pom.xml new file mode 100644 index 0000000..8d1da00 --- /dev/null +++ b/traqtor-framework/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + link.pagan + traqtor + 0.0.1-SNAPSHOT + + link.pagan + traqtor-framework + 0.0.1-SNAPSHOT + jar + TraQtor / Framework + + UTF-8 + + + + org.hibernate.validator + hibernate-validator + 6.2.0.Final + + + org.glassfish + jakarta.el + 3.0.3 + + + org.apache.cayenne + cayenne-server + 4.1 + + + diff --git a/traqtor-framework/src/main/java/link/pagan/traqtor/framework/data/DatabaseDataObject.java b/traqtor-framework/src/main/java/link/pagan/traqtor/framework/data/DatabaseDataObject.java new file mode 100644 index 0000000..b9f1bf3 --- /dev/null +++ b/traqtor-framework/src/main/java/link/pagan/traqtor/framework/data/DatabaseDataObject.java @@ -0,0 +1,13 @@ +package link.pagan.traqtor.framework.data; + +import org.apache.cayenne.BaseDataObject; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DatabaseDataObject extends BaseDataObject { + + private static final long serialVersionUID = 1448137394405559485L; + +} diff --git a/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Registry.java b/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Registry.java new file mode 100644 index 0000000..c18fcc6 --- /dev/null +++ b/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Registry.java @@ -0,0 +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.framework.logic; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class Registry { + +} diff --git a/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Resource.java b/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Resource.java new file mode 100644 index 0000000..945f7fa --- /dev/null +++ b/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Resource.java @@ -0,0 +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.framework.logic; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class Resource { + +} diff --git a/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Service.java b/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Service.java new file mode 100644 index 0000000..eee8d1b --- /dev/null +++ b/traqtor-framework/src/main/java/link/pagan/traqtor/framework/logic/Service.java @@ -0,0 +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.framework.logic; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class Service { + +} diff --git a/traqtor-generator/pom.xml b/traqtor-generator/pom.xml new file mode 100644 index 0000000..ae83bfa --- /dev/null +++ b/traqtor-generator/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + link.pagan + traqtor + 0.0.1-SNAPSHOT + + link.pagan + traqtor-generator + 0.0.1-SNAPSHOT + jar + TraQtor / Source generator + + + ${project.groupId} + traqtor-schema + ${project.version} + + + + UTF-8 + 11 + 11 + + diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/ProjectBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/ProjectBlueprint.java new file mode 100644 index 0000000..4fbe7f0 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/ProjectBlueprint.java @@ -0,0 +1,25 @@ +/* + * 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.generator.blueprint; + +import link.pagan.traqtor.generator.blueprint.util.Name; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class ProjectBlueprint { + + String name; + Name rootPackage; + String description; + + + public void assemble() { + + } + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/R.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/R.java new file mode 100644 index 0000000..c81c9cc --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/R.java @@ -0,0 +1,30 @@ +package link.pagan.traqtor.generator.blueprint; + +import link.pagan.traqtor.generator.blueprint.database.builder.ColumnBlueprintBuilder; +import link.pagan.traqtor.generator.blueprint.database.builder.DatabaseBlueprintBuilder; +import link.pagan.traqtor.generator.blueprint.database.builder.SchemeBlueprintBuilder; +import link.pagan.traqtor.generator.blueprint.database.builder.TableBlueprintBuilder; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class R { + + public static DatabaseBlueprintBuilder database() { + return new DatabaseBlueprintBuilder(); + } + + public static SchemeBlueprintBuilder schema() { + return new SchemeBlueprintBuilder(); + } + + public static TableBlueprintBuilder table() { + return new TableBlueprintBuilder(); + } + + public static ColumnBlueprintBuilder column() { + return new ColumnBlueprintBuilder(); + } + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/backend/BackendBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/backend/BackendBlueprint.java new file mode 100644 index 0000000..04f59d8 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/backend/BackendBlueprint.java @@ -0,0 +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.generator.blueprint.backend; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class BackendBlueprint { + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/ColumnBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/ColumnBlueprint.java new file mode 100644 index 0000000..4cd237d --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/ColumnBlueprint.java @@ -0,0 +1,27 @@ +/* + * 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.generator.blueprint.database; + +import link.pagan.traqtor.generator.blueprint.util.Name; +import link.pagan.traqtor.schema.data.DataType; + + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class ColumnBlueprint { + + Name name; + DataType dataType; + + public ColumnBlueprint(Name name) { + this.name = name; + } + + + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/DatabaseBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/DatabaseBlueprint.java new file mode 100644 index 0000000..518cec1 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/DatabaseBlueprint.java @@ -0,0 +1,22 @@ +package link.pagan.traqtor.generator.blueprint.database; + +import java.util.List; +import link.pagan.traqtor.schema.data.mapping.database.DatabaseAdapter; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DatabaseBlueprint { + + String name; + private List schemas; + private DatabaseAdapter databaseAdapter; + + public DatabaseBlueprint(String name) { + this.name = name; + } + + + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/SchemeBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/SchemeBlueprint.java new file mode 100644 index 0000000..be693cc --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/SchemeBlueprint.java @@ -0,0 +1,19 @@ +/* + * 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.generator.blueprint.database; + +import java.util.ArrayList; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class SchemeBlueprint { + + String name; + ArrayList tables; + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/TableBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/TableBlueprint.java new file mode 100644 index 0000000..8f695be --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/TableBlueprint.java @@ -0,0 +1,19 @@ +/* + * 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.generator.blueprint.database; + +import java.util.ArrayList; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class TableBlueprint { + + String name; + ArrayList columns; + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/ColumnBlueprintBuilder.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/ColumnBlueprintBuilder.java new file mode 100644 index 0000000..4d87762 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/ColumnBlueprintBuilder.java @@ -0,0 +1,55 @@ +package link.pagan.traqtor.generator.blueprint.database.builder; + +import link.pagan.traqtor.generator.blueprint.database.ColumnBlueprint; +import link.pagan.traqtor.generator.blueprint.util.Name; +import link.pagan.traqtor.schema.data.DataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class ColumnBlueprintBuilder { + + private Name name; + private boolean pk; + private DataType dataType; + + public ColumnBlueprintBuilder() { + this.pk = false; + } + + public boolean pk() { + return this.pk; + } + + public ColumnBlueprintBuilder pk(boolean pk) { + this.pk = pk; + return this; + } + + public ColumnBlueprintBuilder name(Name name) { + this.name = name; + return this; + } + + + public Name name() { + return name; + } + + public DataType dataType() { + return dataType; + } + + public ColumnBlueprintBuilder dataType(DataType dataType) { + this.dataType = dataType; + return this; + } + + public ColumnBlueprint build() { + return new ColumnBlueprint(name); + } + + + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/DatabaseBlueprintBuilder.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/DatabaseBlueprintBuilder.java new file mode 100644 index 0000000..8471973 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/DatabaseBlueprintBuilder.java @@ -0,0 +1,57 @@ +package link.pagan.traqtor.generator.blueprint.database.builder; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import link.pagan.traqtor.generator.blueprint.util.Name; +import link.pagan.traqtor.schema.data.mapping.database.DatabaseAdapter; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DatabaseBlueprintBuilder { + + private Name name; + private DatabaseAdapter adapter; + private final List schemas; + + public DatabaseBlueprintBuilder() { + this.schemas = new ArrayList(); + } + + public Name name() { + return name; + } + + public DatabaseBlueprintBuilder name(Name name) { + this.name = name; + return this; + } + + public DatabaseAdapter adapter() { + return adapter; + } + + public DatabaseBlueprintBuilder adapter(DatabaseAdapter adapter) { + this.adapter = adapter; + return this; + } + + public DatabaseBlueprintBuilder schemas(SchemeBlueprintBuilder... schemas) { + if (schemas != null) { + Collections.addAll(this.schemas, schemas); + } + return this; + } + + public SchemeBlueprintBuilder scheme(Name name) { + for (SchemeBlueprintBuilder sbb : schemas) { + if (sbb.name().equals(name)) { + return sbb; + } + } + return null; + } + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/SchemeBlueprintBuilder.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/SchemeBlueprintBuilder.java new file mode 100644 index 0000000..d0ddad5 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/SchemeBlueprintBuilder.java @@ -0,0 +1,46 @@ +package link.pagan.traqtor.generator.blueprint.database.builder; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import link.pagan.traqtor.generator.blueprint.util.Name; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class SchemeBlueprintBuilder { + + private Name name; + private final List tables; + + public SchemeBlueprintBuilder() { + this.tables = new ArrayList(); + } + + public Name name() { + return name; + } + + public SchemeBlueprintBuilder name(Name name) { + this.name = name; + return this; + } + + public SchemeBlueprintBuilder tables(TableBlueprintBuilder... tables) { + if (tables != null) { + Collections.addAll(this.tables, tables); + } + return this; + } + + public TableBlueprintBuilder table(String name) { + for (TableBlueprintBuilder tbb : tables) { + if (tbb.name().equals(name)) { + return tbb; + } + } + return null; + } + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/TableBlueprintBuilder.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/TableBlueprintBuilder.java new file mode 100644 index 0000000..f4300a9 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/database/builder/TableBlueprintBuilder.java @@ -0,0 +1,46 @@ +package link.pagan.traqtor.generator.blueprint.database.builder; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import link.pagan.traqtor.generator.blueprint.util.Name; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class TableBlueprintBuilder { + + private Name name; + private final List columns; + + public TableBlueprintBuilder() { + this.columns = new ArrayList(); + } + + public Name name() { + return name; + } + + public TableBlueprintBuilder name(Name name) { + this.name = name; + return this; + } + + public TableBlueprintBuilder columns(ColumnBlueprintBuilder... columns) { + if (columns != null) { + Collections.addAll(this.columns, columns); + } + return this; + } + + public ColumnBlueprintBuilder column(String name) { + for (ColumnBlueprintBuilder cbb : columns) { + if (cbb.name().equals(name)) { + return cbb; + } + } + return null; + } + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/frontend/FrontendBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/frontend/FrontendBlueprint.java new file mode 100644 index 0000000..90db539 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/frontend/FrontendBlueprint.java @@ -0,0 +1,16 @@ +/* + * 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.generator.blueprint.frontend; + +import link.pagan.traqtor.generator.blueprint.backend.*; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class FrontendBlueprint { + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/EndpointBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/EndpointBlueprint.java new file mode 100644 index 0000000..7895d9c --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/EndpointBlueprint.java @@ -0,0 +1,20 @@ +/* + * 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.generator.blueprint.mdl.logic; + +import java.util.ArrayList; +import link.pagan.traqtor.generator.blueprint.mdl.security.permission.PermissionBlueprint; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class EndpointBlueprint { + + ArrayList permissions; + String name; + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/RegistryBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/RegistryBlueprint.java new file mode 100644 index 0000000..db20ab6 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/RegistryBlueprint.java @@ -0,0 +1,18 @@ +/* + * 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.generator.blueprint.mdl.logic; + +import java.util.ArrayList; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class RegistryBlueprint { + + ArrayList endpoints; + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/ResourceBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/ResourceBlueprint.java new file mode 100644 index 0000000..e65a968 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/ResourceBlueprint.java @@ -0,0 +1,19 @@ +/* + * 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.generator.blueprint.mdl.logic; + +import java.util.ArrayList; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class ResourceBlueprint { + + String name; + ArrayList endpoints; + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/ServiceBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/ServiceBlueprint.java new file mode 100644 index 0000000..acc2844 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/logic/ServiceBlueprint.java @@ -0,0 +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.generator.blueprint.mdl.logic; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class ServiceBlueprint { + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/permission/PermissionBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/permission/PermissionBlueprint.java new file mode 100644 index 0000000..ee421ad --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/permission/PermissionBlueprint.java @@ -0,0 +1,16 @@ +/* + * 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.generator.blueprint.mdl.security.permission; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class PermissionBlueprint { + + String name; + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/permission/PermissionDomainBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/permission/PermissionDomainBlueprint.java new file mode 100644 index 0000000..d542853 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/permission/PermissionDomainBlueprint.java @@ -0,0 +1,20 @@ +/* + * 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.generator.blueprint.mdl.security.permission; + +import java.util.ArrayList; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class PermissionDomainBlueprint { + + String name; + ArrayList permissions; + ArrayList subdomains; + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/role/RoleBlueprint.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/role/RoleBlueprint.java new file mode 100644 index 0000000..b349872 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/mdl/security/role/RoleBlueprint.java @@ -0,0 +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.generator.blueprint.mdl.security.role; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class RoleBlueprint { + +} diff --git a/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/util/Name.java b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/util/Name.java new file mode 100644 index 0000000..4656cd2 --- /dev/null +++ b/traqtor-generator/src/main/java/link/pagan/traqtor/generator/blueprint/util/Name.java @@ -0,0 +1,34 @@ +/* + * 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.generator.blueprint.util; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class Name { + + String [] parts; + + public Name(String[] parts) { + this.parts = parts; + } + + public static Name of (String... parts) { + if (parts == null) { + throw new NullPointerException("name can not be null"); + } + if (parts.length < 1) { + throw new IllegalArgumentException("name can not be empty"); + } + return new Name(parts); + } + + + + + +} diff --git a/traqtor-schema-ref/pom.xml b/traqtor-schema-ref/pom.xml new file mode 100644 index 0000000..5d946d6 --- /dev/null +++ b/traqtor-schema-ref/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + link.pagan + traqtor + 0.0.1-SNAPSHOT + + link.pagan + traqtor-schema-ref + 0.0.1-SNAPSHOT + jar + TraQtor / Scheme / Reference implementation + + UTF-8 + 11 + 11 + + + + ${project.groupId} + traqtor-schema + ${project.version} + + + diff --git a/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/EndpointSchemaImpl.java b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/EndpointSchemaImpl.java new file mode 100644 index 0000000..015e5f3 --- /dev/null +++ b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/EndpointSchemaImpl.java @@ -0,0 +1,25 @@ +/* + * 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.basic; + +import java.util.List; +import link.pagan.traqtor.schema.logic.EndpointSchema; +import link.pagan.traqtor.schema.logic.EndpointTemplate; + + + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class EndpointSchemaImpl implements EndpointSchema { + + @Override + public List getPatterns() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + +} diff --git a/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/DataTypeSchemaImpl.java b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/DataTypeSchemaImpl.java new file mode 100644 index 0000000..c9a71bb --- /dev/null +++ b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/DataTypeSchemaImpl.java @@ -0,0 +1,76 @@ +package link.pagan.traqtor.schema.basic.data; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import link.pagan.traqtor.schema.basic.data.mapping.MappingSchemaImpl; +import link.pagan.traqtor.schema.data.DataType; +import link.pagan.traqtor.schema.data.DataTypeSchema; +import link.pagan.traqtor.schema.data.mapping.MappingSchema; + + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DataTypeSchemaImpl implements DataTypeSchema { + + // ARRAY(""), + // LIST(""), + // SET(""), + // MAP(""), + public static final DataType BOOLEAN = new DataType("boolean"); + public static final DataType BYTE = new DataType("byte"); + public static final DataType SHORT = new DataType("short"); + public static final DataType INTEGER = new DataType("int"); + public static final DataType LONG = new DataType("long"); + public static final DataType FLOAT = new DataType("float"); + public static final DataType DOUBLE = new DataType("double"); + public static final DataType STRING = new DataType("string"); + public static final DataType DATE = new DataType("date"); + public static final DataType TIME = new DataType("time"); + public static final DataType TIMESTAMP = new DataType("timestamp"); + public static final DataType ID = new DataType("id"); + public static final DataType UUID = new DataType("uuid"); + + private static final List dataTypes = List.of(BOOLEAN, BYTE, SHORT, INTEGER, LONG, FLOAT, DOUBLE, STRING, + DATE, TIME, TIMESTAMP, ID, UUID); + + private static final List mappingSchemas = List.of(new MappingSchemaImpl()); + + @Override + public List getDataTypes() { + return dataTypes; + } + + @Override + public String getName() { + return "basic"; + } + + @Override + public List getMappingSchema() { + return mappingSchemas; + } + + @Override + public Map register() { + return new HashMap(){{ + put(BOOLEAN.getName(), BOOLEAN); + put(BYTE.getName(), BYTE); + put(SHORT.getName(), SHORT); + put(INTEGER.getName(), INTEGER); + put(LONG.getName(), LONG); + put(FLOAT.getName(), FLOAT); + put(DOUBLE.getName(), DOUBLE); + put(STRING.getName(), STRING); + put(BOOLEAN.getName(), BOOLEAN); + put(DATE.getName(), DATE); + put(TIME.getName(), TIME); + put(TIMESTAMP.getName(), TIMESTAMP); + put(ID.getName(), ID); + put(UUID.getName(), UUID); + }}; + } + +} diff --git a/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/MappingSchemaImpl.java b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/MappingSchemaImpl.java new file mode 100644 index 0000000..d211b53 --- /dev/null +++ b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/MappingSchemaImpl.java @@ -0,0 +1,56 @@ +package link.pagan.traqtor.schema.basic.data.mapping; + +import java.util.List; +import link.pagan.traqtor.schema.basic.data.DataTypeSchemaImpl; +import link.pagan.traqtor.schema.data.mapping.MappingEntry; +import link.pagan.traqtor.schema.data.mapping.MappingSchema; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class MappingSchemaImpl implements MappingSchema { + + public static final MappingEntry NULLABLE_BOOLEAN = new MappingEntry(DataTypeSchemaImpl.BOOLEAN , true , false ); + public static final MappingEntry BOOLEAN = new MappingEntry(DataTypeSchemaImpl.BOOLEAN , false , true ); + public static final MappingEntry NULLABLE_BYTE = new MappingEntry(DataTypeSchemaImpl.BYTE , true , false ); + public static final MappingEntry BYTE = new MappingEntry(DataTypeSchemaImpl.BYTE , false , true ); + public static final MappingEntry NULLABLE_SHORT = new MappingEntry(DataTypeSchemaImpl.SHORT , true , false ); + public static final MappingEntry SHORT = new MappingEntry(DataTypeSchemaImpl.SHORT , false , true ); + public static final MappingEntry NULLABLE_INTEGER = new MappingEntry(DataTypeSchemaImpl.INTEGER , true , false ); + public static final MappingEntry INTEGER = new MappingEntry(DataTypeSchemaImpl.INTEGER , false , true ); + public static final MappingEntry NULLABLE_LONG = new MappingEntry(DataTypeSchemaImpl.LONG , true , false ); + public static final MappingEntry LONG = new MappingEntry(DataTypeSchemaImpl.LONG , false , true ); + public static final MappingEntry NULLABLE_FLOAT = new MappingEntry(DataTypeSchemaImpl.FLOAT , true , false ); + public static final MappingEntry FLOAT = new MappingEntry(DataTypeSchemaImpl.FLOAT , false , false ); + public static final MappingEntry NULLABLE_DOUBLE = new MappingEntry(DataTypeSchemaImpl.DOUBLE , true , false ); + public static final MappingEntry DOUBLE = new MappingEntry(DataTypeSchemaImpl.DOUBLE , false , false ); + public static final MappingEntry STRING = new MappingEntry(DataTypeSchemaImpl.STRING , true , false ); + public static final MappingEntry DATE = new MappingEntry(DataTypeSchemaImpl.DATE , true , false ); + public static final MappingEntry TIME = new MappingEntry(DataTypeSchemaImpl.TIME , true , false ); + public static final MappingEntry TIMESTAMP = new MappingEntry(DataTypeSchemaImpl.TIMESTAMP , true , false ); + public static final MappingEntry ID = new MappingEntry(DataTypeSchemaImpl.ID , true , true ); + public static final MappingEntry UUID = new MappingEntry(DataTypeSchemaImpl.UUID , true , true ); + + private static final List mappings = List.of(NULLABLE_BOOLEAN, BOOLEAN, + NULLABLE_BYTE, BYTE, + NULLABLE_SHORT, SHORT, + NULLABLE_INTEGER, INTEGER, + NULLABLE_LONG, LONG, + NULLABLE_FLOAT, FLOAT, + NULLABLE_DOUBLE, DOUBLE, + STRING, + DATE, TIME, TIMESTAMP, + ID, UUID); + + @Override + public List getMappings() { + return mappings; + } + + @Override + public String getName() { + return "basic"; + } + +} diff --git a/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/backend/JavaBackendMapping.java b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/backend/JavaBackendMapping.java new file mode 100644 index 0000000..9278d5c --- /dev/null +++ b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/backend/JavaBackendMapping.java @@ -0,0 +1,48 @@ +package link.pagan.traqtor.schema.basic.data.mapping.backend; + +import java.util.HashMap; +import link.pagan.traqtor.schema.basic.data.mapping.MappingSchemaImpl; +import link.pagan.traqtor.schema.data.mapping.backend.BackendMapping; +import link.pagan.traqtor.schema.data.mapping.MappingEntry; + + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class JavaBackendMapping extends BackendMapping { + + public JavaBackendMapping() { + super("Java", new HashMap() { + private static final long serialVersionUID = 1L; + { + put(MappingSchemaImpl.NULLABLE_BOOLEAN, "Boolean"); + put(MappingSchemaImpl.NULLABLE_BYTE, "Byte"); + put(MappingSchemaImpl.NULLABLE_SHORT, "Short"); + put(MappingSchemaImpl.NULLABLE_INTEGER, "Integer"); + put(MappingSchemaImpl.NULLABLE_LONG, "Long"); + + put(MappingSchemaImpl.BOOLEAN, "boolean"); + put(MappingSchemaImpl.BYTE, "byte"); + put(MappingSchemaImpl.SHORT, "short"); + put(MappingSchemaImpl.INTEGER, "integer"); + put(MappingSchemaImpl.LONG, "long"); + + put(MappingSchemaImpl.NULLABLE_DOUBLE, "Double"); + put(MappingSchemaImpl.NULLABLE_FLOAT, "Float"); + + put(MappingSchemaImpl.DOUBLE, "double"); + put(MappingSchemaImpl.FLOAT, "float"); + + put(MappingSchemaImpl.ID, "long"); + put(MappingSchemaImpl.UUID, "String"); + + put(MappingSchemaImpl.STRING, "String"); + put(MappingSchemaImpl.DATE, "Date"); + put(MappingSchemaImpl.TIME, "Time"); + put(MappingSchemaImpl.TIMESTAMP, "Timestamp"); + } + }); + } + +} diff --git a/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/database/PostgresDatabaseAdapter.java b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/database/PostgresDatabaseAdapter.java new file mode 100644 index 0000000..48f34c8 --- /dev/null +++ b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/database/PostgresDatabaseAdapter.java @@ -0,0 +1,31 @@ +/* + * 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.basic.data.mapping.database; + +import java.util.HashMap; +import java.util.Map; +import link.pagan.traqtor.schema.data.mapping.database.DatabaseAdapter; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class PostgresDatabaseAdapter extends DatabaseAdapter { + + private static final String NAME = "PostgreSQL"; + + public PostgresDatabaseAdapter() { + super(NAME); + } + + @Override + public Map register() { + return new HashMap(){{ + put(NAME, new PostgresDatabaseAdapter()); + }}; + } + +} diff --git a/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/database/PostgresDatabaseMapping.java b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/database/PostgresDatabaseMapping.java new file mode 100644 index 0000000..5958426 --- /dev/null +++ b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/database/PostgresDatabaseMapping.java @@ -0,0 +1,47 @@ +package link.pagan.traqtor.schema.basic.data.mapping.database; + +import java.util.HashMap; +import link.pagan.traqtor.schema.basic.data.mapping.MappingSchemaImpl; +import link.pagan.traqtor.schema.data.mapping.database.DatabaseMapping; +import link.pagan.traqtor.schema.data.mapping.MappingEntry; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class PostgresDatabaseMapping extends DatabaseMapping { + + public PostgresDatabaseMapping() { + super("PostgreSQL", new HashMap() { + private static final long serialVersionUID = 1L; + { + put(MappingSchemaImpl.NULLABLE_BOOLEAN, "boolean"); + put(MappingSchemaImpl.NULLABLE_BYTE, "smallint"); + put(MappingSchemaImpl.NULLABLE_SHORT, "smallint"); + put(MappingSchemaImpl.NULLABLE_INTEGER, "integer"); + put(MappingSchemaImpl.NULLABLE_LONG, "bigint"); + + put(MappingSchemaImpl.BOOLEAN, "boolean"); + put(MappingSchemaImpl.BYTE, "smallint"); + put(MappingSchemaImpl.SHORT, "smallint"); + put(MappingSchemaImpl.INTEGER, "integer"); + put(MappingSchemaImpl.LONG, "bigint"); + + put(MappingSchemaImpl.NULLABLE_DOUBLE, "double precision"); + put(MappingSchemaImpl.NULLABLE_FLOAT, "real"); + + put(MappingSchemaImpl.DOUBLE, "double precision"); + put(MappingSchemaImpl.FLOAT, "real"); + + put(MappingSchemaImpl.ID, "bigserial"); + put(MappingSchemaImpl.UUID, "uuid"); + + put(MappingSchemaImpl.STRING, "String"); + put(MappingSchemaImpl.DATE, "date"); + put(MappingSchemaImpl.TIME, "time"); + put(MappingSchemaImpl.TIMESTAMP, "timestamp"); + } + }); + } + +} diff --git a/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/frontend/JavaScriptFrontendMapping.java b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/frontend/JavaScriptFrontendMapping.java new file mode 100644 index 0000000..b3ca18a --- /dev/null +++ b/traqtor-schema-ref/src/main/java/link/pagan/traqtor/schema/basic/data/mapping/frontend/JavaScriptFrontendMapping.java @@ -0,0 +1,47 @@ +package link.pagan.traqtor.schema.basic.data.mapping.frontend; + +import java.util.HashMap; +import link.pagan.traqtor.schema.basic.data.mapping.MappingSchemaImpl; +import link.pagan.traqtor.schema.data.mapping.frontend.FrontendMapping; +import link.pagan.traqtor.schema.data.mapping.MappingEntry; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class JavaScriptFrontendMapping extends FrontendMapping { + + public JavaScriptFrontendMapping() { + super("JavaScript", new HashMap() { + private static final long serialVersionUID = 1L; + { + put(MappingSchemaImpl.NULLABLE_BOOLEAN, "Boolean"); + put(MappingSchemaImpl.NULLABLE_BYTE, "Number"); + put(MappingSchemaImpl.NULLABLE_SHORT, "Number"); + put(MappingSchemaImpl.NULLABLE_INTEGER, "Number"); + put(MappingSchemaImpl.NULLABLE_LONG, "BigInt"); + + put(MappingSchemaImpl.BOOLEAN, "Boolean"); + put(MappingSchemaImpl.BYTE, "Number"); + put(MappingSchemaImpl.SHORT, "Number"); + put(MappingSchemaImpl.INTEGER, "Number"); + put(MappingSchemaImpl.LONG, "BigInt"); + + put(MappingSchemaImpl.NULLABLE_DOUBLE, "Number"); + put(MappingSchemaImpl.NULLABLE_FLOAT, "Number"); + + put(MappingSchemaImpl.DOUBLE, "Number"); + put(MappingSchemaImpl.FLOAT, "Number"); + + put(MappingSchemaImpl.ID, "BigInt"); + put(MappingSchemaImpl.UUID, "String"); + + put(MappingSchemaImpl.STRING, "String"); + put(MappingSchemaImpl.DATE, "Date"); + put(MappingSchemaImpl.TIME, "Date"); + put(MappingSchemaImpl.TIMESTAMP, "Date"); + } + }); + } + +} diff --git a/traqtor-schema/pom.xml b/traqtor-schema/pom.xml new file mode 100644 index 0000000..5d5645b --- /dev/null +++ b/traqtor-schema/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + link.pagan + traqtor + 0.0.1-SNAPSHOT + + link.pagan + traqtor-schema + 0.0.1-SNAPSHOT + jar + TraQtor / Scheme + + UTF-8 + 11 + 11 + + + + + + \ No newline at end of file diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/DataType.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/DataType.java new file mode 100644 index 0000000..7fb971d --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/DataType.java @@ -0,0 +1,19 @@ +package link.pagan.traqtor.schema.data; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DataType { + + private final String name; + + public DataType(String name) { + this.name = name; + } + + public String getName() { + return name; + } + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/DataTypeSchema.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/DataTypeSchema.java new file mode 100644 index 0000000..2a536d3 --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/DataTypeSchema.java @@ -0,0 +1,17 @@ +package link.pagan.traqtor.schema.data; + +import link.pagan.traqtor.schema.data.mapping.MappingSchema; +import link.pagan.traqtor.util.Named; +import java.util.List; +import link.pagan.traqtor.util.Registrable; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public interface DataTypeSchema extends Named, Registrable { + + public List getDataTypes(); + public List getMappingSchema(); + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/Mapping.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/Mapping.java new file mode 100644 index 0000000..bbc1a53 --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/Mapping.java @@ -0,0 +1,27 @@ +package link.pagan.traqtor.schema.data.mapping; + +import java.util.HashMap; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class Mapping { + + private final String name; + private final HashMap mapping; + + protected Mapping(String name, HashMap mapping) { + this.mapping = mapping; + this.name = name; + } + + public String getName() { + return name; + } + + public HashMap getMapping() { + return mapping; + } + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/MappingEntry.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/MappingEntry.java new file mode 100644 index 0000000..2751841 --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/MappingEntry.java @@ -0,0 +1,35 @@ +package link.pagan.traqtor.schema.data.mapping; + +import link.pagan.traqtor.schema.data.DataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class MappingEntry { + + + + private final DataType dataType; + private final boolean nullable; + private final boolean keyable; + + public MappingEntry(DataType dataType, boolean nullable, boolean keyable) { + this.dataType = dataType; + this.nullable = nullable; + this.keyable = keyable; + } + + public DataType getDataType() { + return dataType; + } + + public boolean isNullable() { + return nullable; + } + + public boolean isKeyable() { + return keyable; + } + +} 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 new file mode 100644 index 0000000..267cb0e --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/MappingSchema.java @@ -0,0 +1,20 @@ +/* + * 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/backend/BackendMapping.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/backend/BackendMapping.java new file mode 100644 index 0000000..87d59e2 --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/backend/BackendMapping.java @@ -0,0 +1,17 @@ +package link.pagan.traqtor.schema.data.mapping.backend; + +import java.util.HashMap; +import link.pagan.traqtor.schema.data.mapping.Mapping; +import link.pagan.traqtor.schema.data.mapping.MappingEntry; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class BackendMapping extends Mapping { + + public BackendMapping(String name, HashMap mapping) { + super(name, mapping); + } + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseAdapter.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseAdapter.java new file mode 100644 index 0000000..6f0eb67 --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseAdapter.java @@ -0,0 +1,23 @@ +package link.pagan.traqtor.schema.data.mapping.database; + +import link.pagan.traqtor.util.Named; +import link.pagan.traqtor.util.Registrable; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class DatabaseAdapter implements Named, Registrable { + + private final String name; + + protected DatabaseAdapter(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseMapping.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseMapping.java new file mode 100644 index 0000000..9a1eecf --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseMapping.java @@ -0,0 +1,19 @@ +package link.pagan.traqtor.schema.data.mapping.database; + +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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DatabaseMapping extends Mapping { + + public DatabaseMapping(String name, HashMap mapping) { + super(name, mapping); + } + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseNamingScheme.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseNamingScheme.java new file mode 100644 index 0000000..f6001c7 --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/database/DatabaseNamingScheme.java @@ -0,0 +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.database; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public interface DatabaseNamingScheme { + +} 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 new file mode 100644 index 0000000..7454bca --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/data/mapping/frontend/FrontendMapping.java @@ -0,0 +1,19 @@ +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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class FrontendMapping extends Mapping { + + public FrontendMapping(String name, HashMap mapping) { + super(name, mapping); + } + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/logic/EndpointSchema.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/logic/EndpointSchema.java new file mode 100644 index 0000000..0774e7c --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/logic/EndpointSchema.java @@ -0,0 +1,18 @@ +/* + * 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.logic; + +import java.util.List; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public interface EndpointSchema { + + public List getPatterns(); + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/schema/logic/EndpointTemplate.java b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/logic/EndpointTemplate.java new file mode 100644 index 0000000..82ec908 --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/schema/logic/EndpointTemplate.java @@ -0,0 +1,16 @@ +/* + * 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.logic; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class EndpointTemplate { + + + +} diff --git a/traqtor-schema/src/main/java/link/pagan/traqtor/util/Named.java b/traqtor-schema/src/main/java/link/pagan/traqtor/util/Named.java new file mode 100644 index 0000000..310a7bb --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/util/Named.java @@ -0,0 +1,11 @@ +package link.pagan.traqtor.util; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public interface Named { + + public String getName(); + +} 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 new file mode 100644 index 0000000..b58bf7d --- /dev/null +++ b/traqtor-schema/src/main/java/link/pagan/traqtor/util/Registrable.java @@ -0,0 +1,19 @@ +/* + * 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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public interface Registrable { + + public Map register(); + +}