//----------------------------------------------------------------------------------------------------------------------------------
        // Formatting
        //----------------------------------------------------------------------------------------------------------------------------------
        public questStatus FormatBootstrapTreeviewNode(FilterTable filterTable, out BootstrapTreenodeViewModel bootstrapTreenodeViewModel)
        {
            // Initialize
            questStatus status = null;

            bootstrapTreenodeViewModel            = new BootstrapTreenodeViewModel();
            bootstrapTreenodeViewModel.Id         = filterTable.TablesetTable.Id;
            bootstrapTreenodeViewModel.type       = "table";
            bootstrapTreenodeViewModel.icon       = "fa fa-table padding-right-20";
            bootstrapTreenodeViewModel.text       = "[" + filterTable.TablesetTable.Schema + "].[" + filterTable.TablesetTable.Name + "]";
            bootstrapTreenodeViewModel.Schema     = filterTable.TablesetTable.Schema;
            bootstrapTreenodeViewModel.Name       = filterTable.TablesetTable.Name;
            bootstrapTreenodeViewModel.selectable = "true";

            List <BootstrapTreenodeViewModel> columnNodeList = new List <BootstrapTreenodeViewModel>();

            foreach (FilterColumn filterColumn in filterTable.FilterColumnList)
            {
                BootstrapTreenodeViewModel columnNode = null;
                status = FormatBootstrapTreeviewNode(filterTable, filterColumn, out columnNode);
                if (!questStatusDef.IsSuccess(status))
                {
                    return(status);
                }
                columnNodeList.Add(columnNode);
            }
            bootstrapTreenodeViewModel.nodes.AddRange(columnNodeList);
            return(new questStatus(Severity.Success));
        }
Exemple #2
0
        private questStatus create(MasterPricingEntities dbContext, List <Quest.Functional.MasterPricing.FilterTable> filterTableList, out List <Quest.Functional.MasterPricing.FilterTable> filterTableIdList)
        {
            // Initialize
            filterTableIdList = null;


            // Perform create
            try
            {
                List <Quest.Services.Dbio.MasterPricing.FilterTables> _filterTableList = new List <Quest.Services.Dbio.MasterPricing.FilterTables>();
                foreach (Quest.Functional.MasterPricing.FilterTable filterTable in filterTableList)
                {
                    Quest.Services.Dbio.MasterPricing.FilterTables _filterTable = new Quest.Services.Dbio.MasterPricing.FilterTables();
                    BufferMgr.TransferBuffer(filterTable, _filterTable);
                    _filterTableList.Add(_filterTable);
                }
                dbContext.FilterTables.AddRange(_filterTableList);
                dbContext.SaveChanges();

                filterTableIdList = new List <FilterTable>();
                foreach (Quest.Services.Dbio.MasterPricing.FilterTables _filterTable in _filterTableList)
                {
                    Quest.Functional.MasterPricing.FilterTable filterTable = new FilterTable();
                    filterTable.Id = _filterTable.Id;
                    filterTableIdList.Add(filterTable);
                }
            }
            catch (System.Exception ex)
            {
                return(new questStatus(Severity.Fatal, String.Format("EXCEPTION: {0}.{1}: {2}",
                                                                     this.GetType().Name, MethodBase.GetCurrentMethod().Name,
                                                                     ex.InnerException != null ? ex.InnerException.Message : ex.Message)));
            }
            return(new questStatus(Severity.Success));
        }
Exemple #3
0
        private questStatus getFilterColumn(BulkUpdateColumnValue bulkUpdateColumnValue, Filter filter, int numFROMEntities)
        {
            // Initialize
            string[]     pp           = null;
            string       entityName   = null;
            string       columnName   = null;
            FilterColumn filterColumn = null;


            if (filter.FilterTableList.Count == 1)
            {
                entityName = filter.FilterTableList[0].TablesetTable.Table.Name;
                columnName = bulkUpdateColumnValue.Name;
            }
            else
            {
                pp           = bulkUpdateColumnValue.Name.Split('_');
                entityName   = pp[0];
                columnName   = pp[1];
                filterColumn = null;
            }



            // Get FilterColumn of given bulk update column.
            FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t) { return(t.TablesetTable.Table.Name == entityName); });

            if (filterTable != null)
            {
                filterColumn = filter.FilterColumnList.Find(delegate(FilterColumn c) {
                    return(c.TablesetColumn.Column.Name == columnName && c.TablesetColumn.Column.EntityTypeId == EntityType.Table && c.TablesetColumn.Column.EntityId == filterTable.TablesetTable.Table.Id);
                });
                if (filterColumn == null)
                {
                    return(new questStatus(Severity.Error, String.Format("ERROR: filter column not found for bulk update column {0}",
                                                                         bulkUpdateColumnValue.Name)));
                }
            }
            else
            {
                FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(v.TablesetView.View.Name == entityName); });
                if (filterView == null)
                {
                    return(new questStatus(Severity.Error, String.Format("ERROR: filter view not found for bulk update column {0}",
                                                                         bulkUpdateColumnValue.Name)));
                }
                filterColumn = filter.FilterColumnList.Find(delegate(FilterColumn c) {
                    return(c.TablesetColumn.Column.Name == columnName && c.TablesetColumn.Column.EntityTypeId == EntityType.View && c.TablesetColumn.Column.EntityId == filterView.TablesetView.View.Id);
                });
                if (filterColumn == null)
                {
                    return(new questStatus(Severity.Error, String.Format("ERROR: filter column not found for bulk update column {0} (view search)",
                                                                         bulkUpdateColumnValue.Name)));
                }
            }
            bulkUpdateColumnValue.FilterColumn = filterColumn;

            return(new questStatus(Severity.Success));
        }
 public JoinEntity()
 {
     Type           = new FilterEntityType();
     FilterItem     = new FilterItem();
     FilterTable    = new FilterTable();
     FilterView     = new FilterView();
     TablesetColumn = new TablesetColumn();
     FilterColumn   = new FilterColumn();
     FilterItemJoin = new FilterItemJoin();
 }
Exemple #5
0
        public PageFilters(Model model)
        {
            this.model = model;
            InitializeComponent();

            this.tableIncludes = new XRefresh.FilterTable(false, true);
            this.tableExcludes = new XRefresh.FilterTable(false, true);
            ((System.ComponentModel.ISupportInitialize)(this.tableIncludes)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.tableExcludes)).BeginInit();
            //
            // tableIncludes
            //
            this.tableIncludes.AllowDrop = true;
            this.tableIncludes.AlternatingRowColor = System.Drawing.Color.WhiteSmoke;
            this.tableIncludes.CustomEditKey = System.Windows.Forms.Keys.Return;
            this.tableIncludes.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableIncludes.EnableHeaderContextMenu = false;
            this.tableIncludes.ForeColor = System.Drawing.Color.Black;
            this.tableIncludes.FullRowSelect = true;
            this.tableIncludes.GridLines = XPTable.Models.GridLines.Both;
            this.tableIncludes.GridLineStyle = XPTable.Models.GridLineStyle.Dot;
            this.tableIncludes.Location = new System.Drawing.Point(3, 243);
            this.tableIncludes.Name = "tableIncludes";
            this.tableIncludes.NoItemsText = "There are no file filters. Drag and drop a file here ...";
            this.tableIncludes.SelectionBackColor = System.Drawing.Color.Yellow;
            this.tableIncludes.SelectionForeColor = System.Drawing.Color.Black;
            this.tableIncludes.Size = new System.Drawing.Size(418, 194);
            this.tableIncludes.TabIndex = 0;
            this.tableIncludes.Text = "tableIncludes";
            //
            // tableExcludes
            //
            this.tableExcludes.AllowDrop = true;
            this.tableExcludes.AlternatingRowColor = System.Drawing.Color.WhiteSmoke;
            this.tableExcludes.CustomEditKey = System.Windows.Forms.Keys.Return;
            this.tableExcludes.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableExcludes.EnableHeaderContextMenu = false;
            this.tableExcludes.ForeColor = System.Drawing.Color.Black;
            this.tableExcludes.FullRowSelect = true;
            this.tableExcludes.GridLines = XPTable.Models.GridLines.Both;
            this.tableExcludes.GridLineStyle = XPTable.Models.GridLineStyle.Dot;
            this.tableExcludes.Location = new System.Drawing.Point(3, 23);
            this.tableExcludes.Name = "tableExcludes";
            this.tableExcludes.NoItemsText = "There are no file filters. Drag and drop a file here ...";
            this.tableExcludes.SelectionBackColor = System.Drawing.Color.Yellow;
            this.tableExcludes.SelectionForeColor = System.Drawing.Color.Black;
            this.tableExcludes.Size = new System.Drawing.Size(418, 194);
            this.tableExcludes.TabIndex = 5;
            this.tableExcludes.Text = "table2";
            ((System.ComponentModel.ISupportInitialize)(this.tableIncludes)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.tableExcludes)).EndInit();
            this.tableLayoutPanel.Controls.Add(this.tableExcludes, 0, 1);
            this.tableLayoutPanel.Controls.Add(this.tableIncludes, 0, 3);
        }
        private questStatus getJoinTargetColumnId(Filter filter, FilterItemJoin filterItemJoin)
        {
            if (filterItemJoin.TargetEntityTypeId == FilterEntityType.Table)
            {
                // Get the TablesetColumnId for the given join.
                FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t)
                {
                    return(filterItemJoin.TargetSchema == t.Schema && filterItemJoin.TargetEntityName == t.Name);
                });
                if (filterTable == null)
                {
                    return(new questStatus(String.Format("ERROR: seeking FilterItemJoin {0} TablesetColumnId not found (FilterTable) [{1}].[{2}]",
                                                         filterItemJoin.Id, filterItemJoin.TargetSchema, filterItemJoin.TargetEntityName)));
                }

                // Now get the TablesetColumnId for the given column name
                FilterColumn filterColumn = filterTable.FilterColumnList.Find(delegate(FilterColumn fc)
                {
                    return(filterItemJoin.TargetColumnName == fc.TablesetColumn.Name);
                });
                if (filterColumn == null)
                {
                    return(new questStatus(String.Format("ERROR: seeking FilterItemJoin {0} FilterColumn not found (FilterTable) [{1}].[{2}]",
                                                         filterItemJoin.Id, filterItemJoin.TargetSchema, filterItemJoin.TargetEntityName)));
                }
                filterItemJoin.ColumnId = filterColumn.TablesetColumn.Id;
            }
            else if (filterItemJoin.TargetEntityTypeId == FilterEntityType.View)
            {
                // Get the TablesetColumnId for the given join.
                FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v)
                {
                    return(filterItemJoin.TargetSchema == v.Schema && filterItemJoin.TargetEntityName == v.Name);
                });
                if (filterView == null)
                {
                    return(new questStatus(String.Format("ERROR: seeking FilterItemJoin {0} TablesetColumnId not found (FilterView) [{1}].[{2}]",
                                                         filterItemJoin.Id, filterItemJoin.TargetSchema, filterItemJoin.TargetEntityName)));
                }

                // Now get the TablesetColumnId for the given column name
                FilterColumn filterColumn = filterView.FilterColumnList.Find(delegate(FilterColumn fc)
                {
                    return(filterItemJoin.TargetColumnName == fc.TablesetColumn.Name);
                });
                if (filterColumn == null)
                {
                    return(new questStatus(String.Format("ERROR: seeking FilterItemJoin {0} FilterColumn not found (FilterView) [{1}].[{2}]",
                                                         filterItemJoin.Id, filterItemJoin.TargetSchema, filterItemJoin.TargetEntityName)));
                }
                filterItemJoin.ColumnId = filterColumn.TablesetColumn.Id;
            }
            return(new questStatus(Severity.Success));
        }
Exemple #7
0
        public PageFilters(Model model)
        {
            this.model = model;
            InitializeComponent();

            this.tableIncludes = new XRefresh.FilterTable(false, true);
            this.tableExcludes = new XRefresh.FilterTable(false, true);
            ((System.ComponentModel.ISupportInitialize)(this.tableIncludes)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.tableExcludes)).BeginInit();
            //
            // tableIncludes
            //
            this.tableIncludes.AllowDrop           = true;
            this.tableIncludes.AlternatingRowColor = System.Drawing.Color.WhiteSmoke;
            this.tableIncludes.CustomEditKey       = System.Windows.Forms.Keys.Return;
            this.tableIncludes.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableIncludes.EnableHeaderContextMenu = false;
            this.tableIncludes.ForeColor          = System.Drawing.Color.Black;
            this.tableIncludes.FullRowSelect      = true;
            this.tableIncludes.GridLines          = XPTable.Models.GridLines.Both;
            this.tableIncludes.GridLineStyle      = XPTable.Models.GridLineStyle.Dot;
            this.tableIncludes.Location           = new System.Drawing.Point(3, 243);
            this.tableIncludes.Name               = "tableIncludes";
            this.tableIncludes.NoItemsText        = "There are no file filters. Drag and drop a file here ...";
            this.tableIncludes.SelectionBackColor = System.Drawing.Color.Yellow;
            this.tableIncludes.SelectionForeColor = System.Drawing.Color.Black;
            this.tableIncludes.Size               = new System.Drawing.Size(418, 194);
            this.tableIncludes.TabIndex           = 0;
            this.tableIncludes.Text               = "tableIncludes";
            //
            // tableExcludes
            //
            this.tableExcludes.AllowDrop           = true;
            this.tableExcludes.AlternatingRowColor = System.Drawing.Color.WhiteSmoke;
            this.tableExcludes.CustomEditKey       = System.Windows.Forms.Keys.Return;
            this.tableExcludes.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableExcludes.EnableHeaderContextMenu = false;
            this.tableExcludes.ForeColor          = System.Drawing.Color.Black;
            this.tableExcludes.FullRowSelect      = true;
            this.tableExcludes.GridLines          = XPTable.Models.GridLines.Both;
            this.tableExcludes.GridLineStyle      = XPTable.Models.GridLineStyle.Dot;
            this.tableExcludes.Location           = new System.Drawing.Point(3, 23);
            this.tableExcludes.Name               = "tableExcludes";
            this.tableExcludes.NoItemsText        = "There are no file filters. Drag and drop a file here ...";
            this.tableExcludes.SelectionBackColor = System.Drawing.Color.Yellow;
            this.tableExcludes.SelectionForeColor = System.Drawing.Color.Black;
            this.tableExcludes.Size               = new System.Drawing.Size(418, 194);
            this.tableExcludes.TabIndex           = 5;
            this.tableExcludes.Text               = "table2";
            ((System.ComponentModel.ISupportInitialize)(this.tableIncludes)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.tableExcludes)).EndInit();
            this.tableLayoutPanel.Controls.Add(this.tableExcludes, 0, 1);
            this.tableLayoutPanel.Controls.Add(this.tableIncludes, 0, 3);
        }
        public questStatus Update(DbMgrTransaction trans, FilterTable filterTable)
        {
            // Initialize
            questStatus status = null;


            // Update filterTable
            status = _dbFilterTablesMgr.Update(trans, filterTable);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            return(new questStatus(Severity.Success));
        }
        //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        private void UpdateViewValues()
        {
            FilterTable.ReloadData();

            int index = DataManager.nodesFilters.FindIndex((NodeFilter obj) => obj.group == DataManager.selectedNodesFilter);

            if (index >= 0)
            {
                FilterTable.SelectRow(NSIndexPath.FromRowSection(index, 0), false, UITableViewScrollPosition.Middle);
            }

            ServerButton.SetTitle(DataManager.ServerName, UIControlState.Normal);
            UserButton.SetTitle(DataManager.UserName, UIControlState.Normal);
        }
        public questStatus GetResultsColumnIdentifier(Filter filter, FilterItem filterItem, int numItemEntities, out string columnIdentifier, out FilterColumn filterColumn)
        {
            // Initialize
            columnIdentifier = null;
            filterColumn     = null;


            FilterColumn _filterColumn = filterItem.FilterColumn;

            if (_filterColumn == null)
            {
                return(new questStatus(Severity.Error, String.Format("ERROR: filter item {0} filter column not found in filter (building lookups)", filterItem.FilterEntityId)));
            }
            filterColumn = _filterColumn;

            // If column labeled, that's it.
            if (!string.IsNullOrEmpty(filterItem.Label))
            {
                columnIdentifier = filterItem.Label;
                return(new questStatus(Severity.Success));
            }

            // Determine column identifier.
            // Single-entity filters, it's the column name alone.
            // More than one entity, it's the entity name  + "_" +  column name.
            if (numItemEntities == 1)
            {
                columnIdentifier = _filterColumn.TablesetColumn.Column.Name;
            }
            else
            {
                if (_filterColumn.FilterEntityTypeId == FilterEntityType.Table)
                {
                    FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t) { return(t.Id == _filterColumn.FilterEntityId); });
                    columnIdentifier = filterTable.TablesetTable.Table.Name + "_" + _filterColumn.TablesetColumn.Column.Name;
                }
                else if (_filterColumn.FilterEntityTypeId == FilterEntityType.View)
                {
                    FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(v.Id == _filterColumn.FilterEntityId); });
                    columnIdentifier = filterView.TablesetView.View.Name + "_" + _filterColumn.TablesetColumn.Column.Name;
                }
                else
                {
                    return(new questStatus(Severity.Error, String.Format("ERROR: invalid filter column {0} entity type id: {1} (determining column identifier)",
                                                                         _filterColumn.FilterEntityId, _filterColumn.FilterEntityTypeId)));
                }
            }
            return(new questStatus(Severity.Success));
        }
Exemple #11
0
 private void Dispose(bool disposing)
 {
     Cancel();
     if (m_DisposedValue)
     {
         return;
     }
     if (!disposing)
     {
         return;
     }
     m_DisposedValue = true;
     m_CurrentFilterCancellationTokenSource?.Dispose();
     FilterTable?.Dispose();
 }
        public questStatus Create(DbMgrTransaction trans, FilterTable filterTable, out FilterTableId filterTableId)
        {
            // Initialize
            questStatus status = null;

            filterTableId = null;


            // Create filterTable
            status = _dbFilterTablesMgr.Create(trans, filterTable, out filterTableId);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            return(new questStatus(Severity.Success));
        }
        public questStatus FormatBootstrapTreeviewNode(FilterTable filterTable, FilterColumn filterColumn, out BootstrapTreenodeViewModel bootstrapTreenodeViewModel)
        {
            // Initialize
            bootstrapTreenodeViewModel            = new BootstrapTreenodeViewModel();
            bootstrapTreenodeViewModel.Id         = filterColumn.TablesetColumn.Id;
            bootstrapTreenodeViewModel.ParentId   = filterColumn.TablesetColumn.TableSetEntityId;
            bootstrapTreenodeViewModel.type       = "column";
            bootstrapTreenodeViewModel.parentType = "table";
            bootstrapTreenodeViewModel.icon       = "fa fa-square-o padding-right-20 ";
            bootstrapTreenodeViewModel.text       = filterColumn.TablesetColumn.Name + " : " + GetColumnDataType(filterColumn.TablesetColumn.Column);
            bootstrapTreenodeViewModel.Schema     = null;
            bootstrapTreenodeViewModel.Name       = filterColumn.TablesetColumn.Name;
            bootstrapTreenodeViewModel.selectable = "true";

            return(new questStatus(Severity.Success));
        }
        public questStatus Read(DbMgrTransaction trans, FilterTableId filterTableId, out FilterTable filterTable)
        {
            // Initialize
            questStatus status = null;

            filterTable = null;


            // Read filterTable
            status = _dbFilterTablesMgr.Read(trans, filterTableId, out filterTable);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            return(new questStatus(Severity.Success));
        }
        void ReleaseDesignerOutlets()
        {
            if (FilterTable != null)
            {
                FilterTable.Dispose();
                FilterTable = null;
            }

            if (ServerButton != null)
            {
                ServerButton.Dispose();
                ServerButton = null;
            }

            if (UserButton != null)
            {
                UserButton.Dispose();
                UserButton = null;
            }
        }
Exemple #16
0
        public static async void AddFilterTableAsync(string[] genres, FilterTable filterTable)
        {
            string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "moviesdatabase.db");

            using (SqliteConnection db =
                       new SqliteConnection($"Filename={dbpath}"))
            {
                foreach (var genre in genres)
                {
                    db.Open();
                    SqliteCommand insertCommand = new SqliteCommand();
                    insertCommand.Connection  = db;
                    insertCommand.CommandText =
                        string.Format("INSERT OR REPLACE INTO {0} VALUES (@data);", filterTable.ToString());
                    insertCommand.Parameters.AddWithValue("@data", genre.Trim());
                    await Task.Run(() => insertCommand.ExecuteReader());

                    db.Close();
                }
            }
        }
Exemple #17
0
        public JsonResult Get_AllCandidatesFilter(FilterTable a)
        {
            using (easydbEntitiesModel Obj = new easydbEntitiesModel())
            {
                List <candidato> Cand;
                switch (a.codigo)
                {
                case 1:
                    Cand = Obj.candidatos.OrderByDescending(x => x.nome).ToList();
                    break;

                case 2:
                    Cand = Obj.candidatos.OrderByDescending(x => x.salario).ToList();
                    break;

                default:
                    Cand = Obj.candidatos.ToList();
                    break;
                }
                return(Json(Cand, JsonRequestBehavior.AllowGet));
            }
        }
Exemple #18
0
        public static List <string> GetFilterNames(FilterTable filter)
        {
            List <string> categories = new List <string>();

            string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "moviesdatabase.db");

            using (SqliteConnection db =
                       new SqliteConnection($"Filename={dbpath}"))
            {
                db.Open();
                SqliteCommand selectCommand = new SqliteCommand
                                                  (string.Format("SELECT * from {0}", filter.ToString()), db);
                SqliteDataReader query = selectCommand.ExecuteReader();
                string           movie;
                while (query.Read())
                {
                    movie = query.GetString(0);
                    categories.Add(movie);
                }
                db.Close();
            }
            categories.Sort();
            return(categories);
        }
Exemple #19
0
        public static Value Filter(IList <Value> parameters)
        {
            var validate = Expression.ValidateHelper("Filter", parameters, 2, new List <ValueType>()
            {
                ValueType.Object, ValueType.String
            });

            if (validate != null)
            {
                return(validate);
            }

            if (!(parameters[0].Object is SimpleTable))
            {
                return(Value.CreateErrorValue("Filter() parameter #1 is not a table"));
            }

            var sourceTable = parameters[0].Object as SimpleTable;
            var expression  = parameters[1].String;

            try
            {
                var result = FilterTable.Execute(sourceTable, expression);

                if (result.HasError)
                {
                    return(Value.CreateErrorValue(result.ErrorMessage, result.Exception));
                }

                return(new Value(result.Result));
            }
            catch (System.Exception e)
            {
                return(Value.CreateErrorValue("Filter() unable to filter table", e));
            }
        }
Exemple #20
0
 /// <summary>
 /// Internal use only.
 /// </summary>
 /// <param name="set">The entity name corresponding to data set.</param>
 /// <returns>
 ///   The key for caches.
 /// </returns>
 public string CacheKey(string set)
 {
     if (FilterTable.Count == 0)
     {
         return("");
     }
     else
     {
         List <QToken> qexprs;
         if (FilterTable.TryGetValue(set, out qexprs))
         {
             string key = "";
             foreach (var tk in qexprs)
             {
                 key += tk.TkName + "|";
             }
             return(key);
         }
         else
         {
             return("");
         }
     }
 }
Exemple #21
0
        //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        private void UpdateViewValues()
        {
            int selectedIndex = 0;

            filterList.Clear();

            if (DataManager.filterToSelect is City)
            {
                filterKind = "Выберите город";
                foreach (var item in DataManager.cities)
                {
                    filterList.Add(new FilterObject("", item.Value.name, "", item.Value));
                    if ((DataManager.selectedCity != null) && (item.Value.ID == DataManager.selectedCity.ID))
                    {
                        selectedIndex = filterList.Count - 1;
                    }
                }
            }
            else if (DataManager.filterToSelect is Division)
            {
                filterKind = "Выберите подразделение";
                foreach (var item in DataManager.divisions)
                {
                    if ((DataManager.selectedCity == null) || (item.Value.city.ID == DataManager.selectedCity.ID) || (DataManager.selectedCity.ID == 0) || (item.Value.ID == 0))
                    {
                        filterList.Add(new FilterObject("", item.Value.name + " (" + item.Value.city.name + ")", "", item.Value));
                        if ((DataManager.selectedDivision != null) && (item.Value.ID == DataManager.selectedDivision.ID))
                        {
                            selectedIndex = filterList.Count - 1;
                        }
                    }
                }
            }
            else if (DataManager.filterToSelect is MachineType)
            {
                filterKind = "Выберите тип оборудования";
                foreach (var item in DataManager.machineTypes)
                {
                    filterList.Add(new FilterObject("", item.Value.name, item.Value.iconName, item.Value));
                    if ((DataManager.selectedMachineType != null) && (item.Value.ID == DataManager.selectedMachineType.ID))
                    {
                        selectedIndex = filterList.Count - 1;
                    }
                }
            }
            else if (DataManager.filterToSelect is MachineState)
            {
                filterKind = "Выберите рабочее состояние";
                foreach (var item in DataManager.machineStates)
                {
                    filterList.Add(new FilterObject("", item.Value.name, item.Value.iconName, item.Value));
                    if ((DataManager.selectedMachineState != null) && (item.Value.ID == DataManager.selectedMachineState.ID))
                    {
                        selectedIndex = filterList.Count - 1;
                    }
                }
            }
            else if (DataManager.filterToSelect is MachineServiceState)
            {
                filterKind = "Выберите сервисное состояние";
                foreach (var item in DataManager.machineServiceStates)
                {
                    filterList.Add(new FilterObject("", item.Value.name, item.Value.iconName, item.Value));
                    if ((DataManager.selectedMachineServiceState != null) && (item.Value.ID == DataManager.selectedMachineServiceState.ID))
                    {
                        selectedIndex = filterList.Count - 1;
                    }
                }
            }

            FilterTable.ReloadData();

            if (filterList.Count != 0)
            {
                FilterTable.SelectRow(NSIndexPath.FromRowSection(selectedIndex, 0), false, UITableViewScrollPosition.Middle);
            }
        }
Exemple #22
0
        private static void CleanData(bool isDelete = false)
        {
            var tableNamesBase = DBHelper.GetTableName(connectionStringBase);
            var tableNamesCore = DBHelper.GetTableName(connectionStringCore);
            var tableNamesMsg  = DBHelper.GetTableName(connectionStringMsg);
            var tableNamesFile = DBHelper.GetTableName(connectionStringFile);
            int res            = 0;

            DbHelperSQL.connectionString = connectionStringBase;
            foreach (var item in tableNamesBase)
            {
                string strSql = "delete from " + item + " where isdelete=1";
                if (isDelete)
                {
                    if (!FilterTable.Contains(item))
                    {
                        strSql = "delete from " + item;
                    }
                }
                res += DbHelperSQL.ExecuteSql(strSql);
            }

            DbHelperSQL.connectionString = connectionStringCore;
            foreach (var item in tableNamesCore)
            {
                string strSql = "delete from " + item + " where isdelete=1";
                if (isDelete)
                {
                    if (!FilterTable.Contains(item))
                    {
                        strSql = "delete from " + item;
                    }
                }
                res += DbHelperSQL.ExecuteSql(strSql);
            }

            DbHelperSQL.connectionString = connectionStringMsg;
            foreach (var item in tableNamesMsg)
            {
                string strSql = "delete from " + item + " where isdelete=1";
                if (isDelete)
                {
                    if (!FilterTable.Contains(item))
                    {
                        strSql = "delete from " + item;
                    }
                }
                res += DbHelperSQL.ExecuteSql(strSql);
            }

            DbHelperSQL.connectionString = connectionStringFile;
            foreach (var item in tableNamesFile)
            {
                if (isDelete)
                {
                    if (!FilterTable.Contains(item))
                    {
                        string strSql = "delete from " + item;
                        res += DbHelperSQL.ExecuteSql(strSql);
                    }
                }
            }

            MessageBox.Show("成功,共清理数据:" + res + "条");
        }
        public questStatus ValidateRequest(BulkInsertRequest bulkInsertRequest, out BulkInsertResponse bulkInsertResponse)
        {
            // Initialize
            questStatus status = null;

            bulkInsertResponse = new BulkInsertResponse();
            bulkInsertResponse.BulkInsertRequest = bulkInsertRequest;


            // Get the filter.
            FilterId    filterId    = new FilterId(bulkInsertRequest.FilterId);
            Filter      filter      = null;
            DbFilterMgr dbFilterMgr = new DbFilterMgr(this.UserSession);

            status = dbFilterMgr.GetFilter(filterId, out filter);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            bulkInsertRequest.Filter = filter;


            // Validate the request.
            foreach (BulkInsertRow bulkInsertRow in bulkInsertRequest.Rows)
            {
                BulkInsertRow invalidRow = null;
                for (int rdx = 0; rdx < bulkInsertRow.Columns.Count; rdx += 1)
                {
                    BulkInsertColumnValue bulkInsertColumnValue = bulkInsertRow.Columns[rdx];

                    string entityName = null;
                    string columnName = null;
                    if (filter.FilterTableList.Count == 1)
                    {
                        entityName = filter.FilterTableList[0].TablesetTable.Table.Name;
                        columnName = bulkInsertColumnValue.Name;
                    }
                    else
                    {
                        string[] pp = bulkInsertColumnValue.Name.Split('_');
                        entityName = pp[0];
                        columnName = pp[1];
                    }


                    FilterColumn filterColumn = null;
                    FilterTable  filterTable  = filter.FilterTableList.Find(delegate(FilterTable t) { return(t.TablesetTable.Table.Name == entityName); });
                    if (filterTable != null)
                    {
                        filterColumn = filter.FilterColumnList.Find(delegate(FilterColumn c) {
                            return(c.TablesetColumn.Column.Name == columnName && c.TablesetColumn.Column.EntityTypeId == EntityType.Table && c.TablesetColumn.Column.EntityId == filterTable.TablesetTable.Table.Id);
                        });
                        if (filterColumn == null)
                        {
                            return(new questStatus(Severity.Error, String.Format("ERROR: filter column not found for bulk insert column {0}, row # {1}",
                                                                                 bulkInsertColumnValue.Name, (rdx + 1))));
                        }
                    }
                    else
                    {
                        FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(v.TablesetView.View.Name == entityName); });
                        if (filterView == null)
                        {
                            return(new questStatus(Severity.Error, String.Format("ERROR: filter view not found for bulk insert column {0}, row # {1}",
                                                                                 bulkInsertColumnValue.Name, (rdx + 1))));
                        }
                        filterColumn = filter.FilterColumnList.Find(delegate(FilterColumn c) {
                            return(c.TablesetColumn.Column.Name == columnName && c.TablesetColumn.Column.EntityTypeId == EntityType.View && c.TablesetColumn.Column.EntityId == filterView.TablesetView.View.Id);
                        });
                        if (filterColumn == null)
                        {
                            return(new questStatus(Severity.Error, String.Format("ERROR: filter column not found for bulk insert column {0}, row # {1} (view search)",
                                                                                 bulkInsertColumnValue.Name, (rdx + 1))));
                        }
                    }

                    // Validate the column
                    status = ValidateBulkInsertColumn(bulkInsertColumnValue, filterColumn);
                    if (!questStatusDef.IsSuccess(status))
                    {
                        if (invalidRow == null)
                        {
                            invalidRow = new BulkInsertRow();
                        }
                        invalidRow.Columns.Add(bulkInsertColumnValue);
                    }
                }
                if (invalidRow != null)
                {
                    bulkInsertResponse.ValidationErrors.Add(invalidRow);
                }
            }

            // TODO: IF ANY INVALID FIELDS, RETURN AN ERROR.
            if (bulkInsertResponse.ValidationErrors.Count > 0)
            {
                return(new questStatus(Severity.Error));
            }
            return(new questStatus(Severity.Success));
        }
Exemple #24
0
        private void Filter(int limit, FilterType type)
        {
            if (FilterTable == null)
            {
                return;
            }

            if (limit < 1)
            {
                limit = int.MaxValue;
            }
            m_ColumnWithoutErrors = null;
            m_Filtering           = true;
            try
            {
                var rows = 0;
                var max  = m_SourceTable.Rows.Count;
                FilterType = type;
                for (var counter = 0; counter < max && rows < limit; counter++)
                {
                    var errorOrWarning = m_SourceTable.Rows[counter].GetErrorInformation();

                    if (type.HasFlag(FilterType.OnlyTrueErrors) && errorOrWarning == "-")
                    {
                        continue;
                    }

                    var import = false;
                    if (string.IsNullOrEmpty(errorOrWarning))
                    {
                        if (type.HasFlag(FilterType.ShowIssueFree))
                        {
                            import = true;
                        }
                    }
                    else
                    {
                        if (errorOrWarning.IsWarningMessage())
                        {
                            if (type.HasFlag(FilterType.ShowWarning))
                            {
                                import = true;
                            }
                        }
                        else
                        {
                            // is an error
                            if (type.HasFlag(FilterType.ShowErrors))
                            {
                                import = true;
                            }
                        }
                    }

                    if (import)
                    {
                        FilterTable.ImportRow(m_SourceTable.Rows[counter]);
                    }
                    rows++;
                }

                CutAtLimit = rows >= limit;
            }
            catch (Exception ex)
            {
                Logger.Warning(ex.SourceExceptionMessage());
            }
            finally
            {
                m_Filtering = false;
            }
        }
        public questStatus Save(DbMgrTransaction trans, FilterId filterId, Filter filter)
        {
            // Initialize
            questStatus status    = null;
            Mgr         mgr       = new Mgr(this.UserSession);
            ColumnsMgr  columnMgr = new ColumnsMgr(this.UserSession);


            try
            {
                // Validate filter
                status = Verify(filterId, filter);
                if (!questStatusDef.IsSuccess(status))
                {
                    return(status);
                }


                // Remove filter entities, items and values.  Also, tables and columns.
                status = _dbFilterMgr.Clear(trans, filterId);
                if (!questStatusDef.IsSuccess(status))
                {
                    return(status);
                }

                // Save filter tables
                FilterTablesMgr filterTablesMgr = new FilterTablesMgr(this.UserSession);
                foreach (FilterTable filterTable in filter.FilterTableList)
                {
                    filterTable.FilterId = filter.Id;
                    FilterTableId filterTableId = null;
                    status = filterTablesMgr.Create(trans, filterTable, out filterTableId);
                    if (!questStatusDef.IsSuccess(status))
                    {
                        return(status);
                    }
                    filterTable.Id = filterTableId.Id;
                }

                // Save filter views
                FilterViewsMgr filterViewsMgr = new FilterViewsMgr(this.UserSession);
                foreach (FilterView _filterView in filter.FilterViewList)
                {
                    _filterView.FilterId = filter.Id;
                    FilterViewId filterViewId = null;
                    status = filterViewsMgr.Create(trans, _filterView, out filterViewId);
                    if (!questStatusDef.IsSuccess(status))
                    {
                        return(status);
                    }
                    _filterView.Id = filterViewId.Id;
                }

                // Save filter columns
                DbFilterMgr      dbFilterMgr      = new DbFilterMgr(this.UserSession);
                FilterColumnsMgr filterColumnsMgr = new FilterColumnsMgr(this.UserSession);
                foreach (FilterColumn filterColumn in filter.FilterColumnList)
                {
                    if (filterColumn.FilterEntityId < BaseId.VALID_ID)
                    {
                        // Get the FilterTable or FilterView Id.
                        // This is a klugie.  Gotta rework DataManager panel first, though.  No time to do that.
                        if (filterColumn.FilterEntityTypeId == FilterEntityType.Table)
                        {
                            TablesetTable tablesetTable = null;
                            status = dbFilterMgr.GetTablesetTable(filterColumn, out tablesetTable);
                            if (!questStatusDef.IsSuccess(status))
                            {
                                return(status);
                            }
                            FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t) { return(t.Schema == tablesetTable.Schema && t.Name == tablesetTable.Name); });
                            if (filterTable == null)
                            {
                                return(new questStatus(Severity.Error, String.Format("ERROR: FilterTable not found for TableSetTable Schema:{0} Name:{1}",
                                                                                     tablesetTable.Schema, tablesetTable.Name)));
                            }
                            filterColumn.FilterEntityId = filterTable.Id;
                        }
                        else if (filterColumn.FilterEntityTypeId == FilterEntityType.View)
                        {
                            TablesetView tablesetView = null;
                            status = dbFilterMgr.GetTablesetView(filterColumn, out tablesetView);
                            if (!questStatusDef.IsSuccess(status))
                            {
                                return(status);
                            }
                            FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(v.Schema == tablesetView.Schema && v.Name == tablesetView.Name); });
                            if (filterView == null)
                            {
                                return(new questStatus(Severity.Error, String.Format("ERROR: FilterView not found for TableSetTable Schema:{0} Name:{1}",
                                                                                     tablesetView.Schema, tablesetView.Name)));
                            }
                            filterColumn.FilterEntityId = filterView.Id;
                        }
                        else
                        {
                            return(new questStatus(Severity.Error, String.Format("ERROR: FilterColumn FilterEntityTypeId {0} not supported.  FilterColumn {1}",
                                                                                 filterColumn.FilterEntityTypeId, filterColumn.Id)));
                        }
                    }

                    // Save
                    FilterColumnId filterColumnId = null;
                    status = filterColumnsMgr.Create(trans, filterColumn, out filterColumnId);
                    if (!questStatusDef.IsSuccess(status))
                    {
                        return(status);
                    }
                    filterColumn.Id = filterColumnId.Id;
                }


                // Save filter items.
                FilterItemsMgr      filterItemsMgr      = new FilterItemsMgr(this.UserSession);
                FilterItemJoinsMgr  filterItemJoinsMgr  = new FilterItemJoinsMgr(this.UserSession);
                FilterOperationsMgr filterOperationsMgr = new FilterOperationsMgr(this.UserSession);
                FilterValuesMgr     filterValuesMgr     = new FilterValuesMgr(this.UserSession);
                foreach (FilterItem filterItem in filter.FilterItemList)
                {
                    FilterColumn filterColumn = null;

                    // Get filterItem FilterEntityId
                    if (filterItem.FilterEntityId < BaseId.VALID_ID)
                    {
                        status = dbFilterMgr.GetFilterColumn(filter, filterItem, out filterColumn);
                        if (!questStatusDef.IsSuccess(status))
                        {
                            return(status);
                        }
                        filterItem.FilterEntityId = filterColumn.Id;
                        filterItem.FilterColumn   = filterColumn;      // helps with bookkeeping further down.
                    }

                    // Save FilterItem
                    FilterItemId filterItemId = null;
                    status = filterItemsMgr.Create(trans, filterItem, out filterItemId);
                    if (!questStatusDef.IsSuccess(status))
                    {
                        return(status);
                    }
                    filterItem.Id = filterItemId.Id;


                    //  Save filter item joins
                    foreach (FilterItemJoin filterItemJoin in filterItem.JoinList)
                    {
                        filterItemJoin.FilterItemId = filterItemId.Id;


                        if (string.IsNullOrEmpty(filterItemJoin.SourceSchema) || string.IsNullOrEmpty(filterItemJoin.SourceEntityName) || string.IsNullOrEmpty(filterItemJoin.SourceColumnName))
                        {
                            // Get join target type (Table or View)
                            TablesetColumnId tablesetColumnId = new TablesetColumnId(filterItemJoin.ColumnId);
                            TablesetTable    tablesetTable    = null;
                            TablesetView     tablesetView     = null;
                            status = getJoinTarget(tablesetColumnId, out tablesetTable, out tablesetView);
                            if (!questStatusDef.IsSuccess(status))
                            {
                                return(status);
                            }
                            filterItemJoin.TargetEntityTypeId = tablesetTable == null ? FilterEntityType.View : FilterEntityType.Table;

                            // Get target identifier parts.
                            string targetSchema     = null;
                            string targetEntityName = null;
                            string targetColumnName = null;
                            SQLIdentifier.ParseThreePartIdentifier(filterItemJoin.Identifier, out targetSchema, out targetEntityName, out targetColumnName);
                            filterItemJoin.TargetSchema     = targetSchema;
                            filterItemJoin.TargetEntityName = targetEntityName;
                            filterItemJoin.TargetColumnName = targetColumnName;


                            // Get source identifier parts.
                            string sourceSchema     = null;
                            string sourceEntityName = null;
                            string sourceColumnName = null;
                            if (filterColumn.FilterEntityTypeId == FilterEntityType.Table)
                            {
                                FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t) { return(filterColumn.FilterEntityId == t.Id); });
                                if (filterTable == null)
                                {
                                    return(new questStatus(Severity.Error, String.Format("ERROR: building Join on {0}, FilterTable {1} not found",
                                                                                         filterItemJoin.Identifier, filterColumn.FilterEntityId)));
                                }
                                sourceSchema     = filterTable.Schema;
                                sourceEntityName = filterTable.Name;
                            }
                            else if (filterColumn.FilterEntityTypeId == FilterEntityType.View)
                            {
                                FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(filterColumn.FilterEntityId == v.Id); });
                                if (filterView == null)
                                {
                                    return(new questStatus(Severity.Error, String.Format("ERROR: building Join on {0}, FilterView {1} not found",
                                                                                         filterItemJoin.Identifier, filterColumn.FilterEntityId)));
                                }
                                sourceSchema     = filterView.Schema;
                                sourceEntityName = filterView.Name;
                            }
                            sourceColumnName                = filterColumn.Name;
                            filterItemJoin.SourceSchema     = sourceSchema;
                            filterItemJoin.SourceEntityName = sourceEntityName;
                            filterItemJoin.SourceColumnName = sourceColumnName;
                        }

                        // Create FilterItemJoin
                        FilterItemJoinId filterItemJoinId = null;
                        status = filterItemJoinsMgr.Create(trans, filterItemJoin, out filterItemJoinId);
                        if (!questStatusDef.IsSuccess(status))
                        {
                            return(status);
                        }
                    }

                    // Save filter operations
                    foreach (FilterOperation filterOperation in filterItem.OperationList)
                    {
                        filterOperation.FilterItemId = filterItem.Id;

                        FilterOperationId filterOperationId = null;
                        status = filterOperationsMgr.Create(trans, filterOperation, out filterOperationId);
                        if (!questStatusDef.IsSuccess(status))
                        {
                            return(status);
                        }

                        // Save filter values
                        foreach (FilterValue filterValue in filterOperation.ValueList)
                        {
                            filterValue.FilterOperationId = filterOperationId.Id;
                            FilterValueId filterValueId = null;
                            status = filterValuesMgr.Create(trans, filterValue, out filterValueId);
                            if (!questStatusDef.IsSuccess(status))
                            {
                                return(status);
                            }
                        }
                    }
                }

                // Save filter procedures
                //     Get the filter's database.
                Quest.Functional.MasterPricing.Database database = null;
                status = GetFilterDatabase(filterId, out database);
                if (!questStatusDef.IsSuccess(status))
                {
                    return(status);
                }
                // NOTE: business rules reads in procedure parameters and writes them.
                FilterProceduresMgr filterProceduresMgr = new FilterProceduresMgr(this.UserSession);
                foreach (FilterProcedure filterProcedure in filter.FilterProcedureList)
                {
                    if (string.IsNullOrEmpty(filterProcedure.Name))
                    {
                        continue;
                    }
                    filterProcedure.FilterId = filter.Id;
                    FilterProcedureId filterProcedureId = null;
                    status = filterProceduresMgr.Create(trans, database, filterProcedure, out filterProcedureId);
                    if (!questStatusDef.IsSuccess(status))
                    {
                        return(status);
                    }
                }

                // NOTE: YOU STILL HAVE TO UPDATE THE FILTER'S SQL.  BUT, CAN'T HERE, B/C YOU'RE IN A TRANSACTION.
                // TODO: REFACTOR SO YOU CAN, BUT GOTTA GET A PARAMETERS MAKE-REQUIRED UPDATE OUT THERE FIRST.
            }
            catch (System.Exception ex)
            {
                return(new questStatus(Severity.Fatal, String.Format("EXCEPTION: {0}.{1}: {2}",
                                                                     this.GetType().Name, MethodBase.GetCurrentMethod().Name,
                                                                     ex.InnerException != null ? ex.InnerException.Message : ex.Message)));
            }
            return(new questStatus(Severity.Success));
        }
 public FilterEntity()
 {
     Type        = new FilterEntityType();
     FilterTable = new FilterTable();
     FilterView  = new FilterView();
 }
Exemple #27
0
        /*==================================================================================================================================
        * Public Methods
        *=================================================================================================================================*/
        public questStatus Save(FilterPanelViewModel filterPanelViewModel)
        {
            // Initialize
            questStatus status = null;

            Quest.Functional.MasterPricing.Filter filter = null;
            FilterId filterId = null;


            // Validate
            if (filterPanelViewModel.Editor.TablesetId < BaseId.VALID_ID)
            {
                return(new questStatus(Severity.Error, "Invalid Tableset Id"));
            }
            if (filterPanelViewModel.Editor.FilterId < BaseId.VALID_ID)
            {
                // For headless agents that want to save all-in-one, not via the Filters panel.
                filter = new Functional.MasterPricing.Filter();
                BufferMgr.TransferBuffer(filterPanelViewModel.Editor, filter);

                filterId = null;
                FiltersMgr filtersMgr = new FiltersMgr(this.UserSession);
                status = filtersMgr.Create(filter, out filterId);
                if (!questStatusDef.IsSuccess(status))
                {
                    return(status);
                }
                filterPanelViewModel.Editor.Id       = filterId.Id;
                filterPanelViewModel.Editor.FilterId = filterId.Id;
            }


            // Read tableset configuration
            TablesetId             tablesetId             = new TablesetId(filterPanelViewModel.Editor.TablesetId);
            TablesetDataManagement tablesetDataManagement = null;
            TablesetMgr            tablesetMgr            = new TablesetMgr(this.UserSession);

            status = tablesetMgr.ReadTablesetDataManagement(tablesetId, out tablesetDataManagement);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }


            #region Transfer filter entities
            //
            // Transfer filter entities
            //
            filter            = new Functional.MasterPricing.Filter();
            filter.TablesetId = filterPanelViewModel.Editor.TablesetId;
            filter.Id         = filterPanelViewModel.Editor.Id;
            foreach (BootstrapTreenodeViewModel filterEntity in filterPanelViewModel.Entities)
            {
                if (filterEntity.type == "table")
                {
                    FilterTable filterTable = new FilterTable();
                    filterTable.FilterId = filterPanelViewModel.Editor.Id;
                    filterTable.Schema   = filterEntity.Schema;
                    filterTable.Name     = filterEntity.Name;
                    filter.FilterTableList.Add(filterTable);
                }
                else if (filterEntity.type == "view")
                {
                    FilterView filterView = new FilterView();
                    filterView.FilterId = filterPanelViewModel.Editor.Id;
                    filterView.Schema   = filterEntity.Schema;
                    filterView.Name     = filterEntity.Name;
                    filter.FilterViewList.Add(filterView);
                }
                else if (filterEntity.type == "column")
                {
                    FilterColumn filterColumn = new FilterColumn();
                    filterColumn.FilterId         = filterPanelViewModel.Editor.Id;
                    filterColumn.Name             = filterEntity.Name;
                    filterColumn.TablesetEntityId = filterEntity.ParentId;

                    if (filterEntity.parentType == "table")
                    {
                        TablesetTable parentTablesetTable = tablesetDataManagement.TablesetConfiguration.TablesetTables.Find(delegate(TablesetTable tt) { return(tt.Id == filterEntity.ParentId); });
                        if (parentTablesetTable == null)
                        {
                            return(new questStatus(Severity.Error, String.Format("ERROR: column filter entity \"{0}\"  (Id {1})   table parent Id {2} not found.",
                                                                                 filterEntity.text, filterEntity.Id, filterEntity.ParentId)));
                        }
                        filterColumn.FilterEntityTypeId = FilterEntityType.Table;

                        // If column table not in filter entities, add it.
                        BootstrapTreenodeViewModel filterColumnTable = filterPanelViewModel.Entities.Find(delegate(BootstrapTreenodeViewModel n) { return(n.type == "table" && n.Id == filterEntity.ParentId); });
                        if (filterColumnTable == null)
                        {
                            FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t) { return(filterEntity.ParentId == t.TablesetTable.Id); });
                            if (filterTable == null)
                            {
                                filterTable               = new FilterTable();
                                filterTable.FilterId      = filterPanelViewModel.Editor.Id;
                                filterTable.TablesetTable = parentTablesetTable;
                                filterTable.Schema        = parentTablesetTable.Schema;
                                filterTable.Name          = parentTablesetTable.Name;
                                filter.FilterTableList.Add(filterTable);
                            }
                        }
                    }
                    else if (filterEntity.parentType == "view")
                    {
                        TablesetView parentTablesetView = tablesetDataManagement.TablesetConfiguration.TablesetViews.Find(delegate(TablesetView tv) { return(tv.Id == filterEntity.ParentId); });
                        if (parentTablesetView == null)
                        {
                            return(new questStatus(Severity.Error, String.Format("ERROR: column filter entity \"{0}\"  (Id {1})   view parent Id {2} not found.",
                                                                                 filterEntity.text, filterEntity.Id, filterEntity.ParentId)));
                        }
                        filterColumn.FilterEntityTypeId = FilterEntityType.View;

                        // If column view not in filter entities, add it.
                        BootstrapTreenodeViewModel filterColumnView = filterPanelViewModel.Entities.Find(delegate(BootstrapTreenodeViewModel n) { return(n.type == "view" && n.Id == filterEntity.ParentId); });
                        if (filterColumnView == null)
                        {
                            FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(filterEntity.ParentId == v.TablesetView.Id); });
                            if (filterView == null)
                            {
                                filterView              = new FilterView();
                                filterView.FilterId     = filterPanelViewModel.Editor.Id;
                                filterView.TablesetView = parentTablesetView;
                                filterView.Schema       = parentTablesetView.Schema;
                                filterView.Name         = parentTablesetView.Name;
                                filter.FilterViewList.Add(filterView);
                            }
                        }
                    }
                    else
                    {
                        return(new questStatus(Severity.Error, String.Format("ERROR: column filter entity \"{0}\"  (Id {1})  unknown parent parent type: {2}",
                                                                             filterEntity.text, filterEntity.Id, filterEntity.ParentId, (filterEntity.parentType == null ? "null" : filterEntity.parentType))));
                    }
                    filter.FilterColumnList.Add(filterColumn);
                }
                else
                {
                    return(new questStatus(Severity.Error, String.Format("Invalid filter entity type: {0}", filterEntity.type)));
                }
            }
            #endregion


            #region Transfer filter items
            //
            // Transfer filter items
            //
            foreach (FilterItemViewModel filterItemViewModel in filterPanelViewModel.Items)
            {
                // Filter Item
                FilterItem filterItem = new FilterItem();
                filterItem.FilterId = filterPanelViewModel.Editor.FilterId;
                if (filterItemViewModel.Entity.type == "table")
                {
                    filterItem.FilterEntityTypeId = FilterEntityType.Table;
                }
                if (filterItemViewModel.Entity.type == "view")
                {
                    filterItem.FilterEntityTypeId = FilterEntityType.View;
                }
                else if (filterItemViewModel.Entity.type == "column")
                {
                    filterItem.FilterEntityTypeId = FilterEntityType.Column;
                }
                filterItem.TablesetColumnId         = filterItemViewModel.Entity.Id;
                filterItem.Label                    = filterItemViewModel.Label;
                filterItem.ParameterName            = filterItemViewModel.ParameterName;
                filterItem.bHidden                  = filterItemViewModel.bHidden;
                filterItem.bBulkUpdateValueRequired = filterItemViewModel.bBulkUpdateValueRequired;

                // Joins
                foreach (FilterItemJoinViewModel filterItemJoinViewModel in filterItemViewModel.Joins)
                {
                    FilterItemJoin filterItemJoin = new FilterItemJoin();
                    filterItemJoin.ColumnId   = filterItemJoinViewModel.ColumnId;
                    filterItemJoin.JoinType   = filterItemJoinViewModel.JoinType;
                    filterItemJoin.Identifier = filterItemJoinViewModel.Identifier;
                    filterItem.JoinList.Add(filterItemJoin);
                }

                // Operations
                foreach (FilterOperationViewModel filterOperationViewModel in filterItemViewModel.Operations)
                {
                    FilterOperation filterOperation = new FilterOperation();
                    filterOperation.FilterOperatorId = filterOperationViewModel.Operator;

                    // Values
                    foreach (FilterValueViewModel filterValueViewModel in filterOperationViewModel.Values)
                    {
                        FilterValue filterValue = new FilterValue();
                        filterValue.Value = filterValueViewModel.Value;
                        filterOperation.ValueList.Add(filterValue);
                    }
                    filterItem.OperationList.Add(filterOperation);
                }

                // Lookup
                if (filterItemViewModel.Lookup.Id >= BaseId.VALID_ID)
                {
                    filterItem.LookupId = filterItemViewModel.Lookup.Id;
                }

                // TypeList
                if (filterItemViewModel.TypeList.Id >= BaseId.VALID_ID)
                {
                    filterItem.TypeListId = filterItemViewModel.TypeList.Id;
                }
                filter.FilterItemList.Add(filterItem);
            }
            #endregion


            #region  Transfer filter procedures
            //
            // Transfer filter procedures
            //
            foreach (FilterProcedureViewModel filterProcedureViewModel in filterPanelViewModel.Procedures)
            {
                if (filterProcedureViewModel.Id > BaseId.INVALID_ID)
                {
                    FilterProcedure filterProcedure = new FilterProcedure();
                    BufferMgr.TransferBuffer(filterProcedureViewModel, filterProcedure);
                    filterProcedure.FilterId = filterPanelViewModel.Editor.FilterId;
                    filter.FilterProcedureList.Add(filterProcedure);
                }
            }
            #endregion


            #region Save filter
            //
            // Save filter
            //
            filterId = new FilterId(filterPanelViewModel.Editor.FilterId);
            FilterMgr filterMgr = new FilterMgr(this.UserSession);
            status = filterMgr.Save(filterId, filter);
            if (!questStatusDef.IsSuccess(status))
            {
                if (questStatusDef.IsWarning(status))
                {
                    return(status);
                }
                return(new questStatus(status.Severity, String.Format("Error saving filter items: {0}", status.Message)));
            }
            #endregion


            #region Return procedure parameters
            //
            // Return procedure parameters
            //

            // Get filter database
            Quest.Functional.MasterPricing.Database database = null;
            filterMgr.GetFilterDatabase(filterId, out database);
            if (filter.FilterProcedureList.Count > 0)
            {
                foreach (FilterProcedureViewModel filterProcedureViewModel in filterPanelViewModel.Procedures)
                {
                    if ((filterProcedureViewModel.Id == BaseId.INVALID_ID) || (string.IsNullOrEmpty(filterProcedureViewModel.Name)))
                    {
                        continue;
                    }

                    // Get procedure parameters
                    List <Quest.Functional.MasterPricing.FilterProcedureParameter> filterProcedureParameterList = null;
                    status = filterMgr.GetStoredProdecureParameters(database, filterProcedureViewModel.Name, out filterProcedureParameterList);
                    if (!questStatusDef.IsSuccess(status))
                    {
                        return(status);
                    }
                    foreach (FilterProcedureParameter filterProcedureParameter in filterProcedureParameterList)
                    {
                        FilterProcedureParameterViewModel filterProcedureParameterViewModel = new FilterProcedureParameterViewModel();
                        BufferMgr.TransferBuffer(filterProcedureParameter, filterProcedureParameterViewModel, true);
                        filterProcedureParameterViewModel.Precision = filterProcedureParameter.Precision[0];
                        filterProcedureParameterViewModel.Scale     = filterProcedureParameter.Scale[0];
                        filterProcedureViewModel.Parameters.Add(filterProcedureParameterViewModel);
                    }
                }
            }
            #endregion


            // Return warning if no items in filter.
            if (filter.FilterItemList.Count == 0)
            {
                return(new questStatus(Severity.Warning, "Filter successfully saved, but has no items"));
            }
            return(new questStatus(Severity.Success));
        }