Fixed type hierarchy problem on command-executor-object api level

master
Edward M. Kagan 5 years ago
parent 7438de77ef
commit f02b304cd7

1
.gitignore vendored

@ -4,3 +4,4 @@ target
.gitignore .gitignore
.classpath .classpath
nbactions.xml nbactions.xml
traqtor-demo-workspace

@ -0,0 +1,9 @@
package link.pagan.traqtor._api;
/**
*
* @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >}
*/
abstract class Commanded<SELF extends Commanded<SELF>> {
}

@ -7,25 +7,33 @@ import link.pagan.traqtor._api.result.CommandExecResultStatus;
* *
* @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >}
*/ */
public abstract class Executor<T> { public abstract class Executor<T extends Executor<T>> extends Commanded<T> {
private static boolean paranoindLoggin = false; private static boolean paranoindLoggin = false;
private static boolean mute = true;
public CommandExecResult execute(Command<Executor<T>> command) { public CommandExecResult execute(Command<T> command, T arg) {
CommandExecResult result = new CommandExecResult(); CommandExecResult result = new CommandExecResult();
command.setResultHolder(result); command.setResultHolder(result);
command.exec(this); command.exec(arg);
if (paranoindLoggin) { if (!mute){
result.print(); if (paranoindLoggin) {
} else {
if (result.getStatus() != CommandExecResultStatus.DONE) {
result.print(); result.print();
} else {
if (result.getStatus() != CommandExecResultStatus.DONE) {
result.print();
}
} }
} }
return result; return result;
} }
public static void enableParanoindLoggin() { public static void enableParanoindLoggin() {
enableLog();
paranoindLoggin = true; paranoindLoggin = true;
} }
public static void enableLog() {
mute = false;
}
} }

@ -11,12 +11,12 @@ import link.pagan.traqtor.api.workspace.Workspace;
* *
* @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >}
*/ */
public class Traqtor extends Executor { public class Traqtor extends Executor<Traqtor> {
private static Traqtor env = new Traqtor(); private static Traqtor env = new Traqtor();
public static CommandExecResult exec(Command<Traqtor> command) { public static CommandExecResult exec(Command<Traqtor> command) {
return env.execute(command); return env.execute(command, env);
} }
static void reset() { static void reset() {
@ -29,7 +29,6 @@ public class Traqtor extends Executor {
return env.workspace; return env.workspace;
} }
public static class CreateWorkspace extends Command<Traqtor> { public static class CreateWorkspace extends Command<Traqtor> {
private final String name; private final String name;

@ -9,7 +9,7 @@ import link.pagan.traqtor._api.Executor;
* *
* @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >}
*/ */
public class Workspace extends Executor { public class Workspace extends Executor<Workspace> {
public static final String JSON_FILENAME = "workspace"; 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"; 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; this.dirty = dirty;
} }
// @Override
// Workspace self() {
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
// }
} }

@ -1,14 +1,12 @@
package link.pagan.traqtor.api; package link.pagan.traqtor.api;
import java.io.IOException; import java.io.IOException;
import link.pagan.traqtor._api.Executor;
import link.pagan.traqtor._api.TraqtorApiTestUtils; import link.pagan.traqtor._api.TraqtorApiTestUtils;
import link.pagan.traqtor._api.result.CommandExecResult; import link.pagan.traqtor._api.result.CommandExecResult;
import static link.pagan.traqtor._api.result.CommandExecResultStatus.DONE; import static link.pagan.traqtor._api.result.CommandExecResultStatus.DONE;
import static link.pagan.traqtor._api.result.CommandExecResultStatus.FAIL; import static link.pagan.traqtor._api.result.CommandExecResultStatus.FAIL;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
import static org.junit.jupiter.api.Assertions.assertEquals; 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.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -20,11 +18,6 @@ public class TraqtorTest {
CommandExecResult result; CommandExecResult result;
@BeforeAll
public static void setup() {
Executor.enableParanoindLoggin();
}
@BeforeEach @BeforeEach
public void cleanTestDir() throws IOException { public void cleanTestDir() throws IOException {
TraqtorApiTestUtils.killTestRoot(); TraqtorApiTestUtils.killTestRoot();
@ -34,7 +27,6 @@ public class TraqtorTest {
@AfterEach @AfterEach
public void killCore() { public void killCore() {
Traqtor.reset(); Traqtor.reset();
System.out.println("TEST_WORKSPACE_ROOT = " + TraqtorApiTestUtils.TEST_WORKSPACE_ROOT);
} }
@Test @Test
@ -52,6 +44,9 @@ public class TraqtorTest {
result = Traqtor.exec(new Traqtor.SaveWorkspace()); result = Traqtor.exec(new Traqtor.SaveWorkspace());
assertEquals(FAIL, result.getStatus()); assertEquals(FAIL, result.getStatus());
assertEquals(Traqtor.getWorkspace().isDirty(), true); 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 @Test

@ -1,13 +1,7 @@
/*
* 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; package link.pagan.traqtor.schema.data.mapping;
import link.pagan.traqtor.util.Named; import link.pagan.traqtor.util.Named;
import java.util.List; import java.util.List;
import link.pagan.traqtor.schema.data.mapping.MappingEntry;
/** /**
* *

@ -2,8 +2,6 @@ package link.pagan.traqtor.schema.data.mapping.frontend;
import java.util.HashMap; 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.Mapping;
import link.pagan.traqtor.schema.data.mapping.MappingEntry;
import link.pagan.traqtor.schema.data.mapping.MappingEntry; import link.pagan.traqtor.schema.data.mapping.MappingEntry;
/** /**

@ -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; package link.pagan.traqtor.util;
import java.util.Map; import java.util.Map;
import link.pagan.traqtor.schema.data.mapping.database.DatabaseAdapter;
/** /**
* *

Loading…
Cancel
Save