public FNodeSet(Schema Columns, Key Fields) : this() { this.AllowNameDotName = false; for (int i = 0; i < Fields.Count; i++) { this.Add(Columns.ColumnName(Fields[i]), new FNodeFieldRef(null, Fields[i], Columns.ColumnAffinity(Fields[i]), Columns.ColumnSize(Fields[i]), null)); } }
public FNodeSet(Schema Columns, bool AlloowDotNames) : this() { this.AllowNameDotName = AlloowDotNames; for (int i = 0; i < Columns.Count; i++) { this.Add(Columns.ColumnName(i), new FNodeFieldRef(null, i, Columns.ColumnAffinity(i), Columns.ColumnSize(i), null)); } }
// Records // public static Record ToRecord(string Text, Schema Columns, char[] Delims, char Escape) { // Split the data // string[] t = Splitter.Split(Text, Delims, Escape, false, Cell.NULL_STRING_TEXT); // Check the length // if (t.Length != Columns.Count) throw new Exception(string.Format("Text has {0} fields, but schema has {1} fields", t.Length, Columns.Count)); // Build the record // RecordBuilder rb = new RecordBuilder(); for (int i = 0; i < t.Length; i++) rb.Add(Cell.Parse(t[i], Columns.ColumnAffinity(i))); return rb.ToRecord(); }
public static FNode Field(Schema Columns, string Name, Register Memory) { int idx = Columns.ColumnIndex(Name); return Field(idx, Columns.ColumnAffinity(idx), Columns.ColumnSize(idx), Memory); }
/// <summary> /// Creates a schema from another schema /// </summary> /// <param name="S">The starting point schema</param> /// <param name="K">A key representing the columns to keep</param> /// <returns>A schema</returns> public static Schema Split(Schema S, Key K) { Schema s = new Schema(); for (int i = 0; i < K.Count; i++) { s.Add(S.ColumnName(K[i]), S.ColumnAffinity(K[i]), S.ColumnNull(K[i]), S.ColumnSize(K[i])); } return s; }
// Statics // /// <summary> /// Combines two schemas; throws an exception if two columns have the same name. /// </summary> /// <param name="S1">The left schema</param> /// <param name="S2">The right schema</param> /// <returns>A combined schema</returns> public static Schema Join(Schema S1, Schema S2) { Schema s = new Schema(); for (int i = 0; i < S1.Count; i++) { s.Add(S1.ColumnName(i), S1.ColumnAffinity(i), S1.ColumnNull(i), S1.ColumnSize(i)); } for (int i = 0; i < S2.Count; i++) { s.Add(S2.ColumnName(i), S2.ColumnAffinity(i), S2.ColumnNull(i), S2.ColumnSize(i)); } return s; }
public void Repoint(Schema OriginalSchema, Schema NewSchema) { if (this._idx >= OriginalSchema.Count) throw new Exception("Original schema is invalid"); if (OriginalSchema.ColumnAffinity(this._idx) != this._affinity) throw new Exception("Original schema is invalid"); string name = OriginalSchema.ColumnName(this._idx); int new_index = NewSchema.ColumnIndex(name); if (new_index == -1) throw new Exception("New schema is invalid"); if (NewSchema.ColumnAffinity(new_index) != this._affinity) throw new Exception("New schema is invalid"); this._idx = new_index; }
public static Schema Build(Schema S1, string Alias1, Schema S2, string Alias2, string Delim) { Schema s = new Schema(); for (int i = 0; i < S1.Count; i++) s.Add(Alias1 + Delim + S1.ColumnName(i), S1.ColumnAffinity(i), S1.ColumnNull(i), S1.ColumnSize(i)); for (int i = 0; i < S2.Count; i++) s.Add(Alias2 + Delim + S2.ColumnName(i), S2.ColumnAffinity(i), S2.ColumnNull(i), S2.ColumnSize(i)); return s; }