From 1fe9ac5999734495c7680ad99fa6bc882c8720a8 Mon Sep 17 00:00:00 2001 From: "Edward M. Kagan" Date: Wed, 24 Feb 2021 05:07:58 +0300 Subject: [PATCH] EndToEnd for unicerse build no-conflict --- .../java/link/pagan/traqtor/EndToEndTest.java | 254 ++++++++++-------- .../java/link/pagan/traqtor/Workspace.java | 2 +- .../link/pagan/traqtor/project/Project.java | 7 +- .../traqtor/project/UniverseProject.java | 29 -- .../traqtor/project/database/Database.java | 24 ++ .../project/database/DatabaseColumn.java | 14 + .../{ => database}/DatabaseProject.java | 13 +- .../project/database/DatabaseSchema.java | 15 +- .../project/database/DatabaseTable.java | 15 ++ .../traqtor/project/universe/Element.java | 18 -- .../pagan/traqtor/project/universe/Link.java | 25 -- .../traqtor/project/universe/Particle.java | 25 -- .../traqtor/project/universe/Universe.java | 40 +++ .../project/universe/UniverseProject.java | 32 +++ .../project/universe/UniverseSchema.java | 5 - .../project/universe/element/Atom.java | 25 +- .../project/universe/element/Element.java | 33 +++ .../project/universe/element/Isotope.java | 11 +- .../project/universe/element/Particle.java | 45 ++++ .../traqtor/project/universe/link/Link.java | 37 +++ .../project/universe/link/ManyToManyLink.java | 8 +- .../project/universe/link/OneToManyLink.java | 6 +- .../project/universe/link/OneToOneLink.java | 6 +- .../project/universe/schema/DataType.java | 21 +- .../schema/impl/LiteralDataTypeSchema.java | 3 +- .../impl/constraints/NotNullConstraint.java | 8 +- .../schema/impl/data/LiteralDataType.java | 8 +- .../schema/impl/data/LogicDataType.java | 8 +- .../schema/impl/data/NumericDataType.java | 8 +- .../schema/impl/data/TemporalDataType.java | 10 +- .../impl/data/literal/StringDataType.java | 28 +- .../constraints/LiteralMaxConstraint.java | 18 ++ .../constraints/LiteralMinConstraint.java | 18 ++ .../constraints/LiteralRegExpConstraint.java | 18 ++ .../impl/data/logic/BooleanDataType.java | 8 +- .../impl/data/numeric/IntegerDataType.java | 23 +- .../impl/data/numeric/RationalDataType.java | 23 +- .../data/numeric/integer/ByteDataType.java | 2 +- .../data/numeric/integer/IntDataType.java | 2 +- .../data/numeric/integer/LongDataType.java | 2 +- .../data/numeric/integer/ShortDataType.java | 2 +- .../data/numeric/real/DoubleDataType.java | 2 +- .../impl/data/numeric/real/FloatDataType.java | 2 +- .../impl/data/temporal/DateDataType.java | 2 +- .../impl/data/temporal/TimeDataType.java | 2 +- .../impl/data/temporal/TimestampDataType.java | 2 +- .../java/link/pagan/traqtor/util/Name.java | 5 +- .../link/pagan/traqtor/util/RegExpHelper.java | 20 ++ 48 files changed, 637 insertions(+), 297 deletions(-) delete mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/UniverseProject.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/database/Database.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseColumn.java rename traqtor-aio/src/test/java/link/pagan/traqtor/project/{ => database}/DatabaseProject.java (56%) create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseTable.java delete mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Element.java delete mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Link.java delete mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Particle.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Universe.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseProject.java delete mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseSchema.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Element.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Particle.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/Link.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java create mode 100644 traqtor-aio/src/test/java/link/pagan/traqtor/util/RegExpHelper.java 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 b9c67cf..447de32 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/EndToEndTest.java +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/EndToEndTest.java @@ -1,20 +1,18 @@ 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.project.universe.UniverseProject; +import link.pagan.traqtor.project.universe.Universe; 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.element.Element; +import link.pagan.traqtor.project.universe.link.Link; 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.literal.StringDataType; +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.util.RegExpHelper; import org.junit.jupiter.api.Test; public class EndToEndTest { @@ -25,12 +23,12 @@ public class EndToEndTest { LogicDatatypeSchema LOGIC = LogicDatatypeSchema.instance(); NumericDatatypeSchema NUMERIC = NumericDatatypeSchema.instance(); TemporalDatatypeSchema TEMPORAL = TemporalDatatypeSchema.instance(); - - LiteralDataType STRING = LITERAL.STRING; + + StringDataType STRING = LITERAL.STRING; // LogicDataType BOOLEAN = LOGIC.BOOLEAN; // IntegerDataType BYTE = NUMERIC.BYTE; // IntegerDataType SHORT = NUMERIC.SHORT; -// IntegerDataType INTEGER = NUMERIC.INTEGER; + IntegerDataType INTEGER = NUMERIC.INTEGER; // IntegerDataType LONG = NUMERIC.LONG; RationalDataType FLOAT = NUMERIC.FLOAT; RationalDataType DOUBLE = NUMERIC.DOUBLE; @@ -38,127 +36,165 @@ public class EndToEndTest { // TemporalDataType TIME = TEMPORAL.TIME; // TemporalDataType TIMESTAMP = TEMPORAL.TIMESTAMP; - 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") + Element account = Universe.atom() + .name(Name.of("account")) + .particles( + STRING.particle() + .name(Name.of("email")) + .description("email as main identifier for an account") + .constraints( + STRING.min(4), + STRING.max(512), + STRING.regExp(RegExpHelper.EMAIL) + ), + STRING.particle() + .name(Name.of("phone")) + .description("alternative identifier for an account") + .optional() + .constraints( + STRING.min(10), + STRING.max(32), + STRING.regExp(RegExpHelper.PHONE) + ) ); - 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") + Element accountDetails = Universe.atom() + .name(Name.of("account", "details")) + .particles( + STRING.particle() + .name(Name.of("last", "name")) + .description("last name of user") + .constraints( + STRING.max(64), + STRING.min(1) + ), + STRING.particle() + .name(Name.of("first", "name")) + .description("first name of user") + .optional() + .constraints( + STRING.max(64), + STRING.min(1) + ), + INTEGER.particle() + .name(Name.of("age")) + .description("age of user owning an account") + .constraints( + INTEGER.min(18), + INTEGER.max(65) + ) ); - Isotope male = new Isotope() + Element male = Universe.isotope() .base(account) - .name(new Name("male")) - .addParticle(DOUBLE.particle() - .name(new Name("length")) - .description("penis length") + .name(Name.of("male")) + .particles( + DOUBLE.particle() + .name(Name.of("length")) + .description("penis length") + .constraints( + DOUBLE.min(0), + DOUBLE.max(40) + ) ); - Isotope female = new Isotope() + Element female = Universe.isotope() .base(account) - .name(new Name("female")) - .addParticle(FLOAT.particle() - .name(new Name("depth")) - .description("vagina depth") + .name(Name.of("female")) + .particles( + FLOAT.particle() + .name(Name.of("depth")) + .description("vagina depth") + .constraints( + DOUBLE.min(0), + DOUBLE.max(40) + ) ); - Atom position = new Atom() - .name(new Name("position")) - .addParticle(STRING.particle() - .name(new Name("title")) - .description("position name") + Element position = Universe.atom() + .name(Name.of("position")) + .particles( + STRING.particle() + .name(Name.of("title")) + .description("position name") + .constraints( + STRING.max(255), + STRING.min(3) + ) ); - Atom militaryId = new Atom() - .name(new Name("military", "id")) - .addParticle(STRING.particle() - .name(new Name("number")) - .description("military id number") + Element militaryId = Universe.atom() + .name(Name.of("military", "id")) + .particles( + STRING.particle() + .name(Name.of("number")) + .description("military id number") + .constraints( + STRING.max(11), + STRING.min(11) + ) ); - Atom profile = new Atom() - .name((new Name("profile")) + Element profile = Universe.atom() + .name((Name.of("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() + UniverseProject baseUniverse = Universe.project() + .name(Name.of("base")) + .schemas(LITERAL, LOGIC, NUMERIC, TEMPORAL) + .elements(account, accountDetails, male, female, position, militaryId, profile) + .links(Link.oneToOne() .from(account) - .fromName(new Name("details")) + .fromName(Name.of("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")) + .toName(Name.of("account")) + .mandatory(), + Universe.linkOneToMany() + .from(account).fromName(Name.of("profiles")) + .to(profile).toName(Name.of("account")) + .more(0), + Universe.linkManyToMany().from(profile) + .fromName(Name.of("positions")) + .to(position).toName(Name.of("profiles")), + Universe.linkOneToOne() + .from(male).fromName(Name.of("military", "id")) + .to(militaryId).toName(Name.of("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") + UniverseProject dataUniverse = Universe.project() + .name(Name.of("data")) + .schemas(LITERAL) + .elements(Universe.atom() + .name(Name.of("organization")) + .particles( + STRING.particle() + .name(Name.of("name")) + .description("full name of an organization") + .constraints( + STRING.max(255), + STRING.min(3) + ) ) ); - 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") - ); - +// DatabaseProject mainDatabase = Database.project() +// .name(Name.of("primary")) +// .universes(baseUniverse, dataUniverse) +// .addSchema(Database.schema() +// .name(Name.of("public")) +// .tables( +// Database.table() +// .columns()) +// ) // .table("base", "account") +// // .table("base", "account", "details") +// // .table("data", "organization") +// ); new Workspace() - .name(new Name("link", "pagan")) - .addProject(baseUniverse) - .addProject(dataUniverse) - .addProject(mainDatabase); + .name(Name.of("link", "pagan")) + .projects(baseUniverse, + dataUniverse + // ,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 index c49adc4..9dca2e9 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/Workspace.java +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/Workspace.java @@ -18,7 +18,7 @@ class Workspace { return this; } - public Workspace addProject(Project project) { + public Workspace projects(Project... project) { 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 index 4f5cffc..69c0242 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/project/Project.java +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/Project.java @@ -4,9 +4,8 @@ import link.pagan.traqtor.util.Name; public class Project { - public Project name(Name name){ - - return this; - } + 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 deleted file mode 100644 index b50f648..0000000 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/project/UniverseProject.java +++ /dev/null @@ -1,29 +0,0 @@ -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/Database.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/Database.java new file mode 100644 index 0000000..dcfac95 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/Database.java @@ -0,0 +1,24 @@ +package link.pagan.traqtor.project.database; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class Database { + + public static DatabaseProject project() { + return new DatabaseProject(); + } + + public static DatabaseSchema schema() { + return new DatabaseSchema(); + } + + public static DatabaseTable table() { + return new DatabaseTable(); + } + + public static DatabaseColumn column() { + return new DatabaseColumn(); + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseColumn.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseColumn.java new file mode 100644 index 0000000..11d4f87 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseColumn.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.database; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DatabaseColumn { + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/DatabaseProject.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseProject.java similarity index 56% rename from traqtor-aio/src/test/java/link/pagan/traqtor/project/DatabaseProject.java rename to traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseProject.java index dfbe00a..831cb36 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/project/DatabaseProject.java +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseProject.java @@ -1,6 +1,7 @@ -package link.pagan.traqtor.project; +package link.pagan.traqtor.project.database; -import link.pagan.traqtor.project.database.DatabaseSchema; +import link.pagan.traqtor.project.universe.UniverseProject; +import link.pagan.traqtor.project.Project; import link.pagan.traqtor.util.Name; /** @@ -9,6 +10,9 @@ import link.pagan.traqtor.util.Name; */ public class DatabaseProject extends Project { + DatabaseProject() { + } + @Override public DatabaseProject name(Name name) { super.name(name); @@ -19,4 +23,9 @@ public class DatabaseProject extends Project { return this; } + public DatabaseProject universes(UniverseProject... universes) { + + 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 index 7734c89..5dc3d8b 100644 --- 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 @@ -1,3 +1,8 @@ +/* + * 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.database; import link.pagan.traqtor.util.Name; @@ -8,8 +13,16 @@ import link.pagan.traqtor.util.Name; */ public class DatabaseSchema { - public DatabaseSchema name(Name name) { + DatabaseSchema() { + } + + + public DatabaseSchema name(Name name) { + return this; } + + + } diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseTable.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseTable.java new file mode 100644 index 0000000..2e5b655 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/database/DatabaseTable.java @@ -0,0 +1,15 @@ +/* + * 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.database; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class DatabaseTable { + + +} 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 deleted file mode 100644 index cc47100..0000000 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Element.java +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 7351e4c..0000000 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Link.java +++ /dev/null @@ -1,25 +0,0 @@ -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 deleted file mode 100644 index 28d1e86..0000000 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Particle.java +++ /dev/null @@ -1,25 +0,0 @@ -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/Universe.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Universe.java new file mode 100644 index 0000000..8c3999d --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/Universe.java @@ -0,0 +1,40 @@ +package link.pagan.traqtor.project.universe; + +import link.pagan.traqtor.project.universe.element.Atom; +import link.pagan.traqtor.project.universe.element.Element; +import link.pagan.traqtor.project.universe.element.Isotope; +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; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class Universe { + + public static UniverseProject project() { + return new UniverseProject(); + } + + public static Atom atom() { + return Element.atom(); + } + + public static Isotope isotope() { + return Element.isotope(); + } + + public static OneToOneLink linkOneToOne() { + return Link.oneToOne(); + } + + public static OneToManyLink linkOneToMany() { + return Link.oneToMany(); + } + + public static ManyToManyLink linkManyToMany() { + return Link.manyToMany(); + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseProject.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseProject.java new file mode 100644 index 0000000..46c5355 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseProject.java @@ -0,0 +1,32 @@ +package link.pagan.traqtor.project.universe; + +import link.pagan.traqtor.project.Project; +import link.pagan.traqtor.project.universe.schema.DatatypeSchema; +import link.pagan.traqtor.util.Name; +import link.pagan.traqtor.project.universe.link.Link; +import link.pagan.traqtor.project.universe.element.Element; + +public class UniverseProject extends Project { + + UniverseProject() { + } + + @Override + public UniverseProject name(Name name){ + super.name(name); + return this; + } + + public UniverseProject schemas (DatatypeSchema... schemas) { + return this; + } + + public UniverseProject elements (Element... element) { + return this; + } + + public UniverseProject links(Link... link) { + 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 deleted file mode 100644 index 8302608..0000000 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/UniverseSchema.java +++ /dev/null @@ -1,5 +0,0 @@ -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 index 593f8da..6096e8b 100644 --- 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 @@ -1,21 +1,24 @@ package link.pagan.traqtor.project.universe.element; -import link.pagan.traqtor.project.universe.Element; +import java.util.List; +import link.pagan.traqtor.project.universe.schema.DataType; import link.pagan.traqtor.util.Name; -import link.pagan.traqtor.project.universe.Particle; public class Atom extends Element { - + + Atom() { + } + @Override - public Atom name(Name name){ - super.name(name); - return this; - } + public Atom name(Name name) { + super.name(name); + return this; + } @Override - public Atom addParticle(Particle particle) { - super.addParticle(particle); - return this; - } + public Atom particles(List> particles) { + super.particles(particles); + return this; + } } diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Element.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Element.java new file mode 100644 index 0000000..3110a65 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Element.java @@ -0,0 +1,33 @@ +package link.pagan.traqtor.project.universe.element; + +import java.util.Arrays; +import java.util.List; +import link.pagan.traqtor.project.universe.schema.DataType; +import link.pagan.traqtor.util.Name; + +public class Element { + + public Element name(Name name){ + + return this; + } + + @SafeVarargs + public final Element particles(Particle... particles) { + return particles(Arrays.asList(particles)); + } + + public Element particles(List> particles) { + + return this; + } + + public static Atom atom () { + return new Atom(); + } + + public static Isotope isotope () { + return new Isotope(); + } + +} 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 index 5dc9488..39b330c 100644 --- 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 @@ -1,11 +1,14 @@ package link.pagan.traqtor.project.universe.element; -import link.pagan.traqtor.project.universe.Element; +import java.util.List; +import link.pagan.traqtor.project.universe.schema.DataType; import link.pagan.traqtor.util.Name; -import link.pagan.traqtor.project.universe.Particle; public class Isotope extends Element { + Isotope() { + } + Element base; @Override @@ -15,8 +18,8 @@ public class Isotope extends Element { } @Override - public Isotope addParticle(Particle particle) { - super.addParticle(particle); + public Isotope particles(List> particles) { + super.particles(particles); return this; } diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Particle.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Particle.java new file mode 100644 index 0000000..2af88c6 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/element/Particle.java @@ -0,0 +1,45 @@ +package link.pagan.traqtor.project.universe.element; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import link.pagan.traqtor.project.universe.schema.Constraint; +import link.pagan.traqtor.project.universe.schema.DataType; +import link.pagan.traqtor.util.Name; + +public class Particle { + + final DataType type; + Name name; + String description; + final List> constraints; + + public Particle(DataType type) { + this.type = type; + this.constraints = new ArrayList<>(); + } + + @SafeVarargs + public final Particle constraints (Constraint... args) { + return constraints(Arrays.asList(args)); + } + + public Particle constraints (List> args) { + this.constraints.addAll(args); + return this; + } + + public Particle name(Name name) { + + return this; + } + + public Particle description(String description) { + + return this; + } + + public Particle optional() { + return this; + } +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/Link.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/Link.java new file mode 100644 index 0000000..73f8356 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/link/Link.java @@ -0,0 +1,37 @@ +package link.pagan.traqtor.project.universe.link; + +import link.pagan.traqtor.project.universe.element.Element; +import link.pagan.traqtor.util.Name; + +public abstract 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; + } + + public static OneToOneLink oneToOne () { + return new OneToOneLink(); + } + + public static OneToManyLink oneToMany () { + return new OneToManyLink(); + } + + public static ManyToManyLink manyToMany () { + return new ManyToManyLink(); + } + + +} 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 index e4ab2cd..470eeac 100644 --- 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 @@ -1,11 +1,13 @@ 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; +import link.pagan.traqtor.project.universe.element.Element; public class ManyToManyLink extends Link { - + + ManyToManyLink() { + } + public ManyToManyLink from(Element element) { super.from(element); 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 index a48c91d..0189745 100644 --- 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 @@ -1,11 +1,13 @@ 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; +import link.pagan.traqtor.project.universe.element.Element; public class OneToManyLink extends Link { + OneToManyLink() { + } + @Override public OneToManyLink from(Element element) { super.from(element); 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 index 2c58e2a..beddaff 100644 --- 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 @@ -1,11 +1,13 @@ 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; +import link.pagan.traqtor.project.universe.element.Element; public class OneToOneLink extends Link { + OneToOneLink() { + } + @Override public OneToOneLink from(Element element) { super.from(element); 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 index a951c64..116953f 100644 --- 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 @@ -1,24 +1,29 @@ package link.pagan.traqtor.project.universe.schema; -import link.pagan.traqtor.project.universe.Particle; +import java.util.List; +import link.pagan.traqtor.project.universe.element.Particle; public abstract class DataType { - private String name; + final List> typeConstraints; - protected DataType (){ + public DataType(List> typeConstraints) { + this.typeConstraints = typeConstraints; } - public DataType(String name) { - this.name = name; - } + 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/impl/LiteralDataTypeSchema.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/LiteralDataTypeSchema.java index bfb7a05..61e1fb2 100644 --- 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 @@ -1,14 +1,13 @@ 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 final StringDataType STRING = StringDataType.instance(); public static LiteralDataTypeSchema 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 index a097df0..7e530e7 100644 --- 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 @@ -9,7 +9,13 @@ import link.pagan.traqtor.project.universe.schema.DataType; */ public class NotNullConstraint extends Constraint { - public NotNullConstraint() { + private static final NotNullConstraint instance = new NotNullConstraint(); + + public static NotNullConstraint instance() { + return instance; + } + + private 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 index f6a52fa..6fc18b0 100644 --- 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 @@ -1,6 +1,8 @@ package link.pagan.traqtor.project.universe.schema.impl.data; -import link.pagan.traqtor.project.universe.Particle; +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; /** @@ -9,6 +11,10 @@ import link.pagan.traqtor.project.universe.schema.DataType; */ public abstract class LiteralDataType extends DataType { + public LiteralDataType(List> typeConstraints) { + super(typeConstraints); + } + @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 index 6c25fee..0b54569 100644 --- 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 @@ -1,6 +1,8 @@ package link.pagan.traqtor.project.universe.schema.impl.data; -import link.pagan.traqtor.project.universe.Particle; +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; /** @@ -9,6 +11,10 @@ import link.pagan.traqtor.project.universe.schema.DataType; */ public abstract class LogicDataType extends DataType { + public LogicDataType(List> typeConstraints) { + super(typeConstraints); + } + @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 index 4019922..9c89634 100644 --- 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 @@ -1,6 +1,8 @@ package link.pagan.traqtor.project.universe.schema.impl.data; -import link.pagan.traqtor.project.universe.Particle; +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; /** @@ -9,6 +11,10 @@ import link.pagan.traqtor.project.universe.schema.DataType; */ public abstract class NumericDataType extends DataType { + public NumericDataType(List> typeConstraints) { + super(typeConstraints); + } + @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 index 1c87c87..05d37ff 100644 --- 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 @@ -1,7 +1,7 @@ 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.element.Particle; import link.pagan.traqtor.project.universe.schema.Constraint; import link.pagan.traqtor.project.universe.schema.DataType; @@ -11,12 +11,10 @@ import link.pagan.traqtor.project.universe.schema.DataType; */ public abstract class TemporalDataType extends DataType { - final List> typeConstraints; - - public TemporalDataType(List> typeConstraints) { - this.typeConstraints = typeConstraints; + public TemporalDataType(List> typeConstraints) { + super(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 index c44ffab..faac4a1 100644 --- 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 @@ -3,10 +3,12 @@ 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; +import link.pagan.traqtor.project.universe.element.Particle; +import link.pagan.traqtor.project.universe.schema.impl.constraints.NotNullConstraint; +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; /** * @@ -16,14 +18,12 @@ 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<>(); + super(new ArrayList<>()); } @Override @@ -31,4 +31,20 @@ public class StringDataType extends LiteralDataType { return new Particle(this); } + public LiteralMinConstraint min(long min) { + return new LiteralMinConstraint(min); + } + + public LiteralMaxConstraint max(long max) { + return new LiteralMaxConstraint(max); + } + + public LiteralRegExpConstraint regExp(String regExp) { + return new LiteralRegExpConstraint(regExp); + } + + public NotNullConstraint notNull() { + return NotNullConstraint.instance(); + } + } diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java new file mode 100644 index 0000000..fd5a02a --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMaxConstraint.java @@ -0,0 +1,18 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints; + +import link.pagan.traqtor.project.universe.schema.Constraint; +import link.pagan.traqtor.project.universe.schema.impl.data.literal.StringDataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class LiteralMaxConstraint extends Constraint { + + long max; + + public LiteralMaxConstraint(long max) { + this.max = max; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java new file mode 100644 index 0000000..8323d18 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralMinConstraint.java @@ -0,0 +1,18 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints; + +import link.pagan.traqtor.project.universe.schema.Constraint; +import link.pagan.traqtor.project.universe.schema.impl.data.literal.StringDataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class LiteralMinConstraint extends Constraint { + + long min; + + public LiteralMinConstraint(long min) { + this.min = min; + } + +} diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java new file mode 100644 index 0000000..5c7208e --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/project/universe/schema/impl/data/literal/constraints/LiteralRegExpConstraint.java @@ -0,0 +1,18 @@ +package link.pagan.traqtor.project.universe.schema.impl.data.literal.constraints; + +import link.pagan.traqtor.project.universe.schema.Constraint; +import link.pagan.traqtor.project.universe.schema.impl.data.literal.StringDataType; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class LiteralRegExpConstraint extends Constraint { + + String regExp; + + public LiteralRegExpConstraint(String regExp) { + this.regExp = regExp; + } + +} 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 index 79e0fbb..2c91225 100644 --- 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 @@ -3,10 +3,8 @@ 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; +import link.pagan.traqtor.project.universe.element.Particle; /** * @@ -16,14 +14,12 @@ 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<>(); + super(new ArrayList<>()); } @Override 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 index 30ca26f..805ab01 100644 --- 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 @@ -1,9 +1,12 @@ 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.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; /** * @@ -11,13 +14,19 @@ import link.pagan.traqtor.project.universe.schema.impl.data.NumericDataType; */ public abstract class IntegerDataType extends NumericDataType { - final List> typeConstraints; - - public IntegerDataType(List> typeConstraints) { - this.typeConstraints = typeConstraints; + public IntegerDataType(List> typeConstraints) { + super(typeConstraints); } - + @Override public abstract Particle 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/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 index 52700da..0d76ea7 100644 --- 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 @@ -1,9 +1,12 @@ 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.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; /** * @@ -11,13 +14,19 @@ import link.pagan.traqtor.project.universe.schema.impl.data.NumericDataType; */ public abstract class RationalDataType extends NumericDataType { - final List> typeConstraints; - - public RationalDataType(List> typeConstraints) { - this.typeConstraints = typeConstraints; + public RationalDataType(List> typeConstraints) { + super(typeConstraints); } - + @Override public abstract Particle particle(); - + + public RationalMinConstraint min(double min) { + return new RationalMinConstraint(min); + } + + public RationalMaxConstraint max(double max) { + return new RationalMaxConstraint(max); + } + } 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 index b60c982..f773d58 100644 --- 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 @@ -1,7 +1,7 @@ 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.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; 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 index d6ccec4..1a1f8eb 100644 --- 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 @@ -1,7 +1,7 @@ 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.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; 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 index ce2e333..03de74f 100644 --- 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 @@ -1,7 +1,7 @@ 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.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; 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 index bed6855..01838ef 100644 --- 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 @@ -1,7 +1,7 @@ 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.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; 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 index 20fd691..8463caa 100644 --- 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 @@ -1,7 +1,7 @@ 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.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; 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 index 714dd8d..e329504 100644 --- 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 @@ -1,7 +1,7 @@ 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.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; 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 index 1d812b5..90261ed 100644 --- 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 @@ -2,7 +2,7 @@ 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; +import link.pagan.traqtor.project.universe.element.Particle; /** * 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 index ed46eaf..f840e1c 100644 --- 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 @@ -2,7 +2,7 @@ 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; +import link.pagan.traqtor.project.universe.element.Particle; /** * 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 index d39da18..24e953d 100644 --- 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 @@ -2,7 +2,7 @@ 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; +import link.pagan.traqtor.project.universe.element.Particle; /** * 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 index b7ca43c..2e2dd06 100644 --- a/traqtor-aio/src/test/java/link/pagan/traqtor/util/Name.java +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/util/Name.java @@ -2,7 +2,10 @@ package link.pagan.traqtor.util; public class Name { - public Name(String... string) { + Name(String... string) { } + public static Name of (String ... parts) { + return new Name(parts); + } } diff --git a/traqtor-aio/src/test/java/link/pagan/traqtor/util/RegExpHelper.java b/traqtor-aio/src/test/java/link/pagan/traqtor/util/RegExpHelper.java new file mode 100644 index 0000000..2b44842 --- /dev/null +++ b/traqtor-aio/src/test/java/link/pagan/traqtor/util/RegExpHelper.java @@ -0,0 +1,20 @@ +package link.pagan.traqtor.util; + +/** + * + * @author Edward M. Kagan {@literal <}kaganem{@literal @}2pm.tech{@literal >} + */ +public class RegExpHelper { + + public static final String URL = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"; + public static final String EMAIL = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"; + public static final String IP = "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"; + public static final String PHONE = "\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\\d{1,14}$"; + public static final String PHONE_RU = "^((\\+7|7|8)+([0-9]){10})$"; + public static final String PHONE_US = "1?\\W*([2-9][0-8][0-9])\\W*([2-9][0-9]{2})\\W*([0-9]{4})(\\se?x?t?(\\d*))?"; + public static final String PHONE_DE = "/^([\\+][0-9]{1,3}[ \\.\\-])?([\\(]{1}[0-9]{1,6}[\\)])?([0-9 \\.\\-\\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/"; + public static final String PHONE_UK = "^(?:(?:\\(?(?:0(?:0|11)\\)?[\\s-]?\\(?|\\+)44\\)?[\\s-]?(?:\\(?0\\)?[\\s-]?)?)|(?:\\(?0))(?:(?:\\d{5}\\)?[\\s-]?\\d{4,5})|(?:\\d{4}\\)?[\\s-]?(?:\\d{5}|\\d{3}[\\s-]?\\d{3}))|(?:\\d{3}\\)?[\\s-]?\\d{3}[\\s-]?\\d{3,4})|(?:\\d{2}\\)?[\\s-]?\\d{4}[\\s-]?\\d{4}))(?:[\\s-]?(?:x|ext\\.?|\\#)\\d{3,4})?$"; + + + +}