КолонкаТаблицыЗначений (ValueTableColumn)
Inheritance: BaseSessionObject
Ejemplo n.º 1
0
 internal object this[ValueTableColumn column]
 {
     set
     {
         PutToCache(column.Name, value);
         PutToCache(column.Index.ToString(), value);
     }
 }
Ejemplo n.º 2
0
 internal object this[ValueTableColumn column]
 {
     set
     {
         PutToCache(column.Name, value);
         PutToCache(column.Index.ToString(), value);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// ВыгрузитьКолонку (UnloadColumn)
        /// </summary>
        /// <param name="column"></param>
        /// <returns></returns>
        public ArrayV8 UnloadColumn(ValueTableColumn column)
        {
            var ptr = InvokeV8Method("UnloadColumn", column.Ptr);

            if (ptr == null)
            {
                return(null);
            }

            return(new ArrayV8(Session, ptr, column.ValueType));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// ВыгрузитьКолонку (UnloadColumn)
        /// </summary>
        /// <param name="column"></param>
        /// <returns></returns>
        public ArrayV8 UnloadColumn(ValueTableColumn column)
        {
            var ptr = InvokeV8Method("UnloadColumn", column.Ptr);

            if (ptr == null)
            {
                return null;
            }

            return new ArrayV8(Session, ptr, column.ValueType);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Load cache
        /// </summary>
        /// <returns>Return cached columns</returns>
        public ValueTableColumn[] LoadCache()
        {
            Dictionary <ValueTableColumn, ArrayV8> columnValuesByIndex = new Dictionary <ValueTableColumn, ArrayV8>();

            for (int i = 0; i < Columns.Count; i++)
            {
                var col = Columns[i];

                try
                {
                    var valueTypes = col.ValueType.Types;
                    if (valueTypes.Length != 1 || valueTypes[0].Type == TypeEnum.Unknown)
                    {
                        continue;
                    }
                }
                catch
                {
                    continue;
                }


                ArrayV8 columnValuesArr = UnloadColumn(col);
                columnValuesArr.LoadCache();
                columnValuesByIndex[col] = columnValuesArr;
            }

            if (columnValuesByIndex.Count == 0)
            {
                return(new ValueTableColumn[0]);
            }

            int rowsCount = this.Count;

            for (int i = 0; i < rowsCount; i++)
            {
                ValueTableRow row = (ValueTableRow)GetIndexerFromCache(
                    i.ToString(),
                    () => new ValueTableRow(this, i)
                    );

                foreach (KeyValuePair <ValueTableColumn, ArrayV8> pair in columnValuesByIndex)
                {
                    row[pair.Key] = pair.Value[i];
                }
            }

            ValueTableColumn[] cachedColumns = new ValueTableColumn[columnValuesByIndex.Count];
            columnValuesByIndex.Keys.CopyTo(cachedColumns, 0);
            Array.Sort(cachedColumns, (a, b) => System.Collections.Comparer.DefaultInvariant.Compare(a.Index, b.Index));

            return(cachedColumns);
        }
 /// <summary>
 /// Получить колонку
 /// </summary>
 /// <param name="columnName"></param>
 /// <returns></returns>
 public ValueTableColumn this[string columnName]
 {
     get
     {
         return((ValueTableColumn)GetIndexerFromCache(columnName,
                                                      delegate()
         {
             object ptr = InvokeV8Method("Find", columnName);
             if (ptr != null)
             {
                 var column = new ValueTableColumn(this, ptr);
                 PutToCache(column.Index.ToString(), column);
                 return column;
             }
             return null;
         }
                                                      ));
     }
 }
 /// <summary>
 /// Получить колонку
 /// </summary>
 /// <param name="index"></param>
 /// <returns></returns>
 public ValueTableColumn this[int index]
 {
     get
     {
         return((ValueTableColumn)GetFromCache(index.ToString(),
                                               delegate()
         {
             object ptr = InvokeV8Method("Get", index);
             if (ptr != null)
             {
                 var column = new ValueTableColumn(this, ptr);
                 PutToIndexerCache(column.Name, column);
                 return column;
             }
             return null;
         }
                                               ));
     }
 }
 /// <summary>
 /// Получить колонку
 /// </summary>
 /// <param name="columnName"></param>
 /// <returns></returns>
 public ValueTableColumn this[string columnName]
 {
     get
     {
         return (ValueTableColumn)GetIndexerFromCache(columnName,
                              delegate()
                                  {
                                      object ptr = InvokeV8Method("Find", columnName);
                                      if (ptr != null)
                                      {
                                          var column = new ValueTableColumn(this, ptr);
                                          PutToCache(column.Index.ToString(), column);
                                          return column;
                                      }
                                      return null;
                                  }
             );
     }
 }
 /// <summary>
 /// Получить колонку
 /// </summary>
 /// <param name="index"></param>
 /// <returns></returns>
 public ValueTableColumn this[int index]
 {
     get
     {
         return (ValueTableColumn)GetFromCache(index.ToString(),
                              delegate()
                              {
                                  object ptr = InvokeV8Method("Get", index);
                                  if (ptr != null)
                                  {
                                      var column = new ValueTableColumn(this, ptr);
                                      PutToIndexerCache(column.Name, column);
                                      return column;
                                  }
                                  return null;
                              }
             );
     }
 }
 /// <summary>
 /// Индекс (IndexOf)
 /// </summary>
 /// <returns></returns>
 public int IndexOf(ValueTableColumn column)
 {
     return((int)InvokeV8Method("IndexOf", column.Ptr));
 }
 /// <summary>
 /// Индекс (IndexOf)
 /// </summary>
 /// <returns></returns>
 public int IndexOf(ValueTableColumn column)
 {
     return (int)InvokeV8Method("IndexOf", column.Ptr);
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Convert to DataTable
        /// </summary>
        /// <param name="fillRows"></param>
        /// <param name="columns"></param>
        /// <returns></returns>
        public DataTable ToDataTable(bool fillRows, ValueTableColumn[] columns)
        {
            DataTable dataTable = new DataTable();
            
            for (int i = 0; i < columns.Length; i++)
            {
                var column = columns[i];

                var tableColumn = column.ToDataColumn();

                dataTable.Columns.Add(tableColumn);
            }

            if (fillRows)
            {
                int rowsCount = this.Count;
                for (int i = 0; i < rowsCount; i++)
                {
                    var v8Row = this[i];

                    DataRow dataRow = dataTable.NewRow();
                    for (int c = 0; c < columns.Length; c++ )
                    {
                        var column = columns[c];
                        dataRow[c] = v8Row[column.Index];
                    }
                    dataTable.Rows.Add(dataRow);
                }
            }

            return dataTable;
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Load cache
        /// </summary>
        /// <returns>Return cached columns</returns>
        public ValueTableColumn[] LoadCache()
        {
            Dictionary<ValueTableColumn, ArrayV8> columnValuesByIndex = new Dictionary<ValueTableColumn, ArrayV8>();
            
            for (int i = 0; i < Columns.Count; i++)
            {
                var col = Columns[i];

                try
                {
                    var valueTypes = col.ValueType.Types;
                    if (valueTypes.Length != 1 || valueTypes[0].Type == TypeEnum.Unknown)
                    {
                        continue;
                    }
                }
                catch
                {
                    continue;
                }

                
                ArrayV8 columnValuesArr = UnloadColumn(col);
                columnValuesArr.LoadCache();
                columnValuesByIndex[col] = columnValuesArr;
            }

            if (columnValuesByIndex.Count == 0)
            {
                return new ValueTableColumn[0];
            }

            int rowsCount = this.Count;
            for (int i = 0; i < rowsCount; i++)
            {
                ValueTableRow row = (ValueTableRow)GetIndexerFromCache(
                    i.ToString(),
                    () => new ValueTableRow(this, i)
                    );

                foreach (KeyValuePair<ValueTableColumn, ArrayV8> pair in columnValuesByIndex)
                {
                    row[pair.Key] = pair.Value[i];
                }
            }

            ValueTableColumn[] cachedColumns = new ValueTableColumn[columnValuesByIndex.Count];
            columnValuesByIndex.Keys.CopyTo(cachedColumns, 0);
            Array.Sort(cachedColumns, (a, b) => System.Collections.Comparer.DefaultInvariant.Compare(a.Index, b.Index));
            
            return cachedColumns;
        }