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()); }
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)); }
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; }
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); }