use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.
the class SqlTypeSide method jps.
private static Map<Ty, String> jps() {
Map<Ty, String> m = new HashMap<>();
// TODO AQL
m.put(new Ty("Longvarbinary"), "return input[0]");
// TODO AQL
m.put(new Ty("Varbinary"), "return input[0]");
// TODO AQL
m.put(new Ty("Binary"), "return input[0]");
/*
m.put("Date", "return input[0]");
m.put("Time", "return input[0]");
m.put("Timestamp", "return input[0]");
*/
m.put(new Ty("Clob"), "return input[0]");
// java.sql.Date.valueOf(input[0])");
m.put(new Ty("Date"), "return input[0]");
m.put(new Ty("Time"), "return java.sql.Time.valueOf(input[0])");
m.put(new Ty("Timestamp"), "return java.sql.Timestamp.valueOf(input[0])");
m.put(new Ty("Bigint"), "return new java.lang.Long(input[0])");
m.put(new Ty("Boolean"), "return new java.lang.Boolean(input[0])");
m.put(new Ty("Bool"), "return new java.lang.Boolean(input[0])");
// TODO aql
m.put(new Ty("Char"), "return input[0]");
m.put(new Ty("Bit"), "return new java.lang.Boolean(input[0])");
m.put(new Ty("Double"), "return new java.lang.Double(input[0])");
m.put(new Ty("Doubleprecision"), "return new java.lang.Double(input[0])");
m.put(new Ty("Numeric"), "return new java.math.BigDecimal(input[0])");
m.put(new Ty("Decimal"), "return new java.math.BigDecimal(input[0])");
m.put(new Ty("Real"), "return new java.lang.Float(input[0])");
m.put(new Ty("Float"), "return new java.lang.Float(input[0])");
m.put(new Ty("Integer"), "return new java.lang.Integer(input[0])");
m.put(new Ty("Int"), "return new java.lang.Integer(input[0])");
m.put(new Ty("Tinyint"), "return new java.lang.Integer(input[0])");
m.put(new Ty("Smallint"), "return new java.lang.Integer(input[0])");
m.put(new Ty("Text"), "return input[0]");
m.put(new Ty("String"), "return input[0]");
m.put(new Ty("Nvarchar"), "return input[0]");
m.put(new Ty("Varchar"), "return input[0]");
m.put(new Ty("Longvarchar"), "return input[0]");
m.put(new Ty("Custom"), "return input[0]");
m.put(new Ty("Dom"), "return input[0]");
m.put(new Ty("Other"), "return input[0]");
m.put(new Ty("Blob"), "return input[0]");
return m;
}
use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.
the class SqlTypeSide method jts.
private static Map<Ty, String> jts() {
Map<Ty, String> m = new HashMap<>();
// TODO aql
m.put(new Ty("Longvarbinary"), "[B");
// TODO aql
m.put(new Ty("Varbinary"), "[B");
// TODO aql
m.put(new Ty("Binary"), "[B");
m.put(new Ty("Bigint"), "java.lang.Long");
m.put(new Ty("Boolean"), "java.lang.Boolean");
m.put(new Ty("Bit"), "java.lang.Boolean");
m.put(new Ty("Bool"), "java.lang.Boolean");
// TODO aql
m.put(new Ty("Char"), "java.lang.String");
m.put(new Ty("Double"), "java.lang.Double");
m.put(new Ty("Doubleprecision"), "java.lang.Double");
m.put(new Ty("Decimal"), "java.math.BigDecimal");
m.put(new Ty("Numeric"), "java.math.BigDecimal");
m.put(new Ty("Float"), "java.lang.Float");
m.put(new Ty("Real"), "java.lang.Float");
m.put(new Ty("Integer"), "java.lang.Integer");
m.put(new Ty("Int"), "java.lang.Integer");
m.put(new Ty("Smallint"), "java.lang.Integer");
m.put(new Ty("Tinyint"), "java.lang.Integer");
m.put(new Ty("Text"), "java.lang.String");
m.put(new Ty("Nvarchar"), "java.lang.String");
m.put(new Ty("Varchar"), "java.lang.String");
m.put(new Ty("Longvarchar"), "java.lang.String");
m.put(new Ty("String"), "java.lang.String");
m.put(new Ty("Custom"), "java.lang.Object");
m.put(new Ty("Dom"), "java.lang.Object");
m.put(new Ty("Blob"), "java.lang.Object");
m.put(new Ty("Clob"), "java.lang.Object");
m.put(new Ty("Other"), "java.lang.Object");
/*
m.put("Date", "java.lang.Object"); //TODO aql
m.put("Time", "java.lang.Object"); //TODO aql
m.put("Timestamp", "java.lang.Object"); //TODO aql
*/
m.put(new Ty("Date"), "java.lang.Object");
m.put(new Ty("Time"), "java.sql.Time");
m.put(new Ty("Timestamp"), "java.sql.Timestamp");
return m;
}
use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.
the class ColimitSchema method makeCoprodSchema.
private void makeCoprodSchema(Collage<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void> col, Set<Triple<Pair<Var, Set<Pair<N, En>>>, Term<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void>, Term<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void>>> eqs, Ctx<Pair<N, En>, Set<Pair<N, En>>> eqcs) {
for (N n : nodes.keySet()) {
Schema<Ty, En, Sym, Fk, Att> s = nodes.get(n);
for (Att att : s.atts.keySet()) {
col.atts.put(new Pair<>(n, att), new Pair<>(eqcs.get(new Pair<>(n, s.atts.get(att).first)), s.atts.get(att).second));
}
for (Fk fk : s.fks.keySet()) {
col.fks.put(new Pair<>(n, fk), new Pair<>(eqcs.get(new Pair<>(n, s.fks.get(fk).first)), eqcs.get(new Pair<>(n, s.fks.get(fk).second))));
}
for (Triple<Pair<Var, En>, Term<Ty, En, Sym, Fk, Att, Void, Void>, Term<Ty, En, Sym, Fk, Att, Void, Void>> eq : s.eqs) {
Term<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void> lhs = eq.second.map(Function.identity(), Function.identity(), z -> new Pair<>(n, z), z -> new Pair<>(n, z), Function.identity(), Function.identity());
Term<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void> rhs = eq.third.map(Function.identity(), Function.identity(), z -> new Pair<>(n, z), z -> new Pair<>(n, z), Function.identity(), Function.identity());
Pair<Var, Set<Pair<N, En>>> x = new Pair<>(eq.first.first, eqcs.get(new Pair<>(n, eq.first.second)));
eqs.add(new Triple<>(x, lhs, rhs));
col.eqs.add(new Eq<>(new Ctx<>(x).inRight(), lhs, rhs));
}
}
}
use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.
the class ColimitSchema method renameFk.
public ColimitSchema<N> renameFk(Fk src, Fk dst, boolean checkJava) {
if (!schemaStr.fks.containsKey(src)) {
throw new RuntimeException(src.en + "." + src.str + " is not a foreign_key in \n" + schemaStr);
}
if (schemaStr.fks.containsKey(dst)) {
throw new RuntimeException(dst + " is already a foreign_key in \n" + schemaStr);
}
Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> isoToUser = Mapping.id(schemaStr);
Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> isoFromUser = Mapping.id(schemaStr);
Function<Fk, Fk> fun = x -> x.equals(src) ? dst : x;
Function<Fk, Fk> fun2 = x -> x.equals(dst) ? src : x;
Map<Fk, Pair<En, En>> fks = new HashMap<>();
for (Fk k : schemaStr.fks.keySet()) {
fks.put(fun.apply(k), schemaStr.fks.get(k));
}
Set<Triple<Pair<Var, En>, Term<Ty, En, Sym, Fk, Att, Void, Void>, Term<Ty, En, Sym, Fk, Att, Void, Void>>> eqs = new HashSet<>();
for (Triple<Pair<Var, En>, Term<Ty, En, Sym, Fk, Att, Void, Void>, Term<Ty, En, Sym, Fk, Att, Void, Void>> eq : schemaStr.eqs) {
eqs.add(new Triple<>(eq.first, eq.second.mapFk(fun), eq.third.mapFk(fun)));
}
DP<Ty, En, Sym, Fk, Att, Void, Void> dp = new DP<Ty, En, Sym, Fk, Att, Void, Void>() {
@Override
public String toStringProver() {
return "rename foreign key of " + schemaStr.dp.toStringProver();
}
@Override
public boolean eq(Ctx<Var, Chc<Ty, En>> ctx, Term<Ty, En, Sym, Fk, Att, Void, Void> lhs, Term<Ty, En, Sym, Fk, Att, Void, Void> rhs) {
return schemaStr.dp.eq(ctx, lhs.mapFk(fun2), rhs.mapFk(fun2));
}
};
Schema<Ty, En, Sym, Fk, Att> schemaStr2 = // TODO aql java
new Schema<>(ty, schemaStr.ens, schemaStr.atts.map, fks, eqs, dp, checkJava);
Map<Fk, Pair<En, List<Fk>>> fksM = new HashMap<>();
for (Fk k : schemaStr.fks.keySet()) {
fksM.put(k, new Pair<>(schemaStr.fks.get(k).first, k.equals(src) ? Util.singList(dst) : Util.singList(k)));
}
isoToUser = new Mapping<>(isoToUser.ens.map, isoToUser.atts.map, fksM, schemaStr, schemaStr2, checkJava);
Map<Fk, Pair<En, List<Fk>>> fksM2 = new HashMap<>();
for (Fk k : schemaStr2.fks.keySet()) {
fksM2.put(k, new Pair<>(schemaStr2.fks.get(k).first, k.equals(dst) ? Util.singList(src) : Util.singList(k)));
}
isoFromUser = new Mapping<>(isoFromUser.ens.map, isoFromUser.atts.map, fksM2, schemaStr2, schemaStr, checkJava);
return wrap(isoToUser, isoFromUser);
}
use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.
the class ColimitSchema method isoOneWay.
private void isoOneWay(Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> F, Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> G, String str) {
if (!F.dst.equals(G.src)) {
throw new RuntimeException("Target of " + F + " \n, namely " + F.dst + "\ndoes not match source of " + G + ", namely " + F.src + "\n" + str);
}
Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> f = Mapping.compose(F, G);
for (En en : f.src.ens) {
En en2 = f.ens.get(en);
if (!en.equals(en2)) {
throw new RuntimeException(en + " taken to " + en2 + ", rather than itself, " + str);
}
}
for (Fk fk : f.src.fks.keySet()) {
Pair<En, List<Fk>> fk2 = f.fks.get(fk);
Var v = new Var("v");
Term<Ty, En, Sym, Fk, Att, Void, Void> t = Term.Fks(fk2.second, Term.Var(v));
Term<Ty, En, Sym, Fk, Att, Void, Void> s = Term.Fk(fk, Term.Var(v));
boolean eq = F.src.dp.eq(new Ctx<>(new Pair<>(v, Chc.inRight(fk2.first))), s, t);
if (!eq) {
throw new RuntimeException(fk + " taken to " + t + ", which is not provably equal to itself, " + str);
}
}
for (Att att : f.src.atts.keySet()) {
Triple<Var, En, Term<Ty, En, Sym, Fk, Att, Void, Void>> att2 = f.atts.get(att);
Var v = att2.first;
// Term.Fks(att2.second, Term.Var(v));
Term<Ty, En, Sym, Fk, Att, Void, Void> t = att2.third;
Term<Ty, En, Sym, Fk, Att, Void, Void> s = Term.Att(att, Term.Var(v));
boolean eq = F.src.dp.eq(new Ctx<>(new Pair<>(v, Chc.inRight(att2.second))), s, t);
if (!eq) {
throw new RuntimeException(att + " taken to " + t + ", which is not provably equal to itself, " + str);
}
}
}
Aggregations