EndToEnd for unicerse build no-conflict

Edward M. Kagan 5 years ago
parent dd9a274f0a
commit 1fe9ac5999

@ -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 {
@ -26,11 +24,11 @@ public class EndToEndTest {
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
);
}
}

@ -18,7 +18,7 @@ class Workspace {
return this;
}
public Workspace addProject(Project project) {
public Workspace projects(Project... project) {
return this;
}

@ -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;
}
}

@ -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;
}
}

@ -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();
}
}

@ -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 {
}

@ -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;
}
}

@ -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 {
DatabaseSchema() {
}
public DatabaseSchema name(Name name) {
return this;
}
}

@ -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 {
}

@ -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;
}
}

@ -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;
}
}

@ -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<T extends DataType> {
final DataType type;
Name name;
String description;
public Particle(DataType type) {
this.type = type;
}
public Particle<T> name(Name name) {
return this;
}
public Particle<T> description(String description) {
return this;
}
}

@ -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();
}
}

@ -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;
}
}

@ -1,5 +0,0 @@
package link.pagan.traqtor.project.universe;
public class UniverseSchema {
}

@ -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<Particle<? extends DataType>> particles) {
super.particles(particles);
return this;
}
}

@ -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<? extends DataType>... particles) {
return particles(Arrays.asList(particles));
}
public Element particles(List<Particle<? extends DataType>> particles) {
return this;
}
public static Atom atom () {
return new Atom();
}
public static Isotope isotope () {
return new Isotope();
}
}

@ -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<Particle<? extends DataType>> particles) {
super.particles(particles);
return this;
}

@ -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<T extends DataType> {
final DataType type;
Name name;
String description;
final List<Constraint<? super T>> constraints;
public Particle(DataType type) {
this.type = type;
this.constraints = new ArrayList<>();
}
@SafeVarargs
public final Particle<T> constraints (Constraint<? super T>... args) {
return constraints(Arrays.asList(args));
}
public Particle<T> constraints (List<Constraint<? super T>> args) {
this.constraints.addAll(args);
return this;
}
public Particle<T> name(Name name) {
return this;
}
public Particle<T> description(String description) {
return this;
}
public Particle<T> optional() {
return this;
}
}

@ -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();
}
}

@ -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;

@ -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);

@ -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);

@ -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<Constraint<? extends DataType>> typeConstraints;
protected DataType (){
public DataType(List<Constraint<? extends DataType>> 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<? extends DataType> particle();
}

@ -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;

@ -9,7 +9,13 @@ import link.pagan.traqtor.project.universe.schema.DataType;
*/
public class NotNullConstraint extends Constraint<DataType> {
public NotNullConstraint() {
private static final NotNullConstraint instance = new NotNullConstraint();
public static NotNullConstraint instance() {
return instance;
}
private NotNullConstraint() {
}
}

@ -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<Constraint<? extends DataType>> typeConstraints) {
super(typeConstraints);
}
@Override
public abstract Particle<? extends LiteralDataType> particle();

@ -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<Constraint<? extends DataType>> typeConstraints) {
super(typeConstraints);
}
@Override
public abstract Particle<? extends LogicDataType> particle();

@ -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<Constraint<? extends DataType>> typeConstraints) {
super(typeConstraints);
}
@Override
public abstract Particle<? extends NumericDataType> particle();

@ -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,10 +11,8 @@ import link.pagan.traqtor.project.universe.schema.DataType;
*/
public abstract class TemporalDataType extends DataType {
final List<Constraint<? extends TemporalDataType>> typeConstraints;
public TemporalDataType(List<Constraint<? extends TemporalDataType>> typeConstraints) {
this.typeConstraints = typeConstraints;
public TemporalDataType(List<Constraint<? extends DataType>> typeConstraints) {
super(typeConstraints);
}
@Override

@ -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<Constraint<? extends LiteralDataType>> 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<StringDataType>(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();
}
}

@ -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<StringDataType> {
long max;
public LiteralMaxConstraint(long max) {
this.max = max;
}
}

@ -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<StringDataType> {
long min;
public LiteralMinConstraint(long min) {
this.min = min;
}
}

@ -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<StringDataType> {
String regExp;
public LiteralRegExpConstraint(String regExp) {
this.regExp = regExp;
}
}

@ -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<Constraint<? extends LogicDataType>> typeConstraints;
public static BooleanDataType instance() {
return instance;
}
private BooleanDataType() {
this.typeConstraints = new ArrayList<>();
super(new ArrayList<>());
}
@Override

@ -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<Constraint<? extends IntegerDataType>> typeConstraints;
public IntegerDataType(List<Constraint<? extends IntegerDataType>> typeConstraints) {
this.typeConstraints = typeConstraints;
public IntegerDataType(List<Constraint<? extends DataType>> typeConstraints) {
super(typeConstraints);
}
@Override
public abstract Particle<? extends IntegerDataType> particle();
public IntegerMinConstraint min(long min) {
return new IntegerMinConstraint(min);
}
public IntegerMaxConstraint max(long max) {
return new IntegerMaxConstraint(max);
}
}

@ -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<Constraint<? extends RationalDataType>> typeConstraints;
public RationalDataType(List<Constraint<? extends RationalDataType>> typeConstraints) {
this.typeConstraints = typeConstraints;
public RationalDataType(List<Constraint<? extends DataType>> typeConstraints) {
super(typeConstraints);
}
@Override
public abstract Particle<? extends RationalDataType> particle();
public RationalMinConstraint min(double min) {
return new RationalMinConstraint(min);
}
public RationalMaxConstraint max(double max) {
return new RationalMaxConstraint(max);
}
}

@ -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;

@ -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;

@ -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;

@ -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;

@ -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;

@ -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;

@ -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;
/**
*

@ -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;
/**
*

@ -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;
/**
*

@ -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);
}
}

@ -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})?$";
}
Loading…
Cancel
Save