diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/api/API.java b/traqtor-aio/src/main/java/link/pagan/traqtor/api/API.java index 09c082e..426bc63 100644 --- a/traqtor-aio/src/main/java/link/pagan/traqtor/api/API.java +++ b/traqtor-aio/src/main/java/link/pagan/traqtor/api/API.java @@ -142,11 +142,6 @@ public class API { System.err.println(ex); return fail("Failed to write " + Workspace.JSON_FILENAME + ".json"); } - - //TODO add project save -// for (Project project : arg.workspace().projects()) { -// subexec(new ) -// } arg.workspace().dirty(false); diff --git a/traqtor-aio/src/main/java/link/pagan/traqtor/api/project/Project.java b/traqtor-aio/src/main/java/link/pagan/traqtor/api/project/Project.java index 9f0c02c..d238028 100644 --- a/traqtor-aio/src/main/java/link/pagan/traqtor/api/project/Project.java +++ b/traqtor-aio/src/main/java/link/pagan/traqtor/api/project/Project.java @@ -27,9 +27,7 @@ public abstract class Project implements Commanded { return name; } - public void name(Name name) { - this.name = name; - } + public boolean dirty() { return dirty; diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/EndToEndTest.java b/traqtor-aio/src/test/java/link/pagan/traqtor/EndToEndTest.java index b5fc1fe..b9c67cf 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/EndToEndTest.java +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/EndToEndTest.java @@ -1,26 +1,164 @@ package link.pagan.traqtor; +import link.pagan.traqtor.project.DatabaseProject; +import link.pagan.traqtor.project.UniverseProject; +import link.pagan.traqtor.project.database.DatabaseSchema; +import link.pagan.traqtor.util.Name; +import link.pagan.traqtor.project.universe.element.Atom; +import link.pagan.traqtor.project.universe.element.Isotope; +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.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.LiteralDataType; +import link.pagan.traqtor.project.universe.schema.impl.data.numeric.RationalDataType; import org.junit.jupiter.api.Test; public class EndToEndTest { - @Test - void endToEndTest() { - DatatypeSchema refSchema = new ReferenceDatatypeSchema(); - DatatypeSchema altSchema = new AlternativeDatatypeSchema(); + void endToEndTest() { + LiteralDataTypeSchema LITERAL = LiteralDataTypeSchema.instance(); + LogicDatatypeSchema LOGIC = LogicDatatypeSchema.instance(); + NumericDatatypeSchema NUMERIC = NumericDatatypeSchema.instance(); + TemporalDatatypeSchema TEMPORAL = TemporalDatatypeSchema.instance(); + + LiteralDataType STRING = LITERAL.STRING; +// LogicDataType BOOLEAN = LOGIC.BOOLEAN; +// IntegerDataType BYTE = NUMERIC.BYTE; +// IntegerDataType SHORT = NUMERIC.SHORT; +// IntegerDataType INTEGER = NUMERIC.INTEGER; +// IntegerDataType LONG = NUMERIC.LONG; + RationalDataType FLOAT = NUMERIC.FLOAT; + RationalDataType DOUBLE = NUMERIC.DOUBLE; +// TemporalDataType DATE = TEMPORAL.DATE; +// TemporalDataType TIME = TEMPORAL.TIME; +// TemporalDataType TIMESTAMP = TEMPORAL.TIMESTAMP; - WorkspaceBuilder builder = new WorkspaceBuilder(); - builder.addDatatypeSchema(); + Atom account = new Atom() + .name(new Name("account")) + .addParticle(STRING.particle() + .name(new Name("email")) + .description("email as main identifier for an account") + ) + .addParticle(STRING.particle() + .name(new Name("phone")) + .description("alternative identifier for an account") + ); - UniverseProjectBuilder upb = new UniverseProjectBuilder() - .addSchema(refSchema).addSchema(altSchema); - - .addProject( - new - ) + Atom accountDetails = new Atom() + .name(new Name("account", "details")) + .addParticle(STRING.particle() + .name(new Name("first", "name")) + .description("first name of user") + ) + .addParticle(STRING.particle() + .name(new Name("last", "name")) + .description("last name of user") + ); + Isotope male = new Isotope() + .base(account) + .name(new Name("male")) + .addParticle(DOUBLE.particle() + .name(new Name("length")) + .description("penis length") + ); - } + Isotope female = new Isotope() + .base(account) + .name(new Name("female")) + .addParticle(FLOAT.particle() + .name(new Name("depth")) + .description("vagina depth") + ); + + Atom position = new Atom() + .name(new Name("position")) + .addParticle(STRING.particle() + .name(new Name("title")) + .description("position name") + ); + + Atom militaryId = new Atom() + .name(new Name("military", "id")) + .addParticle(STRING.particle() + .name(new Name("number")) + .description("military id number") + ); + + Atom profile = new Atom() + .name((new Name("profile")) + ); + + UniverseProject baseUniverse = new UniverseProject() + .name(new Name("base")) + .importSchema(LITERAL) + .importSchema(LOGIC) + .importSchema(NUMERIC) + .importSchema(TEMPORAL) + .addElement(account) + .addElement(accountDetails) + .addElement(male) + .addElement(female) + .addElement(position) + .addElement(militaryId) + .addElement(profile) + .addLink(new OneToOneLink() + .from(account) + .fromName(new Name("details")) + .to(accountDetails) + .toName(new Name("account")) + .mandatory() + ) + .addLink(new OneToManyLink() + .from(account) + .fromName(new Name("profiles")) + .to(profile) + .toName(new Name("account")) + .more(0) + ) + .addLink(new ManyToManyLink() + .from(profile) + .fromName(new Name("positions")) + .to(position) + .toName(new Name("profiles")) + ) + .addLink(new OneToOneLink() + .from(male) + .fromName(new Name("military", "id")) + .to(militaryId) + .toName(new Name("account")) + ); + + UniverseProject dataUniverse = new UniverseProject() + .name(new Name("data")) + .importSchema(LITERAL) + .addElement(new Atom() + .name(new Name("organization")) + .addParticle(STRING.particle() + .name(new Name("name")) + .description("full name of an organization") + ) + ); + + DatabaseProject mainDatabase = new DatabaseProject() + .name(new Name("primary")) + .addSchema(new DatabaseSchema() + .name(new Name("public")) + // .table("base", "account") + // .table("base", "account", "details") + // .table("data", "organization") + ); + + new Workspace() + .name(new Name("link", "pagan")) + .addProject(baseUniverse) + .addProject(dataUniverse) + .addProject(mainDatabase); + } } diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/Workspace.java b/traqtor-aio/src/test/java/link/pagan/traqtor/Workspace.java new file mode 100644 index 0000000..c49adc4 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/Workspace.java @@ -0,0 +1,25 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package link.pagan.traqtor; + +import link.pagan.traqtor.project.Project; +import link.pagan.traqtor.util.Name; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +class Workspace { + + public Workspace name(Name name) { + return this; + } + + public Workspace addProject(Project project) { + return this; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/generator/UniverseBlueprintTest.java b/traqtor-aio/src/test/java/link/pagan/traqtor/generator/UniverseBlueprintTest.java deleted file mode 100644 index 5149787..0000000 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/generator/UniverseBlueprintTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package link.pagan.traqtor.generator; - -import com.fasterxml.jackson.core.JsonProcessingException; -import link.pagan.traqtor._api.result.CommandExecResult; -import static link.pagan.traqtor._api.result.CommandExecResultStatus.DONE; -import link.pagan.traqtor.api.API; -import link.pagan.traqtor.api.Traqtor; -import link.pagan.traqtor.generator.blueprint.universe.LinkType; -import link.pagan.traqtor.generator.blueprint.universe.build.LinkBlueprintBuilder; -import link.pagan.traqtor.generator.blueprint.universe.build.AtomBlueprintBuilder; -import link.pagan.traqtor.generator.blueprint.universe.build.ParticleBlueprintBuilder; -import link.pagan.traqtor.generator.blueprint.universe.build.UniverseBlueprintBuilder; -import link.pagan.traqtor.generator.blueprint.universe.UniverseBlueprint; -import link.pagan.traqtor.util.Name; -import link.pagan.traqtor.schema.basic.data.DataTypeSchemaReferenceImplementation; -import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; - -/** - * - * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} - */ -public class UniverseBlueprintTest { - - @Test - void programmaticBuild() throws JsonProcessingException { - UniverseBlueprintBuilder builder = new UniverseBlueprintBuilder(new DataTypeSchemaReferenceImplementation()); - builder - .addAtom(new AtomBlueprintBuilder() - .name(Name.of("account")) - .description("Base user atom") - .addParticle(new ParticleBlueprintBuilder() - .name(Name.of("nickname")) - .description("User nickname, just in case") - .type("string") - ) - .addParticle(new ParticleBlueprintBuilder() - .name(Name.of("email")) - .description("Main auth facility for user") - .type("string") - ) - .addParticle(new ParticleBlueprintBuilder() - .name(Name.of("phone")) - .description("Alternative user authentification facility") - .type("string") - ) - .addParticle(new ParticleBlueprintBuilder() - .name(Name.of("password")) - .description("User password") - .type("string") - ) - ) - .addAtom(new AtomBlueprintBuilder() - .name(Name.of("account", "details")) - .description("User info atom") - .addParticle(new ParticleBlueprintBuilder() - .name(Name.of("first", "name")) - .description("First name of a user") - .type("string") - ) - .addParticle(new ParticleBlueprintBuilder() - .name(Name.of("last", "name")) - .description("Last name of a user") - .type("string") - ) - .addParticle(new ParticleBlueprintBuilder() - .name(Name.of("middle", "names")) - .description("Middle names of a user") - .type("string") - ) - ) - .addLink(new LinkBlueprintBuilder() - .from(Name.of("account")) - .to(Name.of("account", "details")) - .type(LinkType.ONE_TO_ONE) - ); - - UniverseBlueprint build = builder.build(); - - Traqtor traqtor = Traqtor.init(); - CommandExecResult result = traqtor.execute(new API.CreateWorkspace()); - assertEquals(result.getStatus(), DONE); - assertEquals(traqtor.workspace().dirty(), true); - String serialized = traqtor.workspace().mapper().writeValueAsString(build); - System.out.println(serialized); - - } - -} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/DatabaseProject.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/DatabaseProject.java new file mode 100644 index 0000000..dfbe00a --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/DatabaseProject.java @@ -0,0 +1,22 @@ +package link.pagan.traqtor.project; + +import link.pagan.traqtor.project.database.DatabaseSchema; +import link.pagan.traqtor.util.Name; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DatabaseProject extends Project { + + @Override + public DatabaseProject name(Name name) { + super.name(name); + return this; + } + + public DatabaseProject addSchema(DatabaseSchema name) { + return this; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/Project.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/Project.java new file mode 100644 index 0000000..4f5cffc --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/Project.java @@ -0,0 +1,12 @@ +package link.pagan.traqtor.project; + +import link.pagan.traqtor.util.Name; + +public class Project { + + public Project name(Name name){ + + return this; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/UniverseProject.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/UniverseProject.java new file mode 100644 index 0000000..b50f648 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/UniverseProject.java @@ -0,0 +1,29 @@ +package link.pagan.traqtor.project; + +import link.pagan.traqtor.project.universe.schema.DatatypeSchema; +import link.pagan.traqtor.util.Name; +import link.pagan.traqtor.project.universe.Link; +import link.pagan.traqtor.project.universe.Element; + +public class UniverseProject extends Project { + + + @Override + public UniverseProject name(Name name){ + super.name(name); + return this; + } + + public UniverseProject importSchema (DatatypeSchema schema) { + return this; + } + + public UniverseProject addElement (Element element) { + return this; + } + + public UniverseProject addLink(Link link) { + return this; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseSchema.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseSchema.java new file mode 100644 index 0000000..7734c89 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseSchema.java @@ -0,0 +1,15 @@ +package link.pagan.traqtor.project.database; + +import link.pagan.traqtor.util.Name; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DatabaseSchema { + + public DatabaseSchema name(Name name) { + + return this; + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Element.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Element.java new file mode 100644 index 0000000..cc47100 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Element.java @@ -0,0 +1,18 @@ +package link.pagan.traqtor.project.universe; + +import link.pagan.traqtor.util.Name; + +public class Element { + + public Element name(Name name){ + + return this; + } + + public Element addParticle(Particle particle) { + + return this; + } + + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Link.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Link.java new file mode 100644 index 0000000..7351e4c --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Link.java @@ -0,0 +1,25 @@ +package link.pagan.traqtor.project.universe; + +import link.pagan.traqtor.util.Name; + +public class Link { + + public Link from(Element element) { + return this; + } + + public Link to(Element element) { + return this; + } + + public Link fromName(Name name) { + return this; + } + + public Link toName(Name name) { + return this; + } + + + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Particle.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Particle.java new file mode 100644 index 0000000..28d1e86 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Particle.java @@ -0,0 +1,25 @@ +package link.pagan.traqtor.project.universe; + +import link.pagan.traqtor.project.universe.schema.DataType; +import link.pagan.traqtor.util.Name; + +public class Particle { + + final DataType type; + Name name; + String description; + + public Particle(DataType type) { + this.type = type; + } + + public Particle name(Name name) { + + return this; + } + + public Particle description(String description) { + + return this; + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseSchema.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseSchema.java new file mode 100644 index 0000000..8302608 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseSchema.java @@ -0,0 +1,5 @@ +package link.pagan.traqtor.project.universe; + +public class UniverseSchema { + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Atom.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Atom.java new file mode 100644 index 0000000..593f8da --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Atom.java @@ -0,0 +1,21 @@ +package link.pagan.traqtor.project.universe.element; + +import link.pagan.traqtor.project.universe.Element; +import link.pagan.traqtor.util.Name; +import link.pagan.traqtor.project.universe.Particle; + +public class Atom extends Element { + + @Override + public Atom name(Name name){ + super.name(name); + return this; + } + + @Override + public Atom addParticle(Particle particle) { + super.addParticle(particle); + return this; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Isotope.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Isotope.java new file mode 100644 index 0000000..5dc9488 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Isotope.java @@ -0,0 +1,28 @@ +package link.pagan.traqtor.project.universe.element; + +import link.pagan.traqtor.project.universe.Element; +import link.pagan.traqtor.util.Name; +import link.pagan.traqtor.project.universe.Particle; + +public class Isotope extends Element { + + Element base; + + @Override + public Isotope name(Name name) { + super.name(name); + return this; + } + + @Override + public Isotope addParticle(Particle particle) { + super.addParticle(particle); + return this; + } + + public Isotope base(Element base) { + this.base = base; + return this; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/ManyToManyLink.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/ManyToManyLink.java new file mode 100644 index 0000000..e4ab2cd --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/ManyToManyLink.java @@ -0,0 +1,29 @@ +package link.pagan.traqtor.project.universe.link; + +import link.pagan.traqtor.project.universe.Link; +import link.pagan.traqtor.util.Name; +import link.pagan.traqtor.project.universe.Element; + +public class ManyToManyLink extends Link { + + public ManyToManyLink from(Element element) { + super.from(element); + return this; + } + + public ManyToManyLink to(Element element) { + super.to(element); + return this; + } + + public ManyToManyLink fromName(Name name) { + super.fromName(name); + return this; + } + + public ManyToManyLink toName(Name name) { + super.toName(name); + return this; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/OneToManyLink.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/OneToManyLink.java new file mode 100644 index 0000000..a48c91d --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/OneToManyLink.java @@ -0,0 +1,44 @@ +package link.pagan.traqtor.project.universe.link; + +import link.pagan.traqtor.project.universe.Link; +import link.pagan.traqtor.util.Name; +import link.pagan.traqtor.project.universe.Element; + +public class OneToManyLink extends Link { + + @Override + public OneToManyLink from(Element element) { + super.from(element); + return this; + } + + @Override + public OneToManyLink to(Element element) { + super.to(element); + return this; + } + + @Override + public OneToManyLink fromName(Name name) { + super.fromName(name); + return this; + } + + @Override + public OneToManyLink toName(Name name) { + super.toName(name); + return this; + } + + public OneToManyLink more(int count) { + return this; + } + + public OneToManyLink less(int count) { + return this; + } + + public OneToManyLink exact(int count) { + return this; + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/OneToOneLink.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/OneToOneLink.java new file mode 100644 index 0000000..2c58e2a --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/OneToOneLink.java @@ -0,0 +1,36 @@ +package link.pagan.traqtor.project.universe.link; + +import link.pagan.traqtor.project.universe.Link; +import link.pagan.traqtor.util.Name; +import link.pagan.traqtor.project.universe.Element; + +public class OneToOneLink extends Link { + + @Override + public OneToOneLink from(Element element) { + super.from(element); + return this; + } + + @Override + public OneToOneLink to(Element element) { + super.to(element); + return this; + } + + @Override + public OneToOneLink fromName(Name name) { + super.fromName(name); + return this; + } + + @Override + public OneToOneLink toName(Name name) { + super.toName(name); + return this; + } + + public OneToOneLink mandatory() { + return this; + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/Constraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/Constraint.java new file mode 100644 index 0000000..beec21a --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/Constraint.java @@ -0,0 +1,10 @@ +package link.pagan.traqtor.project.universe.schema; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + * @param type to which this constraint is applicable + */ +public class Constraint { + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/DataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/DataType.java new file mode 100644 index 0000000..a951c64 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/DataType.java @@ -0,0 +1,24 @@ +package link.pagan.traqtor.project.universe.schema; + +import link.pagan.traqtor.project.universe.Particle; + +public abstract class DataType { + + private String name; + + protected DataType (){ + } + + public DataType(String name) { + this.name = name; + } + + public String getName() { + return name; + } + +// public abstract DataType type(); + + public abstract Particle particle(); + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/DatatypeSchema.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/DatatypeSchema.java new file mode 100644 index 0000000..676fa96 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/DatatypeSchema.java @@ -0,0 +1,14 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package link.pagan.traqtor.project.universe.schema; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class DatatypeSchema { + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/LiteralDataTypeSchema.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/LiteralDataTypeSchema.java new file mode 100644 index 0000000..bfb7a05 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/LiteralDataTypeSchema.java @@ -0,0 +1,17 @@ +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.LiteralDataType; +import link.pagan.traqtor.project.universe.schema.impl.data.literal.StringDataType; + +public class LiteralDataTypeSchema extends DatatypeSchema { + + private static final LiteralDataTypeSchema instance = new LiteralDataTypeSchema(); + + public final LiteralDataType STRING = StringDataType.instance(); + + public static LiteralDataTypeSchema instance() { + return instance; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/LogicDatatypeSchema.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/LogicDatatypeSchema.java new file mode 100644 index 0000000..52cc4b2 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/LogicDatatypeSchema.java @@ -0,0 +1,16 @@ +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.LogicDataType; +import link.pagan.traqtor.project.universe.schema.impl.data.logic.BooleanDataType; + +public class LogicDatatypeSchema extends DatatypeSchema { + + private static final LogicDatatypeSchema instance = new LogicDatatypeSchema(); + + public final LogicDataType BOOLEAN = BooleanDataType.instance(); + + public static LogicDatatypeSchema instance() { + return instance; + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/NumericDatatypeSchema.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/NumericDatatypeSchema.java new file mode 100644 index 0000000..91eb538 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/NumericDatatypeSchema.java @@ -0,0 +1,29 @@ +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.IntegerDataType; +import link.pagan.traqtor.project.universe.schema.impl.data.numeric.RationalDataType; +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; + +public class NumericDatatypeSchema extends DatatypeSchema { + + private static final NumericDatatypeSchema instance = new NumericDatatypeSchema(); + + public final IntegerDataType BYTE = ByteDataType.instance(); + public final IntegerDataType SHORT = ShortDataType.instance(); + public final IntegerDataType INTEGER = IntDataType.instance(); + public final IntegerDataType LONG = LongDataType.instance(); + + public final RationalDataType FLOAT = FloatDataType.instance(); + public final RationalDataType DOUBLE = DoubleDataType.instance(); + + public static NumericDatatypeSchema instance() { + return instance; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/TemporalDatatypeSchema.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/TemporalDatatypeSchema.java new file mode 100644 index 0000000..e6b9471 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/TemporalDatatypeSchema.java @@ -0,0 +1,20 @@ +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.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; + +public class TemporalDatatypeSchema extends DatatypeSchema { + + private static final TemporalDatatypeSchema instance = new TemporalDatatypeSchema(); + + public final TemporalDataType DATE = DateDataType.instance(); + public final TemporalDataType TIME = TimeDataType.instance(); + public final TemporalDataType TIMESTAMP = TimestampDataType.instance(); + + public static TemporalDatatypeSchema instance() { + return instance; + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/constraints/NotNullConstraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/constraints/NotNullConstraint.java new file mode 100644 index 0000000..a097df0 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/constraints/NotNullConstraint.java @@ -0,0 +1,15 @@ +package link.pagan.traqtor.project.universe.schema.impl.constraints; + +import link.pagan.traqtor.project.universe.schema.Constraint; +import link.pagan.traqtor.project.universe.schema.DataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class NotNullConstraint extends Constraint { + + public NotNullConstraint() { + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/LiteralDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/LiteralDataType.java new file mode 100644 index 0000000..f6a52fa --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/LiteralDataType.java @@ -0,0 +1,15 @@ +package link.pagan.traqtor.project.universe.schema.impl.data; + +import link.pagan.traqtor.project.universe.Particle; +import link.pagan.traqtor.project.universe.schema.DataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class LiteralDataType extends DataType { + + @Override + public abstract Particle particle(); + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/LogicDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/LogicDataType.java new file mode 100644 index 0000000..6c25fee --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/LogicDataType.java @@ -0,0 +1,15 @@ +package link.pagan.traqtor.project.universe.schema.impl.data; + +import link.pagan.traqtor.project.universe.Particle; +import link.pagan.traqtor.project.universe.schema.DataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class LogicDataType extends DataType { + + @Override + public abstract Particle particle(); + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/NumericDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/NumericDataType.java new file mode 100644 index 0000000..4019922 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/NumericDataType.java @@ -0,0 +1,15 @@ +package link.pagan.traqtor.project.universe.schema.impl.data; + +import link.pagan.traqtor.project.universe.Particle; +import link.pagan.traqtor.project.universe.schema.DataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class NumericDataType extends DataType { + + @Override + public abstract Particle particle(); + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/TemporalDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/TemporalDataType.java new file mode 100644 index 0000000..1c87c87 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/TemporalDataType.java @@ -0,0 +1,23 @@ +package link.pagan.traqtor.project.universe.schema.impl.data; + +import java.util.List; +import link.pagan.traqtor.project.universe.Particle; +import link.pagan.traqtor.project.universe.schema.Constraint; +import link.pagan.traqtor.project.universe.schema.DataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class TemporalDataType extends DataType { + + final List> typeConstraints; + + public TemporalDataType(List> typeConstraints) { + this.typeConstraints = typeConstraints; + } + + @Override + public abstract Particle particle(); + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/StringDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/StringDataType.java new file mode 100644 index 0000000..c44ffab --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/StringDataType.java @@ -0,0 +1,34 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.literal; + +import link.pagan.traqtor.project.universe.schema.impl.data.*; + +import java.util.ArrayList; +import java.util.List; + +import link.pagan.traqtor.project.universe.Particle; +import link.pagan.traqtor.project.universe.schema.Constraint; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class StringDataType extends LiteralDataType { + + private static final StringDataType instance = new StringDataType(); + + final List> typeConstraints; + + public static StringDataType instance() { + return instance; + } + + private StringDataType() { + this.typeConstraints = new ArrayList<>(); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/logic/BooleanDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/logic/BooleanDataType.java new file mode 100644 index 0000000..79e0fbb --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/logic/BooleanDataType.java @@ -0,0 +1,34 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.logic; + +import link.pagan.traqtor.project.universe.schema.impl.data.*; + +import java.util.ArrayList; +import java.util.List; + +import link.pagan.traqtor.project.universe.Particle; +import link.pagan.traqtor.project.universe.schema.Constraint; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class BooleanDataType extends LogicDataType { + + private static final BooleanDataType instance = new BooleanDataType(); + + final List> typeConstraints; + + public static BooleanDataType instance() { + return instance; + } + + private BooleanDataType() { + this.typeConstraints = new ArrayList<>(); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/IntegerDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/IntegerDataType.java new file mode 100644 index 0000000..30ca26f --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/IntegerDataType.java @@ -0,0 +1,23 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.numeric; + +import java.util.List; +import link.pagan.traqtor.project.universe.Particle; +import link.pagan.traqtor.project.universe.schema.Constraint; +import link.pagan.traqtor.project.universe.schema.impl.data.NumericDataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class IntegerDataType extends NumericDataType { + + final List> typeConstraints; + + public IntegerDataType(List> typeConstraints) { + this.typeConstraints = typeConstraints; + } + + @Override + public abstract Particle particle(); + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/RationalDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/RationalDataType.java new file mode 100644 index 0000000..52700da --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/RationalDataType.java @@ -0,0 +1,23 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.numeric; + +import java.util.List; +import link.pagan.traqtor.project.universe.Particle; +import link.pagan.traqtor.project.universe.schema.Constraint; +import link.pagan.traqtor.project.universe.schema.impl.data.NumericDataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public abstract class RationalDataType extends NumericDataType { + + final List> typeConstraints; + + public RationalDataType(List> typeConstraints) { + this.typeConstraints = typeConstraints; + } + + @Override + public abstract Particle particle(); + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ByteDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ByteDataType.java new file mode 100644 index 0000000..b60c982 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ByteDataType.java @@ -0,0 +1,37 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class ByteDataType extends IntegerDataType { + + private static final ByteDataType instance = new ByteDataType(); + + public static ByteDataType instance() { + return instance; + } + + private ByteDataType() { + super(new ArrayList<>() { + private static final long serialVersionUID = 1L; + + { + add(new IntegerMaxConstraint(Byte.MAX_VALUE)); + add(new IntegerMinConstraint(Byte.MIN_VALUE)); + } + }); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/IntDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/IntDataType.java new file mode 100644 index 0000000..d6ccec4 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/IntDataType.java @@ -0,0 +1,37 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class IntDataType extends IntegerDataType { + + private static final IntDataType instance = new IntDataType(); + + public static IntDataType instance() { + return instance; + } + + private IntDataType() { + super(new ArrayList<>() { + private static final long serialVersionUID = 1L; + + { + add(new IntegerMaxConstraint(Integer.MAX_VALUE)); + add(new IntegerMinConstraint(Integer.MIN_VALUE)); + } + }); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/LongDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/LongDataType.java new file mode 100644 index 0000000..ce2e333 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/LongDataType.java @@ -0,0 +1,37 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class LongDataType extends IntegerDataType { + + private static final LongDataType instance = new LongDataType(); + + public static LongDataType instance() { + return instance; + } + + private LongDataType() { + super(new ArrayList<>() { + private static final long serialVersionUID = 1L; + + { + add(new IntegerMaxConstraint(Long.MAX_VALUE)); + add(new IntegerMinConstraint(Long.MIN_VALUE)); + } + }); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ShortDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ShortDataType.java new file mode 100644 index 0000000..bed6855 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/ShortDataType.java @@ -0,0 +1,37 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.numeric.integer; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class ShortDataType extends IntegerDataType { + + private static final ShortDataType instance = new ShortDataType(); + + public static ShortDataType instance() { + return instance; + } + + private ShortDataType() { + super(new ArrayList<>() { + private static final long serialVersionUID = 1L; + + { + add(new IntegerMaxConstraint(Short.MAX_VALUE)); + add(new IntegerMinConstraint(Short.MIN_VALUE)); + } + }); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java new file mode 100644 index 0000000..64697c2 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMaxConstraint.java @@ -0,0 +1,18 @@ +package link.pagan.traqtor.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class IntegerMaxConstraint extends Constraint { + + long max; + + public IntegerMaxConstraint(long max) { + this.max = max; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java new file mode 100644 index 0000000..02effa9 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/integer/constraints/IntegerMinConstraint.java @@ -0,0 +1,18 @@ +package link.pagan.traqtor.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class IntegerMinConstraint extends Constraint { + + long min; + + public IntegerMinConstraint(long min) { + this.min = min; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/DoubleDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/DoubleDataType.java new file mode 100644 index 0000000..20fd691 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/DoubleDataType.java @@ -0,0 +1,37 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.numeric.real; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DoubleDataType extends RationalDataType { + + private static final DoubleDataType instance = new DoubleDataType(); + + public static DoubleDataType instance() { + return instance; + } + + private DoubleDataType() { + super(new ArrayList<>() { + private static final long serialVersionUID = 1L; + + { + add(new RationalMaxConstraint(Double.MAX_VALUE)); + add(new RationalMinConstraint(Double.MIN_VALUE)); + } + }); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/FloatDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/FloatDataType.java new file mode 100644 index 0000000..714dd8d --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/FloatDataType.java @@ -0,0 +1,37 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.numeric.real; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class FloatDataType extends RationalDataType { + + private static final FloatDataType instance = new FloatDataType(); + + public static FloatDataType instance() { + return instance; + } + + private FloatDataType() { + super(new ArrayList<>() { + private static final long serialVersionUID = 1L; + + { + add(new RationalMaxConstraint(Float.MAX_VALUE)); + add(new RationalMinConstraint(Float.MIN_VALUE)); + } + }); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java new file mode 100644 index 0000000..09abf74 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMaxConstraint.java @@ -0,0 +1,18 @@ +package link.pagan.traqtor.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class RationalMaxConstraint extends Constraint { + + double max; + + public RationalMaxConstraint(double max) { + this.max = max; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java new file mode 100644 index 0000000..34091f5 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/numeric/real/constraints/RationalMinConstraint.java @@ -0,0 +1,18 @@ +package link.pagan.traqtor.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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class RationalMinConstraint extends Constraint { + + double min; + + public RationalMinConstraint(double min) { + this.min = min; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/DateDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/DateDataType.java new file mode 100644 index 0000000..1d812b5 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/DateDataType.java @@ -0,0 +1,28 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.temporal; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.schema.impl.data.*; +import link.pagan.traqtor.project.universe.Particle; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DateDataType extends TemporalDataType { + + private static final DateDataType instance = new DateDataType(); + + public static DateDataType instance() { + return instance; + } + + private DateDataType() { + super(new ArrayList<>()); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimeDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimeDataType.java new file mode 100644 index 0000000..ed46eaf --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimeDataType.java @@ -0,0 +1,28 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.temporal; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.schema.impl.data.*; +import link.pagan.traqtor.project.universe.Particle; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class TimeDataType extends TemporalDataType { + + private static final TimeDataType instance = new TimeDataType(); + + public static TimeDataType instance() { + return instance; + } + + private TimeDataType() { + super(new ArrayList<>()); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimestampDataType.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimestampDataType.java new file mode 100644 index 0000000..d39da18 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/temporal/TimestampDataType.java @@ -0,0 +1,28 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.temporal; + +import java.util.ArrayList; +import link.pagan.traqtor.project.universe.schema.impl.data.*; +import link.pagan.traqtor.project.universe.Particle; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class TimestampDataType extends TemporalDataType { + + private static final TimestampDataType instance = new TimestampDataType(); + + public static TimestampDataType instance() { + return instance; + } + + private TimestampDataType() { + super(new ArrayList<>()); + } + + @Override + public Particle particle() { + return new Particle(this); + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/util/Name.java b/traqtor-aio/src/test/java/link/pagan/traqtor/util/Name.java new file mode 100644 index 0000000..b7ca43c --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/util/Name.java @@ -0,0 +1,8 @@ +package link.pagan.traqtor.util; + +public class Name { + + public Name(String... string) { + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/_api/TraqtorApiTestUtils.java b/traqtor-aio/src/test/java/link/pagan/z_old/TraqtorApiTestUtils.java similarity index 97% rename from traqtor-aio/src/test/java/link/pagan/traqtor/_api/TraqtorApiTestUtils.java rename to traqtor-aio/src/test/java/link/pagan/z_old/TraqtorApiTestUtils.java index 2e9ca11..fc74113 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/_api/TraqtorApiTestUtils.java +++ b/traqtor-aio/src/test/java/link/pagan/z_old/TraqtorApiTestUtils.java @@ -1,3 +1,5 @@ +package link.pagan.z_old; + // package link.pagan.traqtor._api; // import java.io.File; diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/api/TraqtorTest.java b/traqtor-aio/src/test/java/link/pagan/z_old/TraqtorTest.java similarity index 98% rename from traqtor-aio/src/test/java/link/pagan/traqtor/api/TraqtorTest.java rename to traqtor-aio/src/test/java/link/pagan/z_old/TraqtorTest.java index 2fb4157..4ec3296 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/api/TraqtorTest.java +++ b/traqtor-aio/src/test/java/link/pagan/z_old/TraqtorTest.java @@ -1,3 +1,5 @@ +package link.pagan.z_old; + // package link.pagan.traqtor.api; // import java.io.IOException; diff --git a/traqtor-aio/src/test/java/link/pagan/z_old/UniverseBlueprintTest.java b/traqtor-aio/src/test/java/link/pagan/z_old/UniverseBlueprintTest.java new file mode 100644 index 0000000..1c11b0c --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/z_old/UniverseBlueprintTest.java @@ -0,0 +1,91 @@ +package link.pagan.z_old; + +//package link.pagan.traqtor.generator; +// +//import com.fasterxml.jackson.core.JsonProcessingException; +//import link.pagan.traqtor._api.result.CommandExecResult; +//import static link.pagan.traqtor._api.result.CommandExecResultStatus.DONE; +//import link.pagan.traqtor.api.API; +//import link.pagan.traqtor.api.Traqtor; +//import link.pagan.traqtor.generator.blueprint.universe.LinkType; +//import link.pagan.traqtor.generator.blueprint.universe.build.LinkBlueprintBuilder; +//import link.pagan.traqtor.generator.blueprint.universe.build.AtomBlueprintBuilder; +//import link.pagan.traqtor.generator.blueprint.universe.build.ParticleBlueprintBuilder; +//import link.pagan.traqtor.generator.blueprint.universe.build.UniverseBlueprintBuilder; +//import link.pagan.traqtor.generator.blueprint.universe.UniverseBlueprint; +//import link.pagan.traqtor.util.Name; +//import link.pagan.traqtor.schema.basic.data.DataTypeSchemaReferenceImplementation; +//import static org.junit.jupiter.api.Assertions.assertEquals; +//import org.junit.jupiter.api.Test; +// +///** +// * +// * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} +// */ +//public class UniverseBlueprintTest { +// +// @Test +// void programmaticBuild() throws JsonProcessingException { +// UniverseBlueprintBuilder builder = new UniverseBlueprintBuilder(new DataTypeSchemaReferenceImplementation()); +// builder +// .addAtom(new AtomBlueprintBuilder() +// .name(Name.of("account")) +// .description("Base user atom") +// .addParticle(new ParticleBlueprintBuilder() +// .name(Name.of("nickname")) +// .description("User nickname, just in case") +// .type("string") +// ) +// .addParticle(new ParticleBlueprintBuilder() +// .name(Name.of("email")) +// .description("Main auth facility for user") +// .type("string") +// ) +// .addParticle(new ParticleBlueprintBuilder() +// .name(Name.of("phone")) +// .description("Alternative user authentification facility") +// .type("string") +// ) +// .addParticle(new ParticleBlueprintBuilder() +// .name(Name.of("password")) +// .description("User password") +// .type("string") +// ) +// ) +// .addAtom(new AtomBlueprintBuilder() +// .name(Name.of("account", "details")) +// .description("User info atom") +// .addParticle(new ParticleBlueprintBuilder() +// .name(Name.of("first", "name")) +// .description("First name of a user") +// .type("string") +// ) +// .addParticle(new ParticleBlueprintBuilder() +// .name(Name.of("last", "name")) +// .description("Last name of a user") +// .type("string") +// ) +// .addParticle(new ParticleBlueprintBuilder() +// .name(Name.of("middle", "names")) +// .description("Middle names of a user") +// .type("string") +// ) +// ) +// .addLink(new LinkBlueprintBuilder() +// .from(Name.of("account")) +// .to(Name.of("account", "details")) +// .type(LinkType.ONE_TO_ONE) +// ); +// +// UniverseBlueprint build = builder.build(); +// +// Traqtor traqtor = Traqtor.init(); +// CommandExecResult result = traqtor.execute(new API.CreateWorkspace()); +// assertEquals(result.getStatus(), DONE); +// assertEquals(traqtor.workspace().dirty(), true); +// String serialized = traqtor.workspace().mapper().writeValueAsString(build); +// System.out.println(serialized); +// +// } +// +//} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/api/workspace/WorkspaceTest.java b/traqtor-aio/src/test/java/link/pagan/z_old/WorkspaceTest.java similarity index 97% rename from traqtor-aio/src/test/java/link/pagan/traqtor/api/workspace/WorkspaceTest.java rename to traqtor-aio/src/test/java/link/pagan/z_old/WorkspaceTest.java index 9223a6d..fd069f0 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/api/workspace/WorkspaceTest.java +++ b/traqtor-aio/src/test/java/link/pagan/z_old/WorkspaceTest.java @@ -1,3 +1,5 @@ +package link.pagan.z_old; + // package link.pagan.traqtor.api.workspace; // import java.io.IOException; diff --git a/traqtor-api/src/main/java/link/pagan/traqtor/api/API.java b/traqtor-api/src/main/java/link/pagan/traqtor/api/API.java index 09c082e..bb8712f 100644 --- a/traqtor-api/src/main/java/link/pagan/traqtor/api/API.java +++ b/traqtor-api/src/main/java/link/pagan/traqtor/api/API.java @@ -143,11 +143,6 @@ public class API { return fail("Failed to write " + Workspace.JSON_FILENAME + ".json"); } - //TODO add project save -// for (Project project : arg.workspace().projects()) { -// subexec(new ) -// } - arg.workspace().dirty(false); return done();