public static ArrayDataRecord LoadRecord(BinaryReader fr, ITableStructure table) { var res = new ArrayDataRecord(table); for (int i = 0; i < table.Columns.Count; i++) { res.SeekValue(i); res.ReadValue(fr); } return(res); }
public void PutRecord(IBedRecord record) { object[] values = new object[record.FieldCount]; record.GetValues(values); IBedRecord input = new ArrayDataRecord(m_putFormat, values); IBedRecord trans = m_transform.Transform(input); m_queue.Put(new Element { Record = trans }); }
public IBedRecord AdaptRecord(IBedRecord record, ILogger logger) { ArrayDataRecord res = new ArrayDataRecord(record.Structure); for (int i = 0; i < res.FieldCount; i++) { record.ReadValue(i); res.SeekValue(i); m_dda.AdaptValue(record, m_dstColTypes[i], res, m_outputConv, logger); } return(res); }
public static DataScript AlterFixedData(InMemoryTable oldData, InMemoryTable newData, InMemoryTableOperation ops, DbDiffOptions opts) { if (newData == null) { return(null); } IPrimaryKey newpk = newData.Structure.FindConstraint <IPrimaryKey>(); if (newpk == null) { return(null); } string[] newcolnames = newData.Structure.Columns.GetNames(); DataScript script = new DataScript(); if (oldData == null) { foreach (var row in newData.Rows) { script.Insert(newcolnames, row.GetValues()); } } else { if (ops != null) { oldData = new InMemoryTable(oldData, ops); } IPrimaryKey oldpk = oldData.Structure.FindConstraint <IPrimaryKey>(); if (oldpk == null) { return(null); } string[] newpkcols = newpk.Columns.GetNames(); string[] oldpkcols = oldpk.Columns.GetNames(); string[] newnopkcols = newData.Structure.GetNoPkColumns().GetNames(); string[] oldnopkcols = oldData.Structure.GetNoPkColumns().GetNames(); foreach (var row in newData.Rows) { object[] newpkvals = row.GetValuesByCols(newpkcols); ArrayDataRecord oldrow = oldData.FindRow(oldpkcols, newpkvals); if (oldrow != null) { object[] oldnopkvals = oldrow.GetValuesByCols(oldnopkcols); object[] newnopkvals = row.GetValuesByCols(newnopkcols); if (BedTool.EqualRecords(oldnopkvals, newnopkvals)) { continue; } // UPDATE List <string> changedcols = new List <string>(); List <object> changedvals = new List <object>(); for (int i = 0; i < oldnopkcols.Length; i++) { if (!BedTool.EqualValues(oldnopkvals[i], newnopkvals[i])) { changedcols.Add(newnopkcols[i]); changedvals.Add(newnopkvals[i]); } } script.Update(newpkcols.ToArray(), newpkvals.ToArray(), changedcols.ToArray(), changedvals.ToArray()); } else { script.Insert(newcolnames, row.GetValues()); } } } if (script.IsEmpty()) { return(null); } return(script); }
internal void AddRowInternal(ArrayDataRecord rec) { Rows.AddInternal(new BedRow(this, rec, BedRowState.Unchanged, m_structure)); }