예제 #1
0
        public void SetBindings(ITabularDataStore source, ITabularDataStore target)
        {
            Async.SafeOpen(source.Connection);
            Async.SafeOpen(target.Connection);
            //lbsource.Enabled = false;
            //lbtarget.Enabled = false;
            lbsource.Items.Clear();
            lbtarget.Rows.Clear();
            //lbtarget.Items.Clear();
            Errors.Assert(source.AvailableRowFormat);
            //Async.CreateInvokeCallback(m_invoker, GotRowFormat));
            m_source = source;
            m_target = target;
            //lbsource.Enabled = true;
            //lbtarget.Enabled = true;

            try
            {
                IAsyncResult async = m_source.BeginGetRowFormat(null);
                Async.WaitFor(async);
                m_srcformat = m_source.EndGetRowFormat(async);
            }
            catch (Exception err)
            {
                throw new BulkCopyInputError("DAE-00184", err);
            }

            foreach (IColumnStructure col in m_srcformat.Columns)
            {
                lbsource.Items.Add(col.ColumnName);
                lbtarget.Rows.Add(col.ColumnName, new GenericTransform.ColumnColExprType().ToString(), col.ColumnName);
                //lbtarget.Items.Add(col.ColumnName);
            }
        }
예제 #2
0
        public BedTable LoadTableData(TablePageProperties props)
        {
            lock (m_directory)
            {
                BedTable table = new BedTable(m_table);

                int start = 0;
                int count = m_serializedRows;
                if (props.Count != null)
                {
                    count = props.Count.Value;
                }
                if (props.Start != null)
                {
                    start = props.Start.Value;
                }

                if (start >= m_serializedRows)
                {
                    return(table);
                }
                int curdic = start / BUFFER_SIZE, skiprec = start % BUFFER_SIZE;
                Errors.Assert(curdic < m_directory.Count);
                m_cache.Seek(m_directory[curdic], SeekOrigin.Begin);

                int          availtables = m_directory.Count - curdic;
                BinaryReader br          = new BinaryReader(m_cache);
                while (table.Rows.Count < count && availtables >= 1)
                {
                    ChunkInfo info = ChunkInfo.LoadInfo(br);
                    if (skiprec > 0)
                    {
                        int skipbytes = 0;
                        for (int i = 0; i < skiprec; i++)
                        {
                            skipbytes += info.Lengths[i];
                        }
                        m_cache.Seek(skipbytes, SeekOrigin.Current);
                    }
                    int rec = skiprec;

                    while (rec < info.Count)
                    {
                        table.AddRowInternal(BedTool.LoadRecord(br, m_table));
                        rec++;
                    }
                    availtables--;
                    skiprec = 0;
                }
                return(table);
            }
        }
예제 #3
0
 public void CloseContent()
 {
     Errors.Assert(m_dockWrapper != null);
     MainWindow.Instance.CloseContent(this);
 }