public TableDefinition[] generate( string host, string database, string tableOwner, string user, string pwd, bool generateAll) { OL.setConnection(host, database, user, pwd); ITransaction trx = OL.Instance.BeginTransaction(); Criterion crit = new CriterionEqual("table_owner", tableOwner); if (!generateAll) { crit = new CriterionAnd( crit, new CriterionEqual("table_type", "T")); } List <object> tables = trx.Load( typeof(PGTable), new CriterionAnd( new CriterionEqual("t.schemaname", "public"), new CriterionText("t.tablename=c.relname"))); List <TableDefinition> defs = new List <TableDefinition>(); foreach (PGTable t in tables) { TableDefinition def = new TableDefinition(); def.table = map(t); /* * List<object> idx = trx.Load( * typeof(PGIndex), * new CriterionAnd( * new CriterionEqual("indrelid", t.oid), * new CriterionEqual("indisprimary", "t"))); */ def.columns = trx.Load( typeof(PGColumn), new CriterionAnd( new CriterionGreaterThan("attnum", 0), new CriterionEqual("t.oid", t.oid)), "attnum") .ConvertAll <Column>( new Converter <object, Column>( delegate(object o) { return(map((PGColumn)o)); })) .ToArray(); defs.Add(def); } trx.Commit(); return(defs.ToArray()); }
public TableDefinition[] generate( string host, string database, string tableOwner, string user, string pwd, bool generateAll) { OL.setConnection(host, database, user, pwd); ITransaction trx = OL.Instance.BeginTransaction(); Criterion crit = new CriterionEqual("table_owner", tableOwner); if (!generateAll) { crit = new CriterionAnd( crit, new CriterionEqual("table_type", "T")); } List <object> tables = trx.Load( typeof(IITable), crit); List <TableDefinition> defs = new List <TableDefinition>(); foreach (IITable t in tables) { TableDefinition def = new TableDefinition(); def.table = map(t); def.columns = trx.Load( typeof(IIColumn), new CriterionEqual("table_name", t.table_name), "column_sequence") .ConvertAll <Column>( new Converter <object, Column>( delegate(object o) { return(map((IIColumn)o)); })) .ToArray(); defs.Add(def); } trx.Commit(); return(defs.ToArray()); }
protected string CriterionToXPath(Criterion crit) { if (crit == null) { throw new ArgumentNullException("crit"); } if (crit is CriterionAnd) { CriterionAnd and = (CriterionAnd)crit; string andStr = ""; andStr += "("; foreach (Criterion c in and.crits) { andStr += CriterionToXPath(c); andStr += " AND "; } andStr = andStr.Substring(0, andStr.Length - 5); andStr += ")"; return(andStr); } if (crit is CriterionOr) { CriterionOr or = (CriterionOr)crit; string orStr = ""; orStr += "("; foreach (Criterion c in or.crits) { orStr += CriterionToXPath(c); orStr += " OR "; } orStr = orStr.Substring(0, orStr.Length - 4); orStr += ")"; return(orStr); } if (crit is CriterionEqual) { CriterionEqual critEq = (CriterionEqual)crit; return(critEq.a + eq(critEq.b) + xmlValidString(critEq.b)); } if (crit is CriterionNotEqual) { CriterionNotEqual eq = (CriterionNotEqual)crit; return(eq.a + neq(eq.b) + xmlValidString(eq.b)); } if (crit is CriterionEqualsInsensitive) { CriterionEqualsInsensitive eq = (CriterionEqualsInsensitive)crit; return("UPPER ( " + eq.a + " ) = UPPER ( " + xmlValidString(eq.b) + " ) "); } if (crit is CriterionGreaterOrEqual) { CriterionGreaterOrEqual eq = (CriterionGreaterOrEqual)crit; return(eq.a + " >= " + xmlValidString(eq.b)); } if (crit is CriterionGreaterThan) { CriterionGreaterThan eq = (CriterionGreaterThan)crit; return(eq.a + " > " + xmlValidString(eq.b)); } if (crit is CriterionLessOrEqual) { CriterionLessOrEqual eq = (CriterionLessOrEqual)crit; return(eq.a + " <= " + xmlValidString(eq.b)); } if (crit is CriterionLessThan) { CriterionLessThan eq = (CriterionLessThan)crit; return(eq.a + " < " + xmlValidString(eq.b)); } if (crit is CriterionLike) { CriterionLike eq = (CriterionLike)crit; return(eq.a + " LIKE " + xmlValidString(eq.b)); } if (crit is CriterionText) { return(((CriterionText)crit).text); } if (crit is CriterionIsNull) { return(((CriterionIsNull)crit).a + " IS NULL"); } throw new Exception("Unknown Criterion!"); }