public GroupedTable(Database.Table table, ArrayRange range, int colToGroupFirst, int colToGroupLast, int[] colGroupOrder, SortOrder[] sortOrder)
            : base(table.Schema)
        {
            m_table = table;
            if (m_table is ExpandTable)
            {
                m_expandTable = (ExpandTable)m_table;
            }
            m_Meta = m_table.GetMetaData();
            m_GroupedColumnFirst = colToGroupFirst;
            m_GroupedColumnLast  = colToGroupLast;
            m_ColumnOrder        = colGroupOrder;
            m_SortOrder          = sortOrder;

            int sourceGroupedColumnIndex = m_ColumnOrder[colToGroupFirst];

            var col     = m_table.GetColumnByIndex(sourceGroupedColumnIndex);
            var metaCol = m_Meta.GetColumnByIndex(sourceGroupedColumnIndex);

            if (metaCol.DefaultGroupAlgorithm != null)
            {
                m_GroupCollection = metaCol.DefaultGroupAlgorithm.Group(col, range, m_SortOrder[colToGroupFirst]);
            }
            else
            {
                throw new Exception("Trying to group a column without grouping algorithm. Column '" + metaCol.Name + "' from table '" + m_table.GetName() + "'");
            }
            InitializeFromGroupCollection(col, sourceGroupedColumnIndex);
        }
Esempio n. 2
0
 void OpenTable(Database.TableReference tableRef, Database.Table table, Database.CellPosition pos, bool focus)
 {
     m_Spreadsheet              = new UI.DatabaseSpreadsheet(m_UIState.FormattingOptions, table, this);
     m_Spreadsheet.onClickLink += OnSpreadsheetClick;
     m_Spreadsheet.Goto(pos);
     m_EventListener.OnRepaint();
 }
        // colToGroup is an index from aNewColumnOrder.
        public GroupedTable(Database.Table table, ArrayRange range, int colToGroup, SortOrder sortOrder, FnCreateGroupTable subTable)
            : base(table.Schema)
        {
            m_table = table;
            if (m_table is ExpandTable)
            {
                m_expandTable = (ExpandTable)m_table;
            }
            m_Meta = m_table.GetMetaData();
            m_GroupedColumnFirst = 0;
            m_GroupedColumnLast  = 0;
            m_ColumnOrder        = new int[] { colToGroup };// colGroupOrder;
            m_SortOrder          = new SortOrder[1] {
                sortOrder
            };
            m_createGroupTable = subTable;

            var col     = m_table.GetColumnByIndex(colToGroup);
            var metaCol = m_Meta.GetColumnByIndex(colToGroup);

            if (metaCol.DefaultGroupAlgorithm != null)
            {
                m_GroupCollection = metaCol.DefaultGroupAlgorithm.Group(col, range, sortOrder);
            }
            else
            {
                throw new Exception("Trying to group a column without grouping algorithm. Column '" + metaCol.Name + "' from table '" + m_table.GetName() + "'");
            }
            InitializeFromGroupCollection(col, colToGroup);
        }
Esempio n. 4
0
        Database.Table FilterTable(Database.Table table, long row, List <Database.View.Where.Builder> tableFilterWhere)
        {
            var tableFilterWhereUnion = new Database.View.WhereUnion(tableFilterWhere, null, null, null, null, m_UIState.snapshotMode.SchemaToDisplay, table, null);
            var indices = tableFilterWhereUnion.GetMatchingIndices(row);

            return(new Database.Operation.IndexedTable(table, new ArrayRange(indices)));
        }
Esempio n. 5
0
        void OpenLinkRequest(Database.LinkRequestTable link, bool focus)
        {
            //TODO this code is the same as the one inSpreadsheetPane, should be put together
            UIElementsHelper.SetVisibility(VisualElements[2], m_ActiveMode.snapshot.nativeAllocationSites.Count > 0 && m_CurrentTableView == TableDisplayMode.Allocations);

            var tableRef = new Database.TableReference(link.LinkToOpen.TableName, link.Parameters);
            var table    = m_ActiveMode.SchemaToDisplay.GetTableByReference(tableRef);

            if (table == null)
            {
                UnityEngine.Debug.LogError("No table named '" + link.LinkToOpen.TableName + "' found.");
                return;
            }
            if (link.LinkToOpen.RowWhere != null && link.LinkToOpen.RowWhere.Count > 0)
            {
                Database.Table filteredTable = table;
                if (table.GetMetaData().defaultFilter != null)
                {
                    filteredTable = table.GetMetaData().defaultFilter.CreateFilter(table);
                }
                Database.Operation.ExpressionParsingContext expressionParsingContext = null;
                if (link.SourceView != null)
                {
                    expressionParsingContext = link.SourceView.ExpressionParsingContext;
                }
                var whereUnion = new Database.View.WhereUnion(link.LinkToOpen.RowWhere, null, null, null, null, m_ActiveMode.SchemaToDisplay, filteredTable, expressionParsingContext);
                var indices    = whereUnion.GetMatchingIndices(link.SourceRow);
                var newTab     = new Database.Operation.IndexedTable(table, new ArrayRange(indices));
                OpenTable(tableRef, newTab, focus);
            }
            else
            {
                OpenTable(tableRef, table, new Database.CellPosition(0, 0), focus);
            }
        }
Esempio n. 6
0
 public bool OpenLinkRequest(Database.LinkRequestTable link, Database.TableReference tableLink, Database.Table table)
 {
     using (ScopeDebugContext.String("OpenLinkRequest"))
     {
         if (link.LinkToOpen.RowWhere != null && link.LinkToOpen.RowWhere.Count > 0)
         {
             Database.Table filteredTable = table;
             if (table.GetMetaData().defaultFilter != null)
             {
                 filteredTable = table.GetMetaData().defaultFilter.CreateFilter(table);
             }
             var  whereUnion  = new Database.View.WhereUnion(link.LinkToOpen.RowWhere, null, null, null, null, m_UIState.CurrentMode.GetSchema(), filteredTable, link.SourceView == null ? null : link.SourceView.ExpressionParsingContext);
             long rowToSelect = whereUnion.GetIndexFirstMatch(link.SourceRow);
             if (rowToSelect < 0)
             {
                 DebugUtility.LogWarning("Could not find entry in target table '" + link.LinkToOpen.TableName + "'");
                 return(false);
             }
             DebugUtility.DebugLog("Opening table '" + link.LinkToOpen.TableName + "' at row " + rowToSelect);
             OpenTable(tableLink, table, new Database.CellPosition(rowToSelect, 0));
         }
         else
         {
             OpenTable(tableLink, table, new Database.CellPosition(0, 0));
         }
         return(true);
     }
 }
Esempio n. 7
0
        public override bool OnGui(Database.Table sourceTable, ref bool dirty)
        {
            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.BeginVertical();
            int iLevelToRemove = -1;

            for (int i = 0; i != SortLevel.Count; ++i)
            {
                string sortName = GetSortName(SortLevel[i].Order);
                string colName  = SortLevel[i].GetColumnName(sourceTable);

                EditorGUILayout.BeginHorizontal();
                if (OnGui_RemoveButton())
                {
                    iLevelToRemove = i;
                }
                GUILayout.Label("Sort" + sortName + " '" + colName + "'");
                EditorGUILayout.EndHorizontal();
            }
            if (iLevelToRemove >= 0)
            {
                dirty = true;
                SortLevel.RemoveAt(iLevelToRemove);
            }

            EditorGUILayout.EndVertical();
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndHorizontal();

            //remove this filter if it's empty
            return(SortLevel.Count == 0);
        }
Esempio n. 8
0
 public override void UpdateColumnState(Database.Table sourceTable, ColumnState[] colState)
 {
     foreach (var l in SortLevel)
     {
         colState[l.GetColumnIndex(sourceTable)].Sorted = l.Order;
     }
 }
Esempio n. 9
0
            public override ViewPane GetDefaultView(UIState uiState, IViewPaneEventListener viewPaneEventListener)
            {
                //TODO: delete this method once the default for diff is treemap
                Database.Table table = null;
                for (int i = 1; i < uiState.CurrentMode.TableNames.Length; i++)
                {
                    if (uiState.CurrentMode.TableNames[i].Contains(k_DefaultDiffViewTable))
                    {
                        table = uiState.CurrentMode.GetTableByIndex(i - 1);
                    }
                }
                if (table == null)
                {
                    table = uiState.CurrentMode.GetTableByIndex(Mathf.Min(0, m_TableNames.Length - 1));
                }

                if (table.Update())
                {
                    UpdateTableSelectionNames();
                }

                var pane = new UI.SpreadsheetPane(uiState, viewPaneEventListener);

                pane.OpenTable(new Database.TableReference(table.GetName()), table);
                return(pane);
            }
Esempio n. 10
0
 public IndexedTable(Database.Table sourceTable)
     : base(sourceTable.Schema)
 {
     m_SourceTable = sourceTable;
     m_Meta        = m_SourceTable.GetMetaData();
     CreateColumn();
 }
Esempio n. 11
0
 public override void UpdateColumnState(Database.Table sourceTable, ColumnState[] colState)
 {
     foreach (var f in filters)
     {
         f.UpdateColumnState(sourceTable, colState);
     }
 }
Esempio n. 12
0
        public void Test1()
        {
            string        url       = "server=localhost;database=devtest;uid=dev;pwd=devtest12345";
            DatabaseMySql sqlserver = new DatabaseMySql(url);

            Database.Table table = sqlserver.OpenTable("test_1");
            sqlserver.Flush(null,
                            () =>
            {
                {
                    ByteBuffer key = ByteBuffer.Allocate();
                    key.WriteInt(1);
                    table.Remove(key);
                }
                {
                    ByteBuffer key = ByteBuffer.Allocate();
                    key.WriteInt(2);
                    table.Remove(key);
                }
            }
                            );
            Assert.AreEqual(0, table.Walk(PrintRecord));
            sqlserver.Flush(null,
                            () =>
            {
                {
                    ByteBuffer key = ByteBuffer.Allocate();
                    key.WriteInt(1);
                    ByteBuffer value = ByteBuffer.Allocate();
                    value.WriteInt(1);
                    table.Replace(key, value);
                }
                {
                    ByteBuffer key = ByteBuffer.Allocate();
                    key.WriteInt(2);
                    ByteBuffer value = ByteBuffer.Allocate();
                    value.WriteInt(2);
                    table.Replace(key, value);
                }
            }
                            );
            {
                ByteBuffer key = ByteBuffer.Allocate();
                key.WriteInt(1);
                ByteBuffer value = table.Find(key);
                Assert.IsNotNull(value);
                Assert.AreEqual(1, value.ReadInt());
                Assert.IsTrue(value.ReadIndex == value.WriteIndex);
            }
            {
                ByteBuffer key = ByteBuffer.Allocate();
                key.WriteInt(2);
                ByteBuffer value = table.Find(key);
                Assert.IsNotNull(value);
                Assert.AreEqual(2, value.ReadInt());
                Assert.IsTrue(value.ReadIndex == value.WriteIndex);
            }
            Assert.AreEqual(2, table.Walk(PrintRecord));
        }
Esempio n. 13
0
        public void Test1()
        {
            string            url       = "Server=(localdb)\\MSSQLLocalDB;Integrated Security=true";
            DatabaseSqlServer sqlserver = new DatabaseSqlServer(url);

            Database.Table table = sqlserver.OpenTable("test1");
            sqlserver.Flush(null,
                            () =>
            {
                {
                    ByteBuffer key = ByteBuffer.Allocate();
                    key.WriteInt(1);
                    table.Remove(key);
                }
                {
                    ByteBuffer key = ByteBuffer.Allocate();
                    key.WriteInt(2);
                    table.Remove(key);
                }
            }
                            );
            Assert.AreEqual(0, table.Walk(PrintRecord));
            sqlserver.Flush(null,
                            () =>
            {
                {
                    ByteBuffer key = ByteBuffer.Allocate();
                    key.WriteInt(1);
                    ByteBuffer value = ByteBuffer.Allocate();
                    value.WriteInt(1);
                    table.Replace(key, value);
                }
                {
                    ByteBuffer key = ByteBuffer.Allocate();
                    key.WriteInt(2);
                    ByteBuffer value = ByteBuffer.Allocate();
                    value.WriteInt(2);
                    table.Replace(key, value);
                }
            }
                            );
            {
                ByteBuffer key = ByteBuffer.Allocate();
                key.WriteInt(1);
                ByteBuffer value = table.Find(key);
                Assert.IsNotNull(value);
                Assert.AreEqual(1, value.ReadInt());
                Assert.IsTrue(value.ReadIndex == value.WriteIndex);
            }
            {
                ByteBuffer key = ByteBuffer.Allocate();
                key.WriteInt(2);
                ByteBuffer value = table.Find(key);
                Assert.IsNotNull(value);
                Assert.AreEqual(2, value.ReadInt());
                Assert.IsTrue(value.ReadIndex == value.WriteIndex);
            }
            Assert.AreEqual(2, table.Walk(PrintRecord));
        }
Esempio n. 14
0
 public MatchTable(Database.Table sourceTable, int columnIndex, string matchString, ArrayRange range)
     : base(sourceTable)
 {
     m_columnIndex = columnIndex;
     m_matchString = matchString;
     m_Range       = range;
     UpdateIndices();
 }
Esempio n. 15
0
 public IndexedTable(Database.Table sourceTable, ArrayRange indices)
     : base(sourceTable.Schema)
 {
     this.indices  = indices.ToArray();
     m_SourceTable = sourceTable;
     m_Meta        = m_SourceTable.GetMetaData();
     CreateColumn();
 }
Esempio n. 16
0
 public override Database.Table CreateFilter(Database.Table tableIn)
 {
     Database.Table t = tableIn;
     foreach (var f in filters)
     {
         t = f.CreateFilter(t);
     }
     return(t);
 }
Esempio n. 17
0
 public void OpenTable(Database.TableReference tableRef, Database.Table table)
 {
     CloseCurrentTable();
     m_CurrentTableLink         = tableRef;
     CurrentTableIndex          = m_UIState.CurrentMode.GetTableIndex(table);
     m_Spreadsheet              = new UI.DatabaseSpreadsheet(m_UIState.FormattingOptions, table, this);
     m_Spreadsheet.onClickLink += OnSpreadsheetClick;
     m_EventListener.OnRepaint();
 }
        public void UpdateDisplayTable(List <Database.CellPosition> expandedCells = null)
        {
            UpdateColumnState();
            m_TableDisplay = m_Filters.CreateFilter(m_TableSource);

            UpdateExpandedState(expandedCells);
            UpdateDataState();
            ResetGUIState();
        }
Esempio n. 19
0
 public void OpenTable(Database.TableReference tableRef, Database.Table table, Database.CellPosition pos)
 {
     CloseCurrentTable();
     m_CurrentTableLink         = tableRef;
     CurrentTableIndex          = m_UIState.CurrentMode.GetTableIndex(table);
     m_Spreadsheet              = new UI.DatabaseSpreadsheet(m_UIState.DataRenderer, table, this);
     m_Spreadsheet.onClickLink += OnSpreadsheetClick;
     m_Spreadsheet.Goto(pos);
     m_EventListener.OnRepaint();
 }
        public DatabaseSpreadsheet(FormattingOptions formattingOptions, Database.Table table, IViewEventListener listener, State state)
            : base(listener)
        {
            m_TableSource       = table;
            m_TableDisplay      = table;
            m_FormattingOptions = formattingOptions;

            InitSplitter();
            CurrentState = state;
        }
        public DatabaseSpreadsheet(FormattingOptions formattingOptions, Database.Table table, IViewEventListener listener)
            : base(listener)
        {
            m_TableSource       = table;
            m_TableDisplay      = table;
            m_FormattingOptions = formattingOptions;

            InitSplitter();
            InitDefaultTableFilter();
        }
Esempio n. 22
0
        public override Database.Table CreateFilter(Database.Table tableIn, ArrayRange range)
        {
            if (String.IsNullOrEmpty(m_MatchString))
            {
                return(tableIn);
            }
            var tableOut = new MatchTable(tableIn, m_ColumnIndex, m_MatchString, range);

            return(tableOut);
        }
        public DatabaseSpreadsheet(DataRenderer dataRenderer, Database.Table table, IViewEventListener listener)
            : base(listener)
        {
            m_TableSource  = table;
            m_TableDisplay = table;
            m_DataRenderer = dataRenderer;

            InitSplitter();
            InitDefaultTableFilter();
        }
        public DatabaseSpreadsheet(DataRenderer dataRenderer, Database.Table table, IViewEventListener listener, State state)
            : base(listener)
        {
            m_TableSource  = table;
            m_TableDisplay = table;
            m_DataRenderer = dataRenderer;

            InitSplitter();
            CurrentState = state;
        }
Esempio n. 25
0
 public void OpenTable(Database.TableReference tableRef, Database.Table table)
 {
     Profiling.StartProfiling("Profile_OpenTable_" + table.GetName());
     CloseCurrentTable();
     m_CurrentTableLink         = tableRef;
     CurrentTableIndex          = m_UIState.CurrentMode.GetTableIndex(table);
     m_Spreadsheet              = new UI.DatabaseSpreadsheet(m_UIState.DataRenderer, table, this);
     m_Spreadsheet.onClickLink += OnSpreadsheetClick;
     m_EventListener.OnRepaint();
 }
Esempio n. 26
0
 // Get a patch tuple
 private object[] GetPatch(int x, int z)
 {
     Database.Table t = _db.Tables["Patch"];
     foreach (object[] tuple in t.Entries)
     {
         if ((int)tuple[2] == x && (int)tuple[3] == z)
         {
             return(tuple);
         }
     }
     return(null);
 }
Esempio n. 27
0
 public override Database.Table CreateFilter(Database.Table tableIn)
 {
     if (SortOverride != null)
     {
         return(SortOverride.CreateFilter(tableIn));
     }
     if (SortDefault != null)
     {
         return(SortDefault.CreateFilter(tableIn));
     }
     return(tableIn);
 }
Esempio n. 28
0
 public override Database.Table CreateFilter(Database.Table tableIn, ArrayRange range)
 {
     if (SortOverride != null)
     {
         return(SortOverride.CreateFilter(tableIn, range));
     }
     if (SortDefault != null)
     {
         return(SortDefault.CreateFilter(tableIn, range));
     }
     return(new Database.Operation.IndexedTable(tableIn, range));
 }
Esempio n. 29
0
 public override void UpdateColumnState(Database.Table sourceTable, ColumnState[] colState)
 {
     if (SortOverride != null)
     {
         SortOverride.UpdateColumnState(sourceTable, colState);
     }
     else if (SortDefault != null)
     {
         foreach (var l in SortDefault.SortLevel)
         {
             colState[l.GetColumnIndex(sourceTable)].DefaultSorted = l.Order;
         }
     }
 }
Esempio n. 30
0
        public int m_ColumnIndexFirst; //index into m_SortColumn
        public SortedTable(Database.Table table, int[] sortColumn, SortOrder[] sortOrder, int columnIndexFirst, ArrayRange indices)
            : base(table.Schema)
        {
            m_SourceTable      = table;
            m_Meta             = m_SourceTable.GetMetaData();
            m_SortColumn       = sortColumn;
            m_SortOrder        = sortOrder;
            m_ColumnIndexFirst = columnIndexFirst;

            this.indices = SortRange(indices, sortColumn, sortOrder, m_ColumnIndexFirst);

            //create columns
            CreateColumn();
        }