示例#1
0
 public ViewPage(DistinctValueRequest request) :
     this(new PageRequest(0, 0, null, request.Filter))
 {
     _tag = request.Tag;
     _distinctValueFieldName = request.FieldName;
     _pageSize = request.MaximumValueCount;
     _allowDistinctFieldInFilter = request.AllowFieldInFilter;
     _controller = request.Controller;
     _view       = request.View;
 }
        object[] IDataController.GetListOfValues(string controller, string view, DistinctValueRequest request)
        {
            SelectView(controller, view);
            ViewPage page = new ViewPage(request);

            page.ApplyDataFilter(_config.CreateDataFilter(), controller, view, request.LookupContextController, request.LookupContextView, request.LookupContextFieldName);
            List <object> distinctValues = new List <object>();
            BusinessRules rules          = _config.CreateBusinessRules();

            _serverRules = rules;
            if (_serverRules == null)
            {
                _serverRules = CreateBusinessRules();
            }
            _serverRules.Page = page;
            if (rules != null)
            {
                rules.BeforeSelect(request);
            }
            else
            {
                _serverRules.ExecuteServerRules(request, ActionPhase.Before);
            }
            using (DbConnection connection = CreateConnection())
            {
                DbCommand command = CreateCommand(connection);
                ConfigureCommand(command, page, CommandConfigurationType.SelectDistinct, null);
                DbDataReader reader = command.ExecuteReader();
                while (reader.Read() && (distinctValues.Count < page.PageSize))
                {
                    object v = reader.GetValue(0);
                    if (!(DBNull.Value.Equals(v)))
                    {
                        v = ConvertObjectToValue(v);
                    }
                    distinctValues.Add(v);
                }
                reader.Close();
            }
            if (rules != null)
            {
                rules.AfterSelect(request);
            }
            else
            {
                _serverRules.ExecuteServerRules(request, ActionPhase.After);
            }
            return(distinctValues.ToArray());
        }
示例#3
0
        string[] IAutoCompleteManager.GetCompletionList(string prefixText, int count, string contextKey)
        {
            if (contextKey == null)
            {
                return(null);
            }
            string[] arguments = contextKey.Split(',');
            if (arguments.Length != 3)
            {
                return(null);
            }
            DistinctValueRequest request = new DistinctValueRequest();

            request.FieldName = arguments[2];
            string filter = (request.FieldName + ":");

            foreach (string s in prefixText.Split(',', ';'))
            {
                string query = Controller.ConvertSampleToQuery(s);
                if (!(String.IsNullOrEmpty(query)))
                {
                    filter = (filter + query);
                }
            }
            request.Filter = new string[] {
                filter
            };
            request.AllowFieldInFilter = true;
            request.MaximumValueCount  = count;
            request.Controller         = arguments[0];
            request.View = arguments[1];
            object[]      list   = ControllerFactory.CreateDataController().GetListOfValues(arguments[0], arguments[1], request);
            List <string> result = new List <string>();

            foreach (object o in list)
            {
                result.Add(Convert.ToString(o));
            }
            return(result.ToArray());
        }
 public object[] GetListOfValues(string controller, string view, DistinctValueRequest request)
 {
     return(ControllerFactory.CreateDataController().GetListOfValues(controller, view, request));
 }
示例#5
0
 object[] IDataController.GetListOfValues(string controller, string view, DistinctValueRequest request)
 {
     SelectView(controller, view);
     ViewPage page = new ViewPage(request);
     page.ApplyDataFilter(_config.CreateDataFilter(), controller, view, request.LookupContextController, request.LookupContextView, request.LookupContextFieldName);
     List<object> distinctValues = new List<object>();
     BusinessRules rules = _config.CreateBusinessRules();
     _serverRules = rules;
     if (_serverRules == null)
         _serverRules = CreateBusinessRules();
     _serverRules.Page = page;
     if (rules != null)
         rules.BeforeSelect(request);
     else
         _serverRules.ExecuteServerRules(request, ActionPhase.Before);
     if (_serverRules.EnableResultSet)
     {
         IDataReader reader = ExecuteResultSetReader(page);
         SortedDictionary<object, object> uniqueValues = new SortedDictionary<object, object>();
         bool hasNull = false;
         while (reader.Read())
         {
             object v = reader[request.FieldName];
             if (DBNull.Value.Equals(v))
                 hasNull = true;
             else
                 uniqueValues[v] = v;
         }
         if (hasNull)
             distinctValues.Add(null);
         foreach (object v in uniqueValues.Keys)
             if (distinctValues.Count < page.PageSize)
                 distinctValues.Add(ConvertObjectToValue(v));
             else
                 break;
     }
     else
         using (DbConnection connection = CreateConnection())
         {
             DbCommand command = CreateCommand(connection);
             ConfigureCommand(command, page, CommandConfigurationType.SelectDistinct, null);
             DbDataReader reader = command.ExecuteReader();
             while (reader.Read() && (distinctValues.Count < page.PageSize))
             {
                 object v = reader.GetValue(0);
                 if (!(DBNull.Value.Equals(v)))
                     v = ConvertObjectToValue(v);
                 distinctValues.Add(v);
             }
             reader.Close();
         }
     if (rules != null)
         rules.AfterSelect(request);
     else
         _serverRules.ExecuteServerRules(request, ActionPhase.After);
     object[] result = distinctValues.ToArray();
     EnsureJsonCompatibility(result);
     return result;
 }
示例#6
0
 string[] IAutoCompleteManager.GetCompletionList(string prefixText, int count, string contextKey)
 {
     if (contextKey == null)
         return null;
     string[] arguments = contextKey.Split(',');
     if (arguments.Length != 3)
         return null;
     DistinctValueRequest request = new DistinctValueRequest();
     request.FieldName = arguments[2];
     string filter = (request.FieldName + ":");
     foreach (string s in prefixText.Split(',', ';'))
     {
         string query = Controller.ConvertSampleToQuery(s);
         if (!(String.IsNullOrEmpty(query)))
             filter = (filter + query);
     }
     request.Filter = new string[] {
             filter};
     request.AllowFieldInFilter = true;
     request.MaximumValueCount = count;
     request.Controller = arguments[0];
     request.View = arguments[1];
     object[] list = ControllerFactory.CreateDataController().GetListOfValues(arguments[0], arguments[1], request);
     List<string> result = new List<string>();
     foreach (object o in list)
         result.Add(Convert.ToString(o));
     return result.ToArray();
 }
 public object[] GetListOfValues(string controller, string view, DistinctValueRequest request)
 {
     return ControllerFactory.CreateDataController().GetListOfValues(controller, view, request);
 }