diff --git a/.vscode/formatting.xml b/.vscode/formatting.xml
index 0200049..0e073a3 100644
--- a/.vscode/formatting.xml
+++ b/.vscode/formatting.xml
@@ -1,420 +1,420 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 640c1c3..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- 4.0.0
-
- link.pagan
- traqtor
- 0.0.1-SNAPSHOT
- pom
- TraQtor
-
-
- traqtor-aio
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.2
-
- 11
- 11
-
-
-
-
-
diff --git a/traqtor-aio/pom.xml b/traqtor-aio/pom.xml
index 58a8dc9..18ff3df 100644
--- a/traqtor-aio/pom.xml
+++ b/traqtor-aio/pom.xml
@@ -1,11 +1,11 @@
4.0.0
-
+
link.pagan
traqtor-aio
0.0.1-SNAPSHOT
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/Directoried.java b/traqtor-aio/src/main/java/link/pagan/traqtor/Directoried.java
deleted file mode 100644
index 7bb4a29..0000000
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/Directoried.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * 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;
-
-import java.io.File;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public interface Directoried {
-
- public File dir ();
-
-}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/Filed.java b/traqtor-aio/src/main/java/link/pagan/traqtor/Filed.java
deleted file mode 100644
index 6914d81..0000000
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/Filed.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * 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;
-
-import java.io.File;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public interface Filed {
-
- public File file ();
-
-}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/deck/SystemConfig.java b/traqtor-aio/src/main/java/link/pagan/traqtor/deck/SystemConfig.java
deleted file mode 100644
index 06c6244..0000000
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/deck/SystemConfig.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package link.pagan.traqtor.deck;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import link.pagan.traqtor.Workspace;
-import link.pagan.traqtor.WorkspaceSerializer;
-import link.pagan.traqtor.project.universe.UniverseProject;
-import link.pagan.traqtor.project.universe.UniverseProjectSerializer;
-import link.pagan.traqtor.project.universe.element.Element;
-import link.pagan.traqtor.project.universe.element.ElementSerializer;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.element.PaticleInfoSerializer;
-import link.pagan.traqtor.project.universe.link.Link;
-import link.pagan.traqtor.project.universe.link.LinkSerializer;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.ConstraintInfoSerializer;
-import link.pagan.traqtor.util.Name;
-import link.pagan.traqtor.util.NameSerializer;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public abstract class SystemConfig {
-
- public static final ObjectMapper JSON = new ObjectMapper()
- .enable(SerializationFeature.INDENT_OUTPUT)
- .registerModule(new SimpleModule()
- .addSerializer(Name.class, new NameSerializer())
- .addSerializer(UniverseProject.class, new UniverseProjectSerializer())
- .addSerializer(Element.class, new ElementSerializer())
- .addSerializer(Particle.class, new PaticleInfoSerializer())
- .addSerializer(Constraint.class, new ConstraintInfoSerializer())
- .addSerializer(Link.class, new LinkSerializer())
- .addSerializer(Workspace.class, new WorkspaceSerializer()));
-
-}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/MessageType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/MessageType.java
deleted file mode 100644
index 310d061..0000000
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/MessageType.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package link.pagan.traqtor.deck.op;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public enum MessageType {
- INFO,
- WARN,
- FAIL
-}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/mapping/MappingEntry.java b/traqtor-aio/src/main/java/link/pagan/traqtor/mapping/MappingEntry.java
index 5a83ebf..9338247 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/mapping/MappingEntry.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/mapping/MappingEntry.java
@@ -1,6 +1,6 @@
package link.pagan.traqtor.mapping;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
public class MappingEntry {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/Workspace.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/Workspace.java
similarity index 67%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/Workspace.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/Workspace.java
index eec072c..b5750a8 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/Workspace.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/Workspace.java
@@ -1,29 +1,48 @@
-package link.pagan.traqtor;
-
+package link.pagan.traqtor.model;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import link.pagan.traqtor.util.io.Filed;
+import link.pagan.traqtor.util.io.Directoried;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import link.pagan.traqtor.deck.SystemConfig;
-import link.pagan.traqtor.deck.op.OperationResult;
-import link.pagan.traqtor.project.Project;
-import link.pagan.traqtor.project.database.DatabaseProject;
-import link.pagan.traqtor.project.universe.UniverseProject;
+import link.pagan.traqtor.util.op.OperationObjectResult;
+import link.pagan.traqtor.util.op.OperationResult;
+import link.pagan.traqtor.model.project.Project;
+import link.pagan.traqtor.model.project.database.DatabaseProject;
+import link.pagan.traqtor.model.project.universe.UniverseProject;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+@JsonDeserialize(using = WorkspaceDeserializer.class)
+@JsonSerialize(using = WorkspaceSerializer.class)
public class Workspace implements Filed, Directoried {
+ private ObjectMapper json;
+
private File root;
- // private File lockFile;
private Name name;
private boolean dirty;
+ private boolean pretty;
+
private final List projects;
+ public Workspace () {
+ this.root = null;
+ this.dirty = true;
+ this.pretty = true;
+ this.json = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+ this.projects = new ArrayList();
+ }
+
public UniverseProject universe () {
UniverseProject project = new UniverseProject(this);
this.projects.add(project);
@@ -38,20 +57,10 @@ public class Workspace implements Filed, Directoried {
return project;
}
- public Workspace () {
- this.root = null;
- this.dirty = true;
- this.projects = new ArrayList();
- }
-
public Name name () {
return this.name;
}
- public Workspace name (String... parts) {
- return name(Name.of(parts));
- }
-
public Workspace name (Name name) {
this.name = name;
return this;
@@ -72,7 +81,16 @@ public class Workspace implements Filed, Directoried {
return root;
}
- public Workspace root (File root) {
+ @Override
+ public File file () {
+ return file(Workspace.this.dir());
+ }
+
+ private static File file (File dir) {
+ return new File(dir, ".tw");
+ }
+
+ public Workspace dir (File root) {
this.root = root;
return this;
}
@@ -85,8 +103,26 @@ public class Workspace implements Filed, Directoried {
return dirty;
}
+ public boolean pretty () {
+ return pretty;
+ }
+
+ public void pretty (boolean pretty) {
+
+ if (pretty) {
+ this.json.enable(SerializationFeature.INDENT_OUTPUT);
+ } else {
+ this.json.disable(SerializationFeature.INDENT_OUTPUT);
+ }
+ this.pretty = pretty;
+ }
+
+ public ObjectMapper json () {
+ return json;
+ }
+
public OperationResult saveAs (File parentDir) {
- return saveAs(this, parentDir, OperationResult.start());
+ return saveAs(this, parentDir, new OperationResult());
}
private static OperationResult saveAs (Workspace workspace, File parent, OperationResult result) {
@@ -129,21 +165,21 @@ public class Workspace implements Filed, Directoried {
File oldRoot = workspace.dir();
boolean oldDirty = workspace.dirty();
- workspace.root(root);
+ workspace.dir(root);
workspace.dirty(true);
result.info("Setting workspace root to " + root.getAbsolutePath());
save(workspace, result.startSubresult());
if (!result.ok()) {
result.info("Reverting workspace root to " + oldRoot.getAbsolutePath());
- workspace.root(oldRoot);
+ workspace.dir(oldRoot);
workspace.dirty(oldDirty);
}
return result;
}
public OperationResult save () {
- return save(this, OperationResult.start());
+ return save(this, new OperationResult());
}
private static OperationResult save (Workspace workspace, OperationResult result) {
@@ -192,17 +228,32 @@ public class Workspace implements Filed, Directoried {
result.info("Writing workspace descriptor file to " + file.getAbsolutePath() + " ...");
try {
- SystemConfig.JSON.writeValue(file, workspace);
+ workspace.json().writeValue(file, workspace);
} catch (IOException ex) {
- result.fail("Failed to write file " + file.getAbsolutePath() + " - IO exception");
- result.fail(ex);
+ return result.fail("Failed to write file " + file.getAbsolutePath() + " - IO exception")
+ .fail(ex);
}
return result;
}
- @Override
- public File file () {
- return new File(dir(), ".tw");
+ public static OperationObjectResult load (File dir) {
+ OperationObjectResult result = new OperationObjectResult();
+ readJson(dir, result);
+ return result;
+ }
+
+ private static OperationObjectResult readJson (File dir, OperationObjectResult result) {
+ File file = file(dir);
+ result.info("Reading workspace from " + dir.getAbsolutePath() + " ...");
+
+ try {
+ result.info("Reading json from " + file.getAbsolutePath() + " ...");
+ result.object(new ObjectMapper().readValue(file, Workspace.class));
+ } catch (IOException ex) {
+ return result.fail("Failed to read file " + file.getAbsolutePath() + " - IO exception").fail(ex);
+ }
+ result.object().dir(file);
+ return result;
}
}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/model/WorkspaceDeserializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/WorkspaceDeserializer.java
new file mode 100644
index 0000000..b99307e
--- /dev/null
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/WorkspaceDeserializer.java
@@ -0,0 +1,43 @@
+package link.pagan.traqtor.model;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.TreeNode;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+
+import link.pagan.traqtor.util.Name;
+
+/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+class WorkspaceDeserializer extends StdDeserializer {
+
+ private static final long serialVersionUID = 1L;
+
+ protected WorkspaceDeserializer () {
+ this(null);
+ }
+
+ protected WorkspaceDeserializer (Class t) {
+ super(t);
+ }
+
+ @Override
+ public Workspace deserialize (JsonParser parser, DeserializationContext ctxt) throws IOException,
+ JsonProcessingException
+ {
+ Workspace workspace = new Workspace();
+ TreeNode tree = workspace.json().readTree(parser);
+
+ TreeNode nameNode = tree.get("name");
+ TreeNode prettyNode = tree.get("pretty");
+
+ if (nameNode != null) { workspace.name(workspace.json().treeToValue(nameNode, Name.class)); }
+
+ if (prettyNode != null) { workspace.pretty(workspace.json().treeToValue(prettyNode, Boolean.class)); }
+
+ return workspace;
+ }
+
+}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/WorkspaceSerializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/WorkspaceSerializer.java
similarity index 79%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/WorkspaceSerializer.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/WorkspaceSerializer.java
index d5f861e..b0229b4 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/WorkspaceSerializer.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/WorkspaceSerializer.java
@@ -1,12 +1,12 @@
-package link.pagan.traqtor;
+package link.pagan.traqtor.model;
+import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import java.io.IOException;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class WorkspaceSerializer extends StdSerializer {
+class WorkspaceSerializer extends StdSerializer {
private static final long serialVersionUID = 1L;
@@ -22,7 +22,9 @@ public class WorkspaceSerializer extends StdSerializer {
public void serialize (Workspace value, JsonGenerator gen, SerializerProvider provider) throws IOException {
gen.writeStartObject();
gen.writeObjectField("name", value.name());
+
+ if (value.pretty()) { gen.writeBooleanField("pretty", value.pretty()); }
gen.writeEndObject();
}
-}
+}
\ No newline at end of file
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/Project.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/Project.java
similarity index 67%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/Project.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/Project.java
index d67d1a2..bc3c28c 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/Project.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/Project.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project;
+package link.pagan.traqtor.model.project;
-import link.pagan.traqtor.Directoried;
-import link.pagan.traqtor.Filed;
-import link.pagan.traqtor.Workspace;
-import link.pagan.traqtor.deck.op.OperationResult;
+import link.pagan.traqtor.util.io.Directoried;
+import link.pagan.traqtor.util.io.Filed;
+import link.pagan.traqtor.model.Workspace;
+import link.pagan.traqtor.util.op.OperationResult;
import link.pagan.traqtor.util.Name;
public abstract class Project implements Filed, Directoried {
@@ -36,4 +36,8 @@ public abstract class Project implements Filed, Directoried {
public abstract OperationResult save (OperationResult result);
+ public Workspace workspace () {
+ return workspace;
+ }
+
}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/backend/mapping/BackendProject.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/backend/mapping/BackendProject.java
similarity index 81%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/backend/mapping/BackendProject.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/backend/mapping/BackendProject.java
index 8fa7806..073e724 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/backend/mapping/BackendProject.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/backend/mapping/BackendProject.java
@@ -3,12 +3,12 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-package link.pagan.traqtor.project.backend.mapping;
+package link.pagan.traqtor.model.project.backend.mapping;
import java.io.File;
-import link.pagan.traqtor.Workspace;
-import link.pagan.traqtor.deck.op.OperationResult;
-import link.pagan.traqtor.project.Project;
+import link.pagan.traqtor.model.Workspace;
+import link.pagan.traqtor.util.op.OperationResult;
+import link.pagan.traqtor.model.project.Project;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
public class BackendProject extends Project {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/backend/mapping/JavaBackendMapping.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/backend/mapping/JavaBackendMapping.java
similarity index 96%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/backend/mapping/JavaBackendMapping.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/backend/mapping/JavaBackendMapping.java
index fd84898..578482d 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/backend/mapping/JavaBackendMapping.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/backend/mapping/JavaBackendMapping.java
@@ -1,3 +1,5 @@
+package link.pagan.traqtor.model.project.backend.mapping;
+
// package link.pagan.traqtor.project.backend.mapping;
//
// import java.util.HashMap;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseColumn.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseColumn.java
similarity index 85%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseColumn.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseColumn.java
index 9516cf8..55d38c4 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseColumn.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseColumn.java
@@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-package link.pagan.traqtor.project.database;
+package link.pagan.traqtor.model.project.database;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
public class DatabaseColumn {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseProject.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseProject.java
similarity index 80%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseProject.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseProject.java
index 702855d..f5a7566 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseProject.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseProject.java
@@ -1,10 +1,10 @@
-package link.pagan.traqtor.project.database;
+package link.pagan.traqtor.model.project.database;
import java.io.File;
-import link.pagan.traqtor.Workspace;
-import link.pagan.traqtor.deck.op.OperationResult;
-import link.pagan.traqtor.project.universe.UniverseProject;
-import link.pagan.traqtor.project.Project;
+import link.pagan.traqtor.model.Workspace;
+import link.pagan.traqtor.util.op.OperationResult;
+import link.pagan.traqtor.model.project.universe.UniverseProject;
+import link.pagan.traqtor.model.project.Project;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseSchema.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseSchema.java
similarity index 91%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseSchema.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseSchema.java
index ba47583..59b6694 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseSchema.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseSchema.java
@@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-package link.pagan.traqtor.project.database;
+package link.pagan.traqtor.model.project.database;
import link.pagan.traqtor.util.Name;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseTable.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseTable.java
similarity index 79%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseTable.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseTable.java
index 19cc4c6..3698d2c 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/DatabaseTable.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/DatabaseTable.java
@@ -1,4 +1,4 @@
-package link.pagan.traqtor.project.database;
+package link.pagan.traqtor.model.project.database;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
public class DatabaseTable {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseAdapter.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseAdapter.java
similarity index 89%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseAdapter.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseAdapter.java
index 488a276..0963975 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseAdapter.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseAdapter.java
@@ -1,3 +1,5 @@
+package link.pagan.traqtor.model.project.database.mapping;
+
// package link.pagan.traqtor.project.database.mapping;
//
// import link.pagan.traqtor.util.Name;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseMapping.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseMapping.java
similarity index 85%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseMapping.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseMapping.java
index d6c55fd..510d741 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseMapping.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseMapping.java
@@ -1,4 +1,4 @@
-package link.pagan.traqtor.project.database.mapping;
+package link.pagan.traqtor.model.project.database.mapping;
import java.util.HashMap;
import link.pagan.traqtor.mapping.Mapping;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseNamingScheme.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseNamingScheme.java
similarity index 84%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseNamingScheme.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseNamingScheme.java
index caf3faf..48d7e93 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/DatabaseNamingScheme.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/DatabaseNamingScheme.java
@@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-package link.pagan.traqtor.project.database.mapping;
+package link.pagan.traqtor.model.project.database.mapping;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
public interface DatabaseNamingScheme {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/impl/PostgresDatabaseAdapter.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/impl/PostgresDatabaseAdapter.java
similarity index 93%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/impl/PostgresDatabaseAdapter.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/impl/PostgresDatabaseAdapter.java
index 30f9be6..3160fd4 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/impl/PostgresDatabaseAdapter.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/impl/PostgresDatabaseAdapter.java
@@ -1,3 +1,5 @@
+package link.pagan.traqtor.model.project.database.mapping.impl;
+
/// *
// * To change this license header, choose License Headers in Project Properties.
// * To change this template file, choose Tools | Templates
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/impl/PostgresDatabaseMapping.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/impl/PostgresDatabaseMapping.java
similarity index 95%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/impl/PostgresDatabaseMapping.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/impl/PostgresDatabaseMapping.java
index cfde89b..50c9c96 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/database/mapping/impl/PostgresDatabaseMapping.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/database/mapping/impl/PostgresDatabaseMapping.java
@@ -1,3 +1,5 @@
+package link.pagan.traqtor.model.project.database.mapping.impl;
+
// package link.pagan.traqtor.project.database.mapping.impl;
//
// import java.util.HashMap;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/frontend/FrontendProject.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/frontend/FrontendProject.java
similarity index 81%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/frontend/FrontendProject.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/frontend/FrontendProject.java
index 56fb903..7c9e959 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/frontend/FrontendProject.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/frontend/FrontendProject.java
@@ -3,12 +3,12 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-package link.pagan.traqtor.project.frontend;
+package link.pagan.traqtor.model.project.frontend;
import java.io.File;
-import link.pagan.traqtor.Workspace;
-import link.pagan.traqtor.deck.op.OperationResult;
-import link.pagan.traqtor.project.Project;
+import link.pagan.traqtor.model.Workspace;
+import link.pagan.traqtor.util.op.OperationResult;
+import link.pagan.traqtor.model.project.Project;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
public class FrontendProject extends Project {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/frontend/mapping/JavaScriptFrontendMapping.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/frontend/mapping/JavaScriptFrontendMapping.java
similarity index 96%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/frontend/mapping/JavaScriptFrontendMapping.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/frontend/mapping/JavaScriptFrontendMapping.java
index 6176f78..4a34a02 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/frontend/mapping/JavaScriptFrontendMapping.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/frontend/mapping/JavaScriptFrontendMapping.java
@@ -1,3 +1,5 @@
+package link.pagan.traqtor.model.project.frontend.mapping;
+
// package link.pagan.traqtor.project.frontend.mapping;
//
// import java.util.HashMap;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/Universe.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/Universe.java
similarity index 52%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/Universe.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/Universe.java
index 41c8b55..c32e4a4 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/Universe.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/Universe.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project.universe;
+package link.pagan.traqtor.model.project.universe;
-import link.pagan.traqtor.project.universe.link.Link;
-import link.pagan.traqtor.project.universe.link.ManyToManyLink;
-import link.pagan.traqtor.project.universe.link.OneToManyLink;
-import link.pagan.traqtor.project.universe.link.OneToOneLink;
+import link.pagan.traqtor.model.project.universe.link.Link;
+import link.pagan.traqtor.model.project.universe.link.ManyToManyLink;
+import link.pagan.traqtor.model.project.universe.link.OneToManyLink;
+import link.pagan.traqtor.model.project.universe.link.OneToOneLink;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
public class Universe {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/UniverseProject.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/UniverseProject.java
similarity index 84%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/UniverseProject.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/UniverseProject.java
index c534254..dd379f4 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/UniverseProject.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/UniverseProject.java
@@ -1,21 +1,23 @@
-package link.pagan.traqtor.project.universe;
+package link.pagan.traqtor.model.project.universe;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;
-import link.pagan.traqtor.Workspace;
-import link.pagan.traqtor.deck.SystemConfig;
-import link.pagan.traqtor.deck.op.OperationResult;
-import link.pagan.traqtor.project.Project;
-import link.pagan.traqtor.project.universe.element.Atom;
-import link.pagan.traqtor.project.universe.schema.DatatypeSchema;
-import link.pagan.traqtor.project.universe.link.Link;
-import link.pagan.traqtor.project.universe.element.Element;
-import link.pagan.traqtor.project.universe.element.Isotope;
+import link.pagan.traqtor.model.Workspace;
+import link.pagan.traqtor.util.op.OperationResult;
+import link.pagan.traqtor.model.project.Project;
+import link.pagan.traqtor.model.project.universe.element.Atom;
+import link.pagan.traqtor.model.project.universe.schema.DatatypeSchema;
+import link.pagan.traqtor.model.project.universe.link.Link;
+import link.pagan.traqtor.model.project.universe.element.Element;
+import link.pagan.traqtor.model.project.universe.element.Isotope;
import link.pagan.traqtor.util.Name;
+// @JsonDeserialize(using = UniverseDeserializer.class)
+@JsonSerialize(using = UniverseSerializer.class)
public class UniverseProject extends Project {
private final Set schemas;
@@ -105,7 +107,7 @@ public class UniverseProject extends Project {
result.info("Writing project descriptor file to " + file.getAbsolutePath() + " ...");
try {
- SystemConfig.JSON.writeValue(file, project);
+ project.workspace().json().writeValue(file, project);
} catch (IOException ex) {
result.fail("Failed to write file " + file.getAbsolutePath() + " - IO exception");
result.fail(ex);
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/UniverseSerializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/UniverseSerializer.java
new file mode 100644
index 0000000..2fdb068
--- /dev/null
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/UniverseSerializer.java
@@ -0,0 +1,42 @@
+package link.pagan.traqtor.model.project.universe;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+
+import link.pagan.traqtor.model.project.universe.link.Link;
+import link.pagan.traqtor.model.project.universe.schema.DatatypeSchema;
+
+class UniverseSerializer extends StdSerializer {
+
+ private static final long serialVersionUID = 1L;
+
+ public UniverseSerializer () {
+ this(null);
+ }
+
+ public UniverseSerializer (Class t) {
+ super(t);
+ }
+
+ @Override
+ public void serialize (UniverseProject value, JsonGenerator gen, SerializerProvider provider)
+ throws IOException
+ {
+ gen.writeStartObject();
+ gen.writeObjectField("name", value.name());
+ gen.writeArrayFieldStart("schemas");
+
+ for (DatatypeSchema schema : value.schemas()) { gen.writeObject(schema.name()); }
+ gen.writeEndArray();
+ gen.writeArrayFieldStart("links");
+
+ for (Link link : value.links()) { gen.writeObject(link); }
+ gen.writeEndArray();
+
+ gen.writeEndObject();
+ }
+
+}
\ No newline at end of file
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Atom.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Atom.java
similarity index 72%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Atom.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Atom.java
index 8e945c1..1b5b763 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Atom.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Atom.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project.universe.element;
+package link.pagan.traqtor.model.project.universe.element;
import java.io.File;
import java.util.List;
-import link.pagan.traqtor.project.universe.UniverseProject;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.UniverseProject;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
public class Atom extends Element {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Element.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Element.java
similarity index 78%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Element.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Element.java
index d637871..5310cf0 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Element.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Element.java
@@ -1,4 +1,4 @@
-package link.pagan.traqtor.project.universe.element;
+package link.pagan.traqtor.model.project.universe.element;
import java.io.File;
import java.io.IOException;
@@ -7,13 +7,17 @@ import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
-import link.pagan.traqtor.Filed;
-import link.pagan.traqtor.deck.SystemConfig;
-import link.pagan.traqtor.deck.op.OperationResult;
-import link.pagan.traqtor.project.universe.UniverseProject;
-import link.pagan.traqtor.project.universe.schema.DataType;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+import link.pagan.traqtor.util.io.Filed;
+import link.pagan.traqtor.util.op.OperationResult;
+import link.pagan.traqtor.model.project.universe.UniverseProject;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
+// @JsonDeserialize(using = LinkDeserializer.class)
+@JsonSerialize(using = ElementSerializer.class)
public abstract class Element implements Filed {
protected final UniverseProject project;
@@ -37,7 +41,8 @@ public abstract class Element implements Filed {
}
public Name name () {
- if (name == null) return Name.NO_NAME;
+
+ if (name == null) { return Name.NO_NAME; }
return name;
}
@@ -84,7 +89,7 @@ public abstract class Element implements Filed {
result.info("Writing element to " + file.getAbsolutePath() + " ...");
try {
- SystemConfig.JSON.writeValue(file, element);
+ element.project().workspace().json().writeValue(file, element);
} catch (IOException ex) {
result.fail("Failed to write file " + file.getAbsolutePath() + " - IO exception");
result.fail(ex);
@@ -92,4 +97,8 @@ public abstract class Element implements Filed {
return result;
}
+ public UniverseProject project () {
+ return project;
+ }
+
}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/ElementSerializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/ElementSerializer.java
similarity index 84%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/ElementSerializer.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/ElementSerializer.java
index 6687732..f8a0b74 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/ElementSerializer.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/ElementSerializer.java
@@ -1,13 +1,13 @@
-package link.pagan.traqtor.project.universe.element;
+package link.pagan.traqtor.model.project.universe.element;
+import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import java.io.IOException;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class ElementSerializer extends StdSerializer {
+class ElementSerializer extends StdSerializer {
private static final long serialVersionUID = 1L;
@@ -36,4 +36,4 @@ public class ElementSerializer extends StdSerializer {
gen.writeEndObject();
}
-}
+}
\ No newline at end of file
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Isotope.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Isotope.java
similarity index 76%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Isotope.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Isotope.java
index a7afdbd..0807e30 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Isotope.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Isotope.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project.universe.element;
+package link.pagan.traqtor.model.project.universe.element;
import java.io.File;
import java.util.List;
-import link.pagan.traqtor.project.universe.UniverseProject;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.UniverseProject;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
public class Isotope extends Element {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Particle.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Particle.java
similarity index 76%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Particle.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Particle.java
index 078e1de..de9fac6 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/Particle.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/Particle.java
@@ -1,14 +1,19 @@
-package link.pagan.traqtor.project.universe.element;
+package link.pagan.traqtor.model.project.universe.element;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.ConstraintInfo;
-import link.pagan.traqtor.project.universe.schema.DataType;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.ConstraintInfo;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
+// @JsonDeserialize(using = LinkDeserializer.class)
+@JsonSerialize(using = PaticleInfoSerializer.class)
public class Particle extends PaticleInfo {
private final Set constraints;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/PaticleInfo.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/PaticleInfo.java
similarity index 77%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/PaticleInfo.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/PaticleInfo.java
index 4bab07a..166fc2c 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/PaticleInfo.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/PaticleInfo.java
@@ -1,8 +1,8 @@
-package link.pagan.traqtor.project.universe.element;
+package link.pagan.traqtor.model.project.universe.element;
import java.util.Set;
-import link.pagan.traqtor.project.universe.schema.ConstraintInfo;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.schema.ConstraintInfo;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/PaticleInfoSerializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/PaticleInfoSerializer.java
similarity index 85%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/PaticleInfoSerializer.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/PaticleInfoSerializer.java
index ddd9b84..2f2bb5a 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/element/PaticleInfoSerializer.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/element/PaticleInfoSerializer.java
@@ -1,13 +1,13 @@
-package link.pagan.traqtor.project.universe.element;
+package link.pagan.traqtor.model.project.universe.element;
+import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import java.io.IOException;
-import link.pagan.traqtor.project.universe.schema.ConstraintInfo;
+import link.pagan.traqtor.model.project.universe.schema.ConstraintInfo;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class PaticleInfoSerializer extends StdSerializer {
+class PaticleInfoSerializer extends StdSerializer {
private static final long serialVersionUID = 1L;
@@ -40,4 +40,4 @@ public class PaticleInfoSerializer extends StdSerializer {
gen.writeEndObject();
}
-}
+}
\ No newline at end of file
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/Link.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/Link.java
similarity index 79%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/Link.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/Link.java
index 181aba8..331d6f9 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/Link.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/Link.java
@@ -1,8 +1,12 @@
-package link.pagan.traqtor.project.universe.link;
+package link.pagan.traqtor.model.project.universe.link;
-import link.pagan.traqtor.project.universe.element.Element;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+import link.pagan.traqtor.model.project.universe.element.Element;
import link.pagan.traqtor.util.Name;
+// @JsonDeserialize(using = LinkDeserializer.class)
+@JsonSerialize(using = LinkSerializer.class)
public abstract class Link {
private Element from;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/LinkSerializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/LinkSerializer.java
similarity index 88%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/LinkSerializer.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/LinkSerializer.java
index 6461914..91939ea 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/LinkSerializer.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/LinkSerializer.java
@@ -1,12 +1,12 @@
-package link.pagan.traqtor.project.universe.link;
+package link.pagan.traqtor.model.project.universe.link;
+import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import java.io.IOException;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class LinkSerializer extends StdSerializer {
+class LinkSerializer extends StdSerializer {
private static final long serialVersionUID = 1L;
@@ -29,4 +29,4 @@ public class LinkSerializer extends StdSerializer {
gen.writeEndObject();
}
-}
+}
\ No newline at end of file
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/LinkType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/LinkType.java
similarity index 84%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/LinkType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/LinkType.java
index 3fc41ef..861af18 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/LinkType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/LinkType.java
@@ -1,4 +1,4 @@
-package link.pagan.traqtor.project.universe.link;
+package link.pagan.traqtor.model.project.universe.link;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
public enum LinkType {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/ManyToManyLink.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/ManyToManyLink.java
similarity index 86%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/ManyToManyLink.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/ManyToManyLink.java
index 0503a9c..9eaa5fe 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/ManyToManyLink.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/ManyToManyLink.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.link;
+package link.pagan.traqtor.model.project.universe.link;
import link.pagan.traqtor.util.Name;
-import link.pagan.traqtor.project.universe.element.Element;
+import link.pagan.traqtor.model.project.universe.element.Element;
public class ManyToManyLink extends Link {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/OneToManyLink.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/OneToManyLink.java
similarity index 88%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/OneToManyLink.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/OneToManyLink.java
index 69a5c00..981f59a 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/OneToManyLink.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/OneToManyLink.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.link;
+package link.pagan.traqtor.model.project.universe.link;
import link.pagan.traqtor.util.Name;
-import link.pagan.traqtor.project.universe.element.Element;
+import link.pagan.traqtor.model.project.universe.element.Element;
public class OneToManyLink extends Link {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/OneToOneLink.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/OneToOneLink.java
similarity index 87%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/OneToOneLink.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/OneToOneLink.java
index b25ea83..19fe887 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/link/OneToOneLink.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/link/OneToOneLink.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.link;
+package link.pagan.traqtor.model.project.universe.link;
import link.pagan.traqtor.util.Name;
-import link.pagan.traqtor.project.universe.element.Element;
+import link.pagan.traqtor.model.project.universe.element.Element;
public class OneToOneLink extends Link {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/Constraint.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/Constraint.java
similarity index 68%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/Constraint.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/Constraint.java
index 0ba35ae..2e83274 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/Constraint.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/Constraint.java
@@ -1,9 +1,14 @@
-package link.pagan.traqtor.project.universe.schema;
+package link.pagan.traqtor.model.project.universe.schema;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >}
* @param type to which this constraint is applicable */
+
+// @JsonDeserialize(using = LinkDeserializer.class)
+@JsonSerialize(using = ConstraintInfoSerializer.class)
public abstract class Constraint extends ConstraintInfo {
protected Name name;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/ConstraintInfo.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/ConstraintInfo.java
new file mode 100644
index 0000000..efc5975
--- /dev/null
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/ConstraintInfo.java
@@ -0,0 +1,12 @@
+package link.pagan.traqtor.model.project.universe.schema;
+
+import link.pagan.traqtor.util.Name;
+
+/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+public abstract class ConstraintInfo {
+
+ public abstract Name name ();
+
+ public abstract Object value ();
+
+}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/ConstraintInfoSerializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/ConstraintInfoSerializer.java
similarity index 71%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/ConstraintInfoSerializer.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/ConstraintInfoSerializer.java
index b348548..0cb8873 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/ConstraintInfoSerializer.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/ConstraintInfoSerializer.java
@@ -1,12 +1,12 @@
-package link.pagan.traqtor.project.universe.schema;
+package link.pagan.traqtor.model.project.universe.schema;
+import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import java.io.IOException;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class ConstraintInfoSerializer extends StdSerializer {
+class ConstraintInfoSerializer extends StdSerializer {
private static final long serialVersionUID = 1L;
@@ -19,7 +19,9 @@ public class ConstraintInfoSerializer extends StdSerializer {
}
@Override
- public void serialize (ConstraintInfo value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+ public void serialize (ConstraintInfo value, JsonGenerator gen, SerializerProvider provider)
+ throws IOException
+ {
gen.writeStartObject();
gen.writeObjectField("name", value.name());
gen.writeObjectField("value", value.value());
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/DataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/DataType.java
similarity index 80%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/DataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/DataType.java
index 9daec04..f81181d 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/DataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/DataType.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema;
+package link.pagan.traqtor.model.project.universe.schema;
import java.util.List;
-import link.pagan.traqtor.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.element.Particle;
import link.pagan.traqtor.util.Name;
public abstract class DataType {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/DatatypeSchema.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/DatatypeSchema.java
similarity index 83%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/DatatypeSchema.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/DatatypeSchema.java
index 6fb6f85..c572f08 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/DatatypeSchema.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/DatatypeSchema.java
@@ -1,4 +1,4 @@
-package link.pagan.traqtor.project.universe.schema;
+package link.pagan.traqtor.model.project.universe.schema;
import link.pagan.traqtor.util.Name;
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/LiteralDataTypeSchema.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/LiteralDataTypeSchema.java
similarity index 67%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/LiteralDataTypeSchema.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/LiteralDataTypeSchema.java
index b225a4b..4ebea94 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/LiteralDataTypeSchema.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/LiteralDataTypeSchema.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema.impl;
+package link.pagan.traqtor.model.project.universe.schema.impl;
-import link.pagan.traqtor.project.universe.schema.DatatypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.data.literal.StringDataType;
+import link.pagan.traqtor.model.project.universe.schema.DatatypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.literal.StringDataType;
import link.pagan.traqtor.util.Name;
public class LiteralDataTypeSchema extends DatatypeSchema {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/LogicDatatypeSchema.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/LogicDatatypeSchema.java
similarity index 59%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/LogicDatatypeSchema.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/LogicDatatypeSchema.java
index 7b698b2..7c97991 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/LogicDatatypeSchema.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/LogicDatatypeSchema.java
@@ -1,8 +1,8 @@
-package link.pagan.traqtor.project.universe.schema.impl;
+package link.pagan.traqtor.model.project.universe.schema.impl;
-import link.pagan.traqtor.project.universe.schema.DatatypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.data.LogicDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.logic.BooleanDataType;
+import link.pagan.traqtor.model.project.universe.schema.DatatypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.LogicDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.logic.BooleanDataType;
import link.pagan.traqtor.util.Name;
public class LogicDatatypeSchema extends DatatypeSchema {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/NumericDatatypeSchema.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/NumericDatatypeSchema.java
similarity index 51%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/NumericDatatypeSchema.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/NumericDatatypeSchema.java
index fba9295..2b9c035 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/NumericDatatypeSchema.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/NumericDatatypeSchema.java
@@ -1,12 +1,12 @@
-package link.pagan.traqtor.project.universe.schema.impl;
-
-import link.pagan.traqtor.project.universe.schema.DatatypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.ByteDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.IntDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.LongDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.ShortDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.DoubleDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.FloatDataType;
+package link.pagan.traqtor.model.project.universe.schema.impl;
+
+import link.pagan.traqtor.model.project.universe.schema.DatatypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.ByteDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.IntDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.LongDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.ShortDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.DoubleDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.FloatDataType;
import link.pagan.traqtor.util.Name;
public class NumericDatatypeSchema extends DatatypeSchema {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/TemporalDatatypeSchema.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/TemporalDatatypeSchema.java
similarity index 54%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/TemporalDatatypeSchema.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/TemporalDatatypeSchema.java
index de03734..efe2d2e 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/TemporalDatatypeSchema.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/TemporalDatatypeSchema.java
@@ -1,10 +1,10 @@
-package link.pagan.traqtor.project.universe.schema.impl;
+package link.pagan.traqtor.model.project.universe.schema.impl;
-import link.pagan.traqtor.project.universe.schema.DatatypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.data.TemporalDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.temporal.DateDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.temporal.TimeDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.temporal.TimestampDataType;
+import link.pagan.traqtor.model.project.universe.schema.DatatypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.TemporalDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.temporal.DateDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.temporal.TimeDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.temporal.TimestampDataType;
import link.pagan.traqtor.util.Name;
public class TemporalDatatypeSchema extends DatatypeSchema {
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/LiteralDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/LiteralDataType.java
similarity index 59%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/LiteralDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/LiteralDataType.java
index 31b21fe..8e161ee 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/LiteralDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/LiteralDataType.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project.universe.schema.impl.data;
+package link.pagan.traqtor.model.project.universe.schema.impl.data;
import java.util.List;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/LogicDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/LogicDataType.java
similarity index 59%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/LogicDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/LogicDataType.java
index c8f8f8d..31b42d0 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/LogicDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/LogicDataType.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project.universe.schema.impl.data;
+package link.pagan.traqtor.model.project.universe.schema.impl.data;
import java.util.List;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/NumericDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/NumericDataType.java
similarity index 59%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/NumericDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/NumericDataType.java
index 7c6430e..ebd57d5 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/NumericDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/NumericDataType.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project.universe.schema.impl.data;
+package link.pagan.traqtor.model.project.universe.schema.impl.data;
import java.util.List;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/TemporalDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/TemporalDataType.java
similarity index 60%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/TemporalDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/TemporalDataType.java
index c1d83ab..6a1cbb7 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/TemporalDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/TemporalDataType.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project.universe.schema.impl.data;
+package link.pagan.traqtor.model.project.universe.schema.impl.data;
import java.util.List;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/StringDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/StringDataType.java
similarity index 59%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/StringDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/StringDataType.java
index 65bae06..abf2ee5 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/StringDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/StringDataType.java
@@ -1,12 +1,12 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.literal;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.literal;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.LiteralDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints.LiteralMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints.LiteralMinConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints.LiteralRegExpConstraint;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.LiteralDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.literal.constraints.LiteralMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.literal.constraints.LiteralMinConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.literal.constraints.LiteralRegExpConstraint;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java
similarity index 57%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java
index 7c8549c..d7c8021 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.literal.constraints;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.LiteralDataType;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.LiteralDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java
similarity index 57%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java
index 5fe1a04..77f0932 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.literal.constraints;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.LiteralDataType;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.LiteralDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java
similarity index 59%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java
index bdbf7a9..e98dd37 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.literal.constraints;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.LiteralDataType;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.LiteralDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/logic/BooleanDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/logic/BooleanDataType.java
similarity index 70%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/logic/BooleanDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/logic/BooleanDataType.java
index 2aef443..0c0f47e 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/logic/BooleanDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/logic/BooleanDataType.java
@@ -1,9 +1,9 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.logic;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.logic;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.LogicDataType;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.LogicDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/IntegerDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/IntegerDataType.java
new file mode 100644
index 0000000..5219ce6
--- /dev/null
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/IntegerDataType.java
@@ -0,0 +1,32 @@
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric;
+
+import java.util.List;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.NumericDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
+import link.pagan.traqtor.util.Name;
+
+/**
+ * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >}
+ */
+public abstract class IntegerDataType extends NumericDataType {
+
+ public IntegerDataType(Name name, List> constraints) {
+ super(name, constraints);
+ }
+
+ @Override
+ public abstract Particle extends IntegerDataType> particle();
+
+ public IntegerMinConstraint min(long min) {
+ return new IntegerMinConstraint(min);
+ }
+
+ public IntegerMaxConstraint max(long max) {
+ return new IntegerMaxConstraint(max);
+ }
+
+}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/RationalDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/RationalDataType.java
similarity index 50%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/RationalDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/RationalDataType.java
index 2c9f535..26e2ba7 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/RationalDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/RationalDataType.java
@@ -1,12 +1,12 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric;
import java.util.List;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.DataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.NumericDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.constraints.RationalMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.constraints.RationalMinConstraint;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.DataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.NumericDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.constraints.RationalMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.constraints.RationalMinConstraint;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ByteDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/ByteDataType.java
similarity index 61%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ByteDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/ByteDataType.java
index 0674a2b..e30b531 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ByteDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/ByteDataType.java
@@ -1,10 +1,10 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.IntegerDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.IntegerDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/IntDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/IntDataType.java
similarity index 60%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/IntDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/IntDataType.java
index b67d84b..fe3dce1 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/IntDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/IntDataType.java
@@ -1,10 +1,10 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.IntegerDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.IntegerDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/LongDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/LongDataType.java
similarity index 59%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/LongDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/LongDataType.java
index e871a70..02fd1f5 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/LongDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/LongDataType.java
@@ -1,10 +1,10 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.IntegerDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.IntegerDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ShortDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/ShortDataType.java
similarity index 60%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ShortDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/ShortDataType.java
index 016b50e..9a94a06 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ShortDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/ShortDataType.java
@@ -1,10 +1,10 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.IntegerDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.IntegerDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java
similarity index 56%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java
index ea581ed..33eba8c 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.IntegerDataType;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.IntegerDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java
similarity index 56%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java
index d2fdf25..95136fc 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.constraints;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.IntegerDataType;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.IntegerDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/DoubleDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/DoubleDataType.java
similarity index 62%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/DoubleDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/DoubleDataType.java
index 475e5c0..1ffb42f 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/DoubleDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/DoubleDataType.java
@@ -1,10 +1,10 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.real;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.RationalDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.constraints.RationalMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.constraints.RationalMinConstraint;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.RationalDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.constraints.RationalMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.constraints.RationalMinConstraint;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/FloatDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/FloatDataType.java
similarity index 61%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/FloatDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/FloatDataType.java
index 44807b7..723dcd2 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/FloatDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/FloatDataType.java
@@ -1,10 +1,10 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.real;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.RationalDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.constraints.RationalMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.constraints.RationalMinConstraint;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.RationalDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.constraints.RationalMaxConstraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.constraints.RationalMinConstraint;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java
similarity index 56%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java
index 4df6e0b..41a626a 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.constraints;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.constraints;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.RationalDataType;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.RationalDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java
similarity index 56%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java
index e922a73..54f730e 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java
@@ -1,7 +1,7 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.constraints;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.constraints;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.RationalDataType;
+import link.pagan.traqtor.model.project.universe.schema.Constraint;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.RationalDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/DateDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/DateDataType.java
similarity index 69%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/DateDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/DateDataType.java
index a390018..64b68fd 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/DateDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/DateDataType.java
@@ -1,8 +1,8 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.temporal;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.temporal;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.TemporalDataType;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.TemporalDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimeDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/TimeDataType.java
similarity index 69%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimeDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/TimeDataType.java
index 90cbe4a..337709a 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimeDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/TimeDataType.java
@@ -1,8 +1,8 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.temporal;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.temporal;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.TemporalDataType;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.TemporalDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimestampDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/TimestampDataType.java
similarity index 70%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimestampDataType.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/TimestampDataType.java
index bbc6b93..7e3488c 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimestampDataType.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/model/project/universe/schema/impl/data/temporal/TimestampDataType.java
@@ -1,8 +1,8 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.temporal;
+package link.pagan.traqtor.model.project.universe.schema.impl.data.temporal;
import java.util.ArrayList;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.impl.data.TemporalDataType;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.TemporalDataType;
import link.pagan.traqtor.util.Name;
/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/UniverseProjectSerializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/UniverseProjectSerializer.java
deleted file mode 100644
index b0297ae..0000000
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/UniverseProjectSerializer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package link.pagan.traqtor.project.universe;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import java.io.IOException;
-import link.pagan.traqtor.project.universe.link.Link;
-import link.pagan.traqtor.project.universe.schema.DatatypeSchema;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class UniverseProjectSerializer extends StdSerializer {
-
- private static final long serialVersionUID = 1L;
-
- public UniverseProjectSerializer () {
- this(null);
- }
-
- public UniverseProjectSerializer (Class t) {
- super(t);
- }
-
- @Override
- public void serialize (UniverseProject value, JsonGenerator gen, SerializerProvider provider) throws IOException {
- gen.writeStartObject();
- gen.writeObjectField("name", value.name());
- gen.writeArrayFieldStart("schemas");
-
- for (DatatypeSchema schema : value.schemas()) { gen.writeObject(schema.name()); }
- gen.writeEndArray();
- gen.writeArrayFieldStart("links");
-
- for (Link link : value.links()) { gen.writeObject(link); }
- gen.writeEndArray();
-
- gen.writeEndObject();
- }
-
-}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/ConstraintInfo.java b/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/ConstraintInfo.java
deleted file mode 100644
index 85ce3ee..0000000
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/ConstraintInfo.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * 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.project.universe.schema;
-
-import link.pagan.traqtor.util.Name;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public abstract class ConstraintInfo {
-
- public abstract Name name ();
-
- public abstract Object value ();
-
-}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/IntegerDataType.java b/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/IntegerDataType.java
deleted file mode 100644
index fd561ed..0000000
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/IntegerDataType.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package link.pagan.traqtor.project.universe.schema.impl.data.numeric;
-
-import java.util.List;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.Constraint;
-import link.pagan.traqtor.project.universe.schema.DataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.NumericDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMaxConstraint;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.constraints.IntegerMinConstraint;
-import link.pagan.traqtor.util.Name;
-
-/**
- * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >}
- */
-public abstract class IntegerDataType extends NumericDataType {
-
- public IntegerDataType(Name name, List> constraints) {
- super(name, constraints);
- }
-
- @Override
- public abstract Particle extends IntegerDataType> particle();
-
- public IntegerMinConstraint min(long min) {
- return new IntegerMinConstraint(min);
- }
-
- public IntegerMaxConstraint max(long max) {
- return new IntegerMaxConstraint(max);
- }
-
-}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/util/FileHandle.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/FileHandle.java
deleted file mode 100644
index 2e961d5..0000000
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/util/FileHandle.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class FileHandle {
-
- String name;
-
- String extension;
-
- String content;
-
- public FileHandle (String fileName, String fileExtension, String fileContent) {
- this.name = fileName;
- this.extension = fileExtension;
- this.content = fileContent;
-
- }
-
- public String name () {
- return name;
- }
-
- public String extension () {
- return extension;
- }
-
- public String content () {
- return content;
- }
-
-}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/util/Name.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/Name.java
index 6805646..c64c02c 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/util/Name.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/util/Name.java
@@ -1,5 +1,14 @@
package link.pagan.traqtor.util;
+import java.util.Arrays;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+@JsonDeserialize(using = NameDeserializer.class)
+@JsonSerialize(using = NameSerializer.class)
public class Name implements Comparable {
public static final Name NO_NAME = Name.of("no", "name");
@@ -41,4 +50,22 @@ public class Name implements Comparable {
return this.asDotted().compareTo(t.asDotted());
}
+ @Override
+ public int hashCode () {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + Arrays.hashCode(parts);
+ return result;
+ }
+
+ @Override
+ public boolean equals (Object obj) {
+ if (this == obj) return true;
+ if (obj == null) return false;
+ if (getClass() != obj.getClass()) return false;
+ Name other = (Name) obj;
+ if (!Arrays.equals(parts, other.parts)) return false;
+ return true;
+ }
+
}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/util/NameDeserializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/NameDeserializer.java
new file mode 100644
index 0000000..73b2966
--- /dev/null
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/util/NameDeserializer.java
@@ -0,0 +1,43 @@
+package link.pagan.traqtor.util;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.TreeNode;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+
+public class NameDeserializer extends StdDeserializer {
+
+ protected final static ObjectMapper MAPPER = new ObjectMapper();
+
+ private static final long serialVersionUID = 1L;
+
+ protected NameDeserializer () {
+ this(null);
+ }
+
+ protected NameDeserializer (Class t) {
+ super(t);
+ }
+
+ @Override
+ public Name deserialize (JsonParser parser, DeserializationContext ctxt) throws IOException,
+ JsonProcessingException
+ {
+ JsonNode tree = MAPPER.readTree(parser);
+ String[] nameParts = new String[tree.size()];
+ int partNumber = 0;
+
+ for (JsonNode item : tree) {
+ nameParts[partNumber] = item.textValue();
+ partNumber++;
+ }
+
+ return new Name(nameParts);
+ }
+
+}
\ No newline at end of file
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/util/NameSerializer.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/NameSerializer.java
index 814c61a..dcf52b7 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/util/NameSerializer.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/util/NameSerializer.java
@@ -1,26 +1,26 @@
package link.pagan.traqtor.util;
+import java.io.IOException;
+
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import java.io.IOException;
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class NameSerializer extends StdSerializer {
+class NameSerializer extends StdSerializer {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
- public NameSerializer () {
- this(null);
- }
+ public NameSerializer () {
+ this(null);
+ }
- public NameSerializer (Class t) {
- super(t);
- }
+ public NameSerializer (Class t) {
+ super(t);
+ }
- @Override
- public void serialize (Name value, JsonGenerator gen, SerializerProvider provider) throws IOException {
- gen.writeArray(value.parts, 0, value.parts.length);
- }
+ @Override
+ public void serialize (Name value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+ gen.writeArray(value.parts, 0, value.parts.length);
+ }
-}
+}
\ No newline at end of file
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/util/io/Directoried.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/io/Directoried.java
new file mode 100644
index 0000000..9b49fe7
--- /dev/null
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/util/io/Directoried.java
@@ -0,0 +1,10 @@
+package link.pagan.traqtor.util.io;
+
+import java.io.File;
+
+/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+public interface Directoried {
+
+ public File dir ();
+
+}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/util/io/Filed.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/io/Filed.java
new file mode 100644
index 0000000..c7e180d
--- /dev/null
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/util/io/Filed.java
@@ -0,0 +1,10 @@
+package link.pagan.traqtor.util.io;
+
+import java.io.File;
+
+/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+public interface Filed {
+
+ public File file ();
+
+}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/OperationMessage.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationMessage.java
similarity index 93%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/OperationMessage.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationMessage.java
index 0126210..ce1aa3a 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/OperationMessage.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationMessage.java
@@ -1,4 +1,4 @@
-package link.pagan.traqtor.deck.op;
+package link.pagan.traqtor.util.op;
import java.text.Format;
import java.text.SimpleDateFormat;
@@ -53,4 +53,10 @@ public class OperationMessage {
this.message;
}
+ public enum MessageType {
+ INFO,
+ WARN,
+ FAIL
+ }
+
}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationObjectResult.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationObjectResult.java
new file mode 100644
index 0000000..da305cd
--- /dev/null
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationObjectResult.java
@@ -0,0 +1,57 @@
+package link.pagan.traqtor.util.op;
+
+/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+public class OperationObjectResult extends OperationResult {
+
+ protected T object;
+
+ protected OperationObjectResult (OperationResult parent, T object) {
+ super(parent);
+ this.object = object;
+ }
+
+ public OperationObjectResult () {
+ this(null, null);
+ }
+
+ @Override
+ public OperationObjectResult startSubresult () {
+ OperationObjectResult subresult = new OperationObjectResult(this, this.object);
+ this.subresults.add(subresult);
+ return subresult;
+ }
+
+ public T object () {
+ return object;
+ }
+
+ public OperationObjectResult object (T object) {
+ this.object = object;
+ return this;
+ }
+
+ @Override
+ public OperationObjectResult info (String message) {
+ super.info(message);
+ return this;
+ }
+
+ @Override
+ public OperationObjectResult warn (String message) {
+ super.warn(message);
+ return this;
+ }
+
+ @Override
+ public OperationObjectResult fail (Exception ex) {
+ super.fail(ex);
+ return this;
+ }
+
+ @Override
+ public OperationObjectResult fail (String message) {
+ super.fail(message);
+ return this;
+ }
+
+}
diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/OperationResult.java b/traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationResult.java
similarity index 83%
rename from traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/OperationResult.java
rename to traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationResult.java
index ea5d299..e7cd39b 100644
--- a/traqtor-aio/src/main/java/link/pagan/traqtor/deck/op/OperationResult.java
+++ b/traqtor-aio/src/main/java/link/pagan/traqtor/util/op/OperationResult.java
@@ -1,4 +1,4 @@
-package link.pagan.traqtor.deck.op;
+package link.pagan.traqtor.util.op;
import java.util.LinkedList;
@@ -11,16 +11,16 @@ public class OperationResult {
private final LinkedList messages;
- private final LinkedList subresults;
+ protected final LinkedList subresults;
- private OperationResult (OperationResult parent) {
+ protected OperationResult (OperationResult parent) {
this.timestamp = System.currentTimeMillis();
this.messages = new LinkedList();
this.subresults = new LinkedList();
this.parent = parent;
}
- private OperationResult () {
+ public OperationResult () {
this(null);
}
@@ -63,7 +63,9 @@ public class OperationResult {
private boolean proxiedOK () {
- if (this.messages.stream().anyMatch(message -> (message.type().equals(MessageType.FAIL)))) { return false; }
+ if (this.messages.stream().anyMatch(message -> (message.type().equals(OperationMessage.MessageType.FAIL)))) {
+ return false;
+ }
return this.subresults.stream().noneMatch(subresult -> (!subresult.ok()));
}
@@ -79,21 +81,12 @@ public class OperationResult {
return this.subresults.toArray(new OperationResult[this.subresults.size()]);
}
- public static OperationResult start () {
- return new OperationResult();
- }
-
public OperationResult startSubresult () {
OperationResult subresult = new OperationResult(this);
this.subresults.add(subresult);
return subresult;
}
- // public OperationResult addSubresult (OperationResult subresult) {
- // this.subresults.add(subresult);
- // return this;
- // }
-
public void print () {
for (OperationMessage message : this.messages()) { System.out.println(message); }
diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/test/WorkspaceTest.java b/traqtor-aio/src/test/java/link/pagan/traqtor/test/WorkspaceTest.java
deleted file mode 100644
index 7b86608..0000000
--- a/traqtor-aio/src/test/java/link/pagan/traqtor/test/WorkspaceTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package link.pagan.traqtor.test;
-
-import link.pagan.traqtor.Workspace;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class WorkspaceTest {
-
- @BeforeEach
- public void cleanTestDir () {
- TestUtils.rebuildTestRoot();
- }
-
- @AfterEach
- public void killCore () {
- TestUtils.deleteTestRoot();
- }
-
- @Test
- @DisplayName("Workspace save")
- void workspaceSave () {
- Workspace workspace = new Workspace().name("traqtor", "demo", "workspace");
- Assertions.assertTrue(!workspace.save().ok());
- TestUtils.deleteTestRoot();
- Assertions.assertTrue(!workspace.root(TestUtils.testRoot()).save().ok());
- TestUtils.rebuildTestRoot();
- Assertions.assertTrue(workspace.saveAs(TestUtils.testRoot()).ok());
- }
-
-}
diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/test/model/WorkspaceTest.java b/traqtor-aio/src/test/java/link/pagan/traqtor/test/model/WorkspaceTest.java
new file mode 100644
index 0000000..928459f
--- /dev/null
+++ b/traqtor-aio/src/test/java/link/pagan/traqtor/test/model/WorkspaceTest.java
@@ -0,0 +1,48 @@
+package link.pagan.traqtor.test.model;
+
+import link.pagan.traqtor.model.Workspace;
+import link.pagan.traqtor.test.TestUtils;
+import link.pagan.traqtor.util.op.OperationObjectResult;
+import link.pagan.traqtor.util.Name;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+public class WorkspaceTest {
+
+ @BeforeEach
+ public void cleanTestDir () {
+ TestUtils.rebuildTestRoot();
+ }
+
+ @AfterEach
+ public void killCore () {
+ TestUtils.deleteTestRoot();
+ }
+
+ @Test
+ @DisplayName("Workspace save")
+ void workspaceSave () {
+ Workspace workspace = new Workspace().name(Name.of("traqtor", "demo", "workspace"));
+ Assertions.assertTrue(!workspace.save().ok());
+ TestUtils.deleteTestRoot();
+ Assertions.assertTrue(!workspace.dir(TestUtils.testRoot()).save().ok());
+ TestUtils.rebuildTestRoot();
+ Assertions.assertTrue(workspace.saveAs(TestUtils.testRoot()).ok());
+ }
+
+ @Test
+ @DisplayName("Workspace save/load")
+ void saveLoad () {
+ Workspace workspace = new Workspace().name(Name.of("traqtor", "demo", "workspace"));
+ Assertions.assertTrue(workspace.saveAs(TestUtils.testRoot()).ok());
+ OperationObjectResult loadResult = Workspace.load(workspace.dir());
+ Assertions.assertTrue(loadResult.ok());
+ Assertions.assertEquals(workspace.name(), loadResult.object().name());
+ Assertions.assertEquals(workspace.pretty(), loadResult.object().pretty());
+ }
+
+}
diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/test/model/project/universe/UniverseProjectTest.java b/traqtor-aio/src/test/java/link/pagan/traqtor/test/model/project/universe/UniverseProjectTest.java
new file mode 100644
index 0000000..9f7a6c7
--- /dev/null
+++ b/traqtor-aio/src/test/java/link/pagan/traqtor/test/model/project/universe/UniverseProjectTest.java
@@ -0,0 +1,181 @@
+package link.pagan.traqtor.test.model.project.universe;
+
+import link.pagan.traqtor.model.Workspace;
+import link.pagan.traqtor.model.project.universe.Universe;
+import link.pagan.traqtor.model.project.universe.UniverseProject;
+import link.pagan.traqtor.model.project.universe.element.Element;
+import link.pagan.traqtor.model.project.universe.element.Particle;
+import link.pagan.traqtor.model.project.universe.schema.DatatypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.LiteralDataTypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.LogicDatatypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.NumericDatatypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.TemporalDatatypeSchema;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.literal.StringDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.integer.IntDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.DoubleDataType;
+import link.pagan.traqtor.model.project.universe.schema.impl.data.numeric.real.FloatDataType;
+import link.pagan.traqtor.test.TestUtils;
+import link.pagan.traqtor.util.Name;
+import link.pagan.traqtor.util.RegExpHelper;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
+public class UniverseProjectTest {
+
+ @BeforeEach
+ public void cleanTestDir () {
+ TestUtils.rebuildTestRoot();
+ }
+
+ @AfterEach
+ public void killCore () {
+ TestUtils.deleteTestRoot();
+ }
+
+ @Test
+ @DisplayName("Universe Project save")
+ void projectSaveAs () {
+ DatatypeSchema LITERAL = LiteralDataTypeSchema.instance();
+ DatatypeSchema LOGIC = LogicDatatypeSchema.instance();
+ DatatypeSchema NUMERIC = NumericDatatypeSchema.instance();
+ DatatypeSchema TEMPORAL = TemporalDatatypeSchema.instance();
+
+ StringDataType STRING = LiteralDataTypeSchema.instance().STRING;
+ // LogicDataType BOOLEAN = LOGIC.BOOLEAN;
+ // IntegerDataType BYTE = NUMERIC.BYTE;
+ // IntegerDataType SHORT = NUMERIC.SHORT;
+ IntDataType INTEGER = NumericDatatypeSchema.instance().INTEGER;
+ // IntegerDataType LONG = NUMERIC.LONG;
+ FloatDataType FLOAT = NumericDatatypeSchema.instance().FLOAT;
+ DoubleDataType DOUBLE = NumericDatatypeSchema.instance().DOUBLE;
+ // TemporalDataType DATE = TEMPORAL.DATE;
+ // TemporalDataType TIME = TEMPORAL.TIME;
+ // TemporalDataType TIMESTAMP = TEMPORAL.TIMESTAMP;
+
+ Workspace workspace = new Workspace().name(Name.of("traqtor", "demo", "workspace"));
+
+ UniverseProject base = workspace.universe().name("base").schemas(LITERAL, LOGIC, NUMERIC, TEMPORAL);
+
+ Particle email = STRING.particle()
+ .name("email")
+ .description("email as main identifier for an account")
+ .constraints(STRING.min(4), STRING.max(512), STRING.regExp(RegExpHelper.EMAIL));
+ Particle phone = STRING.particle()
+ .name("phone")
+ .description("alternative identifier for an account")
+ .optional(true)
+ .constraints(STRING.min(10), STRING.max(32), STRING.regExp(RegExpHelper.PHONE));
+ Particle password = STRING.particle()
+ .name("phone")
+ .description("account password")
+ .constraints(STRING.min(8), STRING.max(32));
+
+ Element account = base.atom()
+ .name("account")
+ .particles(email, phone, password);
+
+ Particle lastName = STRING.particle()
+ .name("last", "name")
+ .description("last name of user")
+ .constraints(STRING.max(64), STRING.min(1));
+
+ Particle firstName = STRING.particle()
+ .name("first", "name")
+ .description("first name of user")
+ .optional(true)
+ .constraints(STRING.max(64), STRING.min(1));
+
+ Particle age = INTEGER.particle()
+ .name("age")
+ .description("age of user owning an account")
+ .constraints(INTEGER.min(18), INTEGER.max(65));
+
+ Element accountDetails = base.atom()
+ .name("account", "details")
+ .particles(lastName, firstName, age);
+
+ Particle length = DOUBLE.particle()
+ .name("length")
+ .description("penis length")
+ .constraints(DOUBLE.min(0), DOUBLE.max(40));
+
+ Element male = base.isotope(account)
+ .name("male")
+ .particles(length);
+
+ Particle depth = FLOAT.particle()
+ .name("depth")
+ .description("vagina depth")
+ .constraints(DOUBLE.min(0), DOUBLE.max(40));
+
+ base.isotope(account)
+ .name("female")
+ .particles(depth);
+
+ Particle positionName = STRING.particle()
+ .name("title")
+ .description("position name")
+ .constraints(STRING.max(255), STRING.min(3));
+
+ Element position = base.atom()
+ .name("position")
+ .particles(positionName);
+
+ Particle idNumber = STRING.particle()
+ .name("number")
+ .description("military id number")
+ .constraints(STRING.max(11), STRING.min(11));
+
+ Element militaryId = base.atom()
+ .name("military", "id")
+ .particles(idNumber);
+
+ Element profile = base.atom()
+ .name(("profile"));
+
+ base.links(Universe.linkOneToOne()
+ .from(account)
+ .fromName("details")
+ .to(accountDetails)
+ .toName("account")
+ .mandatory(), Universe.linkOneToMany()
+ .from(account)
+ .fromName("profiles")
+ .to(profile)
+ .toName("account")
+ .more(0), Universe.linkManyToMany()
+ .from(profile)
+ .fromName("positions")
+ .to(position)
+ .toName("profiles"), Universe.linkOneToOne()
+ .from(male)
+ .fromName("military", "id")
+ .to(militaryId)
+ .toName("account"));
+
+ UniverseProject data = workspace.universe()
+ .name("data")
+ .schemas(LITERAL);
+
+ Particle organizationName = STRING.particle()
+ .name("name")
+ .description("full name of an organization")
+ .constraints(STRING.max(255), STRING.min(3));
+ Element organization = data.atom();
+ organization.name("organization");
+ organization.particles(organizationName);
+
+ Assertions.assertTrue(workspace.saveAs(TestUtils.testRoot()).ok());
+ }
+
+ @Test
+ @DisplayName("Universe Project load")
+ void projectLoad () {
+ Workspace.load(TestUtils.testRoot());
+ }
+
+}
diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/test/project/universe/UniverseProjectTest.java b/traqtor-aio/src/test/java/link/pagan/traqtor/test/project/universe/UniverseProjectTest.java
deleted file mode 100644
index 196f85d..0000000
--- a/traqtor-aio/src/test/java/link/pagan/traqtor/test/project/universe/UniverseProjectTest.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package link.pagan.traqtor.test.project.universe;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import link.pagan.traqtor.Workspace;
-import link.pagan.traqtor.project.universe.Universe;
-import link.pagan.traqtor.project.universe.UniverseProject;
-import link.pagan.traqtor.project.universe.element.Element;
-import link.pagan.traqtor.project.universe.element.Particle;
-import link.pagan.traqtor.project.universe.schema.DatatypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.LiteralDataTypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.LogicDatatypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.NumericDatatypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.TemporalDatatypeSchema;
-import link.pagan.traqtor.project.universe.schema.impl.data.literal.StringDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer.IntDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.DoubleDataType;
-import link.pagan.traqtor.project.universe.schema.impl.data.numeric.real.FloatDataType;
-import link.pagan.traqtor.test.TestUtils;
-import link.pagan.traqtor.util.RegExpHelper;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-
-/** @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} */
-public class UniverseProjectTest {
-
- @BeforeEach
- public void cleanTestDir () {
- TestUtils.rebuildTestRoot();
- }
-
- @AfterEach
- public void killCore () {
- TestUtils.deleteTestRoot();
- }
-
- @Test
- @DisplayName("Universe Project save")
- void projectSaveAs () throws JsonProcessingException {
- DatatypeSchema LITERAL = LiteralDataTypeSchema.instance();
- DatatypeSchema LOGIC = LogicDatatypeSchema.instance();
- DatatypeSchema NUMERIC = NumericDatatypeSchema.instance();
- DatatypeSchema TEMPORAL = TemporalDatatypeSchema.instance();
-
- StringDataType STRING = LiteralDataTypeSchema.instance().STRING;
- // LogicDataType BOOLEAN = LOGIC.BOOLEAN;
- // IntegerDataType BYTE = NUMERIC.BYTE;
- // IntegerDataType SHORT = NUMERIC.SHORT;
- IntDataType INTEGER = NumericDatatypeSchema.instance().INTEGER;
- // IntegerDataType LONG = NUMERIC.LONG;
- FloatDataType FLOAT = NumericDatatypeSchema.instance().FLOAT;
- DoubleDataType DOUBLE = NumericDatatypeSchema.instance().DOUBLE;
- // TemporalDataType DATE = TEMPORAL.DATE;
- // TemporalDataType TIME = TEMPORAL.TIME;
- // TemporalDataType TIMESTAMP = TEMPORAL.TIMESTAMP;
-
- Workspace workspace = new Workspace().name("traqtor", "demo", "workspace");
-
- UniverseProject base = workspace.universe().name("base").schemas(LITERAL, LOGIC, NUMERIC, TEMPORAL);
-
- Particle email = STRING.particle()
- .name("email")
- .description("email as main identifier for an account")
- .constraints(STRING.min(4), STRING.max(512), STRING.regExp(RegExpHelper.EMAIL));
- Particle phone = STRING.particle()
- .name("phone")
- .description("alternative identifier for an account")
- .optional(true)
- .constraints(STRING.min(10), STRING.max(32), STRING.regExp(RegExpHelper.PHONE));
- Particle password = STRING.particle()
- .name("phone")
- .description("account password")
- .constraints(STRING.min(8), STRING.max(32));
-
- Element account = base.atom()
- .name("account")
- .particles(email, phone, password);
-
- Particle lastName = STRING.particle()
- .name("last", "name")
- .description("last name of user")
- .constraints(STRING.max(64), STRING.min(1));
-
- Particle firstName = STRING.particle()
- .name("first", "name")
- .description("first name of user")
- .optional(true)
- .constraints(STRING.max(64), STRING.min(1));
-
- Particle age = INTEGER.particle()
- .name("age")
- .description("age of user owning an account")
- .constraints(INTEGER.min(18), INTEGER.max(65));
-
- Element accountDetails = base.atom()
- .name("account", "details")
- .particles(lastName, firstName, age);
-
- Particle length = DOUBLE.particle()
- .name("length")
- .description("penis length")
- .constraints(DOUBLE.min(0), DOUBLE.max(40));
-
- Element male = base.isotope(account)
- .name("male")
- .particles(length);
-
- Particle depth = FLOAT.particle()
- .name("depth")
- .description("vagina depth")
- .constraints(DOUBLE.min(0), DOUBLE.max(40));
-
- base.isotope(account)
- .name("female")
- .particles(depth);
-
- Particle positionName = STRING.particle()
- .name("title")
- .description("position name")
- .constraints(STRING.max(255), STRING.min(3));
-
- Element position = base.atom()
- .name("position")
- .particles(positionName);
-
- Particle idNumber = STRING.particle()
- .name("number")
- .description("military id number")
- .constraints(STRING.max(11), STRING.min(11));
-
- Element militaryId = base.atom()
- .name("military", "id")
- .particles(idNumber);
-
- Element profile = base.atom()
- .name(("profile"));
-
- base.links(Universe.linkOneToOne()
- .from(account)
- .fromName("details")
- .to(accountDetails)
- .toName("account")
- .mandatory(), Universe.linkOneToMany()
- .from(account)
- .fromName("profiles")
- .to(profile)
- .toName("account")
- .more(0), Universe.linkManyToMany()
- .from(profile)
- .fromName("positions")
- .to(position)
- .toName("profiles"), Universe.linkOneToOne()
- .from(male)
- .fromName("military", "id")
- .to(militaryId)
- .toName("account"));
-
- UniverseProject data = workspace.universe()
- .name("data")
- .schemas(LITERAL);
-
- Particle organizationName = STRING.particle()
- .name("name")
- .description("full name of an organization")
- .constraints(STRING.max(255), STRING.min(3));
- Element organization = data.atom();
- organization.name("organization");
- organization.particles(organizationName);
-
- Assertions.assertTrue(workspace.saveAs(TestUtils.testRoot()).ok());
- }
-
-}
diff --git a/traqtor-quackery/.mvn/wrapper/MavenWrapperDownloader.java b/traqtor-quackery/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100644
index e76d1f3..0000000
--- a/traqtor-quackery/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
- private static final String WRAPPER_VERSION = "0.5.6";
- /**
- * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
- */
- private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
- + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
-
- /**
- * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
- * use instead of the default one.
- */
- private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
- ".mvn/wrapper/maven-wrapper.properties";
-
- /**
- * Path where the maven-wrapper.jar will be saved to.
- */
- private static final String MAVEN_WRAPPER_JAR_PATH =
- ".mvn/wrapper/maven-wrapper.jar";
-
- /**
- * Name of the property which should be used to override the default download url for the wrapper.
- */
- private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
- public static void main(String args[]) {
- System.out.println("- Downloader started");
- File baseDirectory = new File(args[0]);
- System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
- // If the maven-wrapper.properties exists, read it and check if it contains a custom
- // wrapperUrl parameter.
- File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
- String url = DEFAULT_DOWNLOAD_URL;
- if(mavenWrapperPropertyFile.exists()) {
- FileInputStream mavenWrapperPropertyFileInputStream = null;
- try {
- mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
- Properties mavenWrapperProperties = new Properties();
- mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
- url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
- } catch (IOException e) {
- System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
- } finally {
- try {
- if(mavenWrapperPropertyFileInputStream != null) {
- mavenWrapperPropertyFileInputStream.close();
- }
- } catch (IOException e) {
- // Ignore ...
- }
- }
- }
- System.out.println("- Downloading from: " + url);
-
- File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
- if(!outputFile.getParentFile().exists()) {
- if(!outputFile.getParentFile().mkdirs()) {
- System.out.println(
- "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
- }
- }
- System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
- try {
- downloadFileFromURL(url, outputFile);
- System.out.println("Done");
- System.exit(0);
- } catch (Throwable e) {
- System.out.println("- Error downloading");
- e.printStackTrace();
- System.exit(1);
- }
- }
-
- private static void downloadFileFromURL(String urlString, File destination) throws Exception {
- if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
- String username = System.getenv("MVNW_USERNAME");
- char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
- Authenticator.setDefault(new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- }
- URL website = new URL(urlString);
- ReadableByteChannel rbc;
- rbc = Channels.newChannel(website.openStream());
- FileOutputStream fos = new FileOutputStream(destination);
- fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
- fos.close();
- rbc.close();
- }
-
-}
diff --git a/traqtor-quackery/.mvn/wrapper/maven-wrapper.jar b/traqtor-quackery/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index 2cc7d4a..0000000
Binary files a/traqtor-quackery/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/traqtor-quackery/.mvn/wrapper/maven-wrapper.properties b/traqtor-quackery/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100644
index 642d572..0000000
--- a/traqtor-quackery/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/traqtor-quackery/mvnw b/traqtor-quackery/mvnw
deleted file mode 100755
index a16b543..0000000
--- a/traqtor-quackery/mvnw
+++ /dev/null
@@ -1,310 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Maven Start Up Batch script
-#
-# Required ENV vars:
-# ------------------
-# JAVA_HOME - location of a JDK home dir
-#
-# Optional ENV vars
-# -----------------
-# M2_HOME - location of maven2's installed home dir
-# MAVEN_OPTS - parameters passed to the Java VM when running Maven
-# e.g. to debug Maven itself, use
-# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-# ----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
- if [ -f /etc/mavenrc ] ; then
- . /etc/mavenrc
- fi
-
- if [ -f "$HOME/.mavenrc" ] ; then
- . "$HOME/.mavenrc"
- fi
-
-fi
-
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- MINGW*) mingw=true;;
- Darwin*) darwin=true
- # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
- # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
- if [ -z "$JAVA_HOME" ]; then
- if [ -x "/usr/libexec/java_home" ]; then
- export JAVA_HOME="`/usr/libexec/java_home`"
- else
- export JAVA_HOME="/Library/Java/Home"
- fi
- fi
- ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
- if [ -r /etc/gentoo-release ] ; then
- JAVA_HOME=`java-config --jre-home`
- fi
-fi
-
-if [ -z "$M2_HOME" ] ; then
- ## resolve links - $0 may be a link to maven's home
- PRG="$0"
-
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
- done
-
- saveddir=`pwd`
-
- M2_HOME=`dirname "$PRG"`/..
-
- # make it fully qualified
- M2_HOME=`cd "$M2_HOME" && pwd`
-
- cd "$saveddir"
- # echo Using m2 at $M2_HOME
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --unix "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME="`(cd "$M2_HOME"; pwd)`"
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
-fi
-
-if [ -z "$JAVA_HOME" ]; then
- javaExecutable="`which javac`"
- if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
- # readlink(1) is not available as standard on Solaris 10.
- readLink=`which readlink`
- if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
- if $darwin ; then
- javaHome="`dirname \"$javaExecutable\"`"
- javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
- else
- javaExecutable="`readlink -f \"$javaExecutable\"`"
- fi
- javaHome="`dirname \"$javaExecutable\"`"
- javaHome=`expr "$javaHome" : '\(.*\)/bin'`
- JAVA_HOME="$javaHome"
- export JAVA_HOME
- fi
- fi
-fi
-
-if [ -z "$JAVACMD" ] ; then
- if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- else
- JAVACMD="`which java`"
- fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
- echo "Error: JAVA_HOME is not defined correctly." >&2
- echo " We cannot execute $JAVACMD" >&2
- exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
- echo "Warning: JAVA_HOME environment variable is not set."
-fi
-
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-
- if [ -z "$1" ]
- then
- echo "Path not specified to find_maven_basedir"
- return 1
- fi
-
- basedir="$1"
- wdir="$1"
- while [ "$wdir" != '/' ] ; do
- if [ -d "$wdir"/.mvn ] ; then
- basedir=$wdir
- break
- fi
- # workaround for JBEAP-8937 (on Solaris 10/Sparc)
- if [ -d "${wdir}" ]; then
- wdir=`cd "$wdir/.."; pwd`
- fi
- # end of workaround
- done
- echo "${basedir}"
-}
-
-# concatenates all lines of a file
-concat_lines() {
- if [ -f "$1" ]; then
- echo "$(tr -s '\n' ' ' < "$1")"
- fi
-}
-
-BASE_DIR=`find_maven_basedir "$(pwd)"`
-if [ -z "$BASE_DIR" ]; then
- exit 1;
-fi
-
-##########################################################################################
-# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-# This allows using the maven wrapper in projects that prohibit checking in binary data.
-##########################################################################################
-if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found .mvn/wrapper/maven-wrapper.jar"
- fi
-else
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
- fi
- if [ -n "$MVNW_REPOURL" ]; then
- jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- else
- jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- fi
- while IFS="=" read key value; do
- case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
- esac
- done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Downloading from: $jarUrl"
- fi
- wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
- if $cygwin; then
- wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
- fi
-
- if command -v wget > /dev/null; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found wget ... using wget"
- fi
- if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
- wget "$jarUrl" -O "$wrapperJarPath"
- else
- wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
- fi
- elif command -v curl > /dev/null; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found curl ... using curl"
- fi
- if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
- curl -o "$wrapperJarPath" "$jarUrl" -f
- else
- curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
- fi
-
- else
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Falling back to using Java to download"
- fi
- javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
- # For Cygwin, switch paths to Windows format before running javac
- if $cygwin; then
- javaClass=`cygpath --path --windows "$javaClass"`
- fi
- if [ -e "$javaClass" ]; then
- if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo " - Compiling MavenWrapperDownloader.java ..."
- fi
- # Compiling the Java class
- ("$JAVA_HOME/bin/javac" "$javaClass")
- fi
- if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
- # Running the downloader
- if [ "$MVNW_VERBOSE" = true ]; then
- echo " - Running MavenWrapperDownloader.java ..."
- fi
- ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
- fi
- fi
- fi
-fi
-##########################################################################################
-# End of extension
-##########################################################################################
-
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
- echo $MAVEN_PROJECTBASEDIR
-fi
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --path --windows "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
- [ -n "$MAVEN_PROJECTBASEDIR" ] &&
- MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
-fi
-
-# Provide a "standardized" way to retrieve the CLI args that will
-# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
-export MAVEN_CMD_LINE_ARGS
-
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-exec "$JAVACMD" \
- $MAVEN_OPTS \
- -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
- "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
- ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/traqtor-quackery/mvnw.cmd b/traqtor-quackery/mvnw.cmd
deleted file mode 100755
index c8d4337..0000000
--- a/traqtor-quackery/mvnw.cmd
+++ /dev/null
@@ -1,182 +0,0 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements. See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership. The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License. You may obtain a copy of the License at
-@REM
-@REM https://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied. See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-
-FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
- IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
- if "%MVNW_VERBOSE%" == "true" (
- echo Found %WRAPPER_JAR%
- )
-) else (
- if not "%MVNW_REPOURL%" == "" (
- SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- )
- if "%MVNW_VERBOSE%" == "true" (
- echo Couldn't find %WRAPPER_JAR%, downloading it ...
- echo Downloading from: %DOWNLOAD_URL%
- )
-
- powershell -Command "&{"^
- "$webclient = new-object System.Net.WebClient;"^
- "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
- "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
- "}"^
- "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
- "}"
- if "%MVNW_VERBOSE%" == "true" (
- echo Finished downloading %WRAPPER_JAR%
- )
-)
-@REM End of extension
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%
diff --git a/traqtor-quackery/src/main/java/two/pm/traqtor/AccessFilter.java b/traqtor-quackery/src/main/java/two/pm/traqtor/AccessFilter.java
index 30fa1ec..3a6b4aa 100644
--- a/traqtor-quackery/src/main/java/two/pm/traqtor/AccessFilter.java
+++ b/traqtor-quackery/src/main/java/two/pm/traqtor/AccessFilter.java
@@ -3,8 +3,6 @@ package two.pm.traqtor;
import io.vertx.core.http.HttpServerRequest;
import org.apache.cayenne.BaseContext;
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.jboss.logging.Logger;
import javax.inject.Inject;
import javax.ws.rs.container.ContainerRequestContext;
@@ -30,17 +28,17 @@ public class AccessFilter implements ContainerRequestFilter {
CayenneRuntimeFactory cayenneRuntimeFactory;
@Override
- public void filter(ContainerRequestContext context) {
+ public void filter (ContainerRequestContext context) {
BaseContext.bindThreadObjectContext(cayenneRuntimeFactory.cayenneRuntime().newContext());
- final String method = context.getMethod();
+ // final String method = context.getMethod();
final String path = info.getPath();
+
// final String address = request.remoteAddress().toString();
// System.out.println(method + " : " + path);
- if (path.equals("/hello/secret")) {
- context.abortWith(Response.status(Status.UNAUTHORIZED).build());
- }
+ if (path.equals("/hello/secret")) { context.abortWith(Response.status(Status.UNAUTHORIZED).build()); }
// LOG.infof("Request %s %s from IP %s", method, path, address);
}
+
}
\ No newline at end of file
diff --git a/traqtor-quackery/src/main/java/two/pm/traqtor/CayenneRuntimeFactory.java b/traqtor-quackery/src/main/java/two/pm/traqtor/CayenneRuntimeFactory.java
index 9e3fd42..170b188 100644
--- a/traqtor-quackery/src/main/java/two/pm/traqtor/CayenneRuntimeFactory.java
+++ b/traqtor-quackery/src/main/java/two/pm/traqtor/CayenneRuntimeFactory.java
@@ -1,12 +1,7 @@
package two.pm.traqtor;
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Singleton;
-
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.server.ServerRuntime;
@@ -21,37 +16,39 @@ public class CayenneRuntimeFactory {
private static ServerRuntime runtime;
@Singleton
- public ServerRuntime cayenneRuntime() {
+ public ServerRuntime cayenneRuntime () {
+
if (runtime == null) {
// ClassLoader classLoader = ;
// File file = new File(classLoader.getFile());
// System.out.println(file.getAbsolutePath());
- runtime = ServerRuntime.builder().addConfig("db/cayenne-traqtor.xml")
- // .addModule(binder ->
- // binder.bind(JdbcEventLogger.class).to(NoopJdbcEventLogger.class))
- .addModule(binder -> {
- binder.bind(ResourceLocator.class)
- .to(ClassLoaderResourceLocatorFix.class);
- binder.bind(Key.get(ResourceLocator.class,
- Constants.SERVER_RESOURCE_LOCATOR))
- .to(ClassLoaderResourceLocatorFix.class);
- })
- .addModule(CryptoModule.extend()
- .keyStore(this.getClass().getClassLoader()
- .getResource("db/traqtor.keystore"),
- "secret".toCharArray(), "key0")
- .compress()
- // .useHMAC()
- .module())
- .build();
+ runtime = ServerRuntime.builder()
+ .addConfig("db/cayenne-traqtor.xml")
+ // .addModule(binder ->
+ // binder.bind(JdbcEventLogger.class).to(NoopJdbcEventLogger.class))
+ .addModule(binder ->
+ {
+ binder.bind(ResourceLocator.class)
+ .to(ClassLoaderResourceLocatorFix.class);
+ binder.bind(Key.get(ResourceLocator.class, Constants.SERVER_RESOURCE_LOCATOR))
+ .to(ClassLoaderResourceLocatorFix.class);
+ })
+ .addModule(CryptoModule.extend()
+ .keyStore(this.getClass()
+ .getClassLoader()
+ .getResource("db/traqtor.keystore"), "secret".toCharArray(), "key0")
+ .compress()
+ // .useHMAC()
+ .module())
+ .build();
ObjectContext context = runtime.newContext();
- SQLExec.query("CREATE TABLE IF NOT EXISTS system_user (id bigint NOT NULL, CRYPTO_password varchar(2048) NOT NULL, CRYPTO_email varchar(2048) NOT NULL, PRIMARY KEY (id));"
- + "CREATE SEQUENCE IF NOT EXISTS pk_system_user INCREMENT 20 MINVALUE -9223372036854775807;")
- .execute(context);
+ SQLExec.query("CREATE TABLE IF NOT EXISTS system_user (id bigint NOT NULL, CRYPTO_password varchar(2048) NOT NULL, CRYPTO_email varchar(2048) NOT NULL, PRIMARY KEY (id));" +
+ "CREATE SEQUENCE IF NOT EXISTS pk_system_user INCREMENT 20 MINVALUE -9223372036854775807;")
+ .execute(context);
context.commitChanges();
}
return runtime;
diff --git a/traqtor-quackery/src/main/java/two/pm/traqtor/ClassLoaderResourceLocatorFix.java b/traqtor-quackery/src/main/java/two/pm/traqtor/ClassLoaderResourceLocatorFix.java
index c6a1ae2..f91f185 100644
--- a/traqtor-quackery/src/main/java/two/pm/traqtor/ClassLoaderResourceLocatorFix.java
+++ b/traqtor-quackery/src/main/java/two/pm/traqtor/ClassLoaderResourceLocatorFix.java
@@ -21,45 +21,50 @@ public class ClassLoaderResourceLocatorFix implements ResourceLocator {
private ClassLoaderManager classLoaderManager;
- public ClassLoaderResourceLocatorFix(@Inject ClassLoaderManager classLoaderManager) {
+ public ClassLoaderResourceLocatorFix (@Inject ClassLoaderManager classLoaderManager) {
this.classLoaderManager = classLoaderManager;
}
@Override
- public Collection findResources(String name) {
+ public Collection findResources (String name) {
final Collection resources = new ArrayList<>(3);
final Enumeration urls;
+
try {
urls = classLoaderManager.getClassLoader(name).getResources(name);
} catch (IOException e) {
throw new ConfigurationException("Error getting resources for ");
}
- while (urls.hasMoreElements()) {
- resources.add(new URLResourceFix(urls.nextElement()));
- }
+ while (urls.hasMoreElements()) { resources.add(new URLResourceFix(urls.nextElement())); }
return resources;
}
private class URLResourceFix extends URLResource {
- URLResourceFix(URL url) {
+ private static final long serialVersionUID = 8520153058821165086L;
+
+ URLResourceFix (URL url) {
super(url);
}
@Override
- public Resource getRelativeResource(String relativePath) {
+ public Resource getRelativeResource (String relativePath) {
+
try {
String url = getURL().toString();
url = url.substring(0, url.lastIndexOf("/") + 1) + relativePath;
return new URLResource(new URI(url).toURL());
- } catch (MalformedURLException | URISyntaxException e) {
- throw new CayenneRuntimeException("Error creating relative resource '%s' : '%s'", e, getURL(),
- relativePath);
+ } catch (MalformedURLException
+ | URISyntaxException e)
+ {
+ throw new CayenneRuntimeException("Error creating relative resource '%s' : '%s'", e, getURL(), relativePath);
}
}
+
}
+
}
\ No newline at end of file
diff --git a/traqtor-quackery/src/main/java/two/pm/traqtor/db/SystemUser.java b/traqtor-quackery/src/main/java/two/pm/traqtor/db/SystemUser.java
index 342ca12..8a52026 100644
--- a/traqtor-quackery/src/main/java/two/pm/traqtor/db/SystemUser.java
+++ b/traqtor-quackery/src/main/java/two/pm/traqtor/db/SystemUser.java
@@ -1,7 +1,5 @@
package two.pm.traqtor.db;
-import java.nio.charset.StandardCharsets;
-
import org.apache.cayenne.Cayenne;
import two.pm.traqtor.db.auto._SystemUser;
@@ -10,21 +8,24 @@ public class SystemUser extends _SystemUser {
private static final long serialVersionUID = 1L;
- public DTO dto() {
+ public DTO dto () {
return new DTO(Cayenne.longPKForObject(this), email, password);
}
public final class DTO {
public String email;
+
public String password;
+
public String id;
- public DTO(long id, String email, String password) {
+ public DTO (long id, String email, String password) {
this.id = Long.toHexString(id);
this.email = email;
this.password = password;
}
}
+
}
diff --git a/traqtor-quackery/src/main/java/two/pm/traqtor/db/auto/_Datamap.java b/traqtor-quackery/src/main/java/two/pm/traqtor/db/auto/_Datamap.java
index a64c369..3702aed 100644
--- a/traqtor-quackery/src/main/java/two/pm/traqtor/db/auto/_Datamap.java
+++ b/traqtor-quackery/src/main/java/two/pm/traqtor/db/auto/_Datamap.java
@@ -1,12 +1,7 @@
package two.pm.traqtor.db.auto;
-import org.apache.cayenne.ObjectContext;
-
-/**
- * This class was generated by Cayenne.
+/** This class was generated by Cayenne.
* It is probably a good idea to avoid changing this class manually,
* since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public class _Datamap {
-}
\ No newline at end of file
+ * If you need to make any customizations, please use subclass. */
+public class _Datamap {}
\ No newline at end of file
diff --git a/traqtor-quackery/src/main/java/two/pm/traqtor/db/auto/_Main.java b/traqtor-quackery/src/main/java/two/pm/traqtor/db/auto/_Main.java
index 46f361c..ece81d8 100644
--- a/traqtor-quackery/src/main/java/two/pm/traqtor/db/auto/_Main.java
+++ b/traqtor-quackery/src/main/java/two/pm/traqtor/db/auto/_Main.java
@@ -1,12 +1,7 @@
package two.pm.traqtor.db.auto;
-import org.apache.cayenne.ObjectContext;
-
-/**
- * This class was generated by Cayenne.
+/** This class was generated by Cayenne.
* It is probably a good idea to avoid changing this class manually,
* since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public class _Main {
-}
\ No newline at end of file
+ * If you need to make any customizations, please use subclass. */
+public class _Main {}
\ No newline at end of file
diff --git a/traqtor-quackery/src/test/java/org/my/group/MyResourceTest.java b/traqtor-quackery/src/test/java/org/my/group/MyResourceTest.java
deleted file mode 100644
index 02e494c..0000000
--- a/traqtor-quackery/src/test/java/org/my/group/MyResourceTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// package org.my.group;
-
-// import io.quarkus.test.junit.QuarkusTest;
-// import org.junit.jupiter.api.Test;
-
-// import static io.restassured.RestAssured.given;
-// import static org.hamcrest.CoreMatchers.is;
-
-// @QuarkusTest
-// public class MyResourceTest {
-
-// @Test
-// public void testHelloEndpoint() {
-// given()
-// .when().get("/hello")
-// .then()
-// .statusCode(200)
-// .body(is("Hello RESTEasy"));
-// }
-
-// }
\ No newline at end of file
diff --git a/traqtor-quackery/src/test/java/org/my/group/NativeMyResourceIT.java b/traqtor-quackery/src/test/java/org/my/group/NativeMyResourceIT.java
deleted file mode 100644
index 241bb79..0000000
--- a/traqtor-quackery/src/test/java/org/my/group/NativeMyResourceIT.java
+++ /dev/null
@@ -1,9 +0,0 @@
-// package org.my.group;
-
-// import io.quarkus.test.junit.NativeImageTest;
-
-// @NativeImageTest
-// public class NativeMyResourceIT extends MyResourceTest {
-
-// // Execute the same tests but in native mode.
-// }
\ No newline at end of file