/// <summary> /// Data retrieval /// </summary> /// <returns></returns> private DataSet GenerateReturnSet() { DataSet result = null; if(_url != null) { SqlQuery qry = null; //Query q; if(!String.IsNullOrEmpty(_url.TableName)) { qry = new Select().From(_url.TableName); IDataProvider provider = ProviderFactory.GetProvider(); ITable tbl = provider.FindTable(_url.TableName); if(_url.PrimaryKey != null) qry = qry.Where(tbl.PrimaryKey.Name).IsEqualTo(_url.PrimaryKey); //q.WHERE(q.Schema.PrimaryKey.ParameterName, _url.PrimaryKey); if(_url.Parameters != null) { IDictionaryEnumerator loopy = _url.Parameters.GetEnumerator(); IColumn column; string paramName; object paramValue; while(loopy.MoveNext()) { paramName = loopy.Key.ToString(); paramValue = loopy.Value; int pageSize = 0; int pageIndex = -1; if(paramName.ToLowerInvariant() == "pagesize" || paramName.ToLowerInvariant() == "pageindex") { if(paramName.ToLowerInvariant() == "pagesize") pageSize = int.Parse(paramValue.ToString()); if(paramName.ToLowerInvariant() == "pageindex") pageIndex = int.Parse(paramValue.ToString()); if(pageSize > 0 && pageIndex > -1) qry.Paged(pageIndex + 1, pageSize); } else { Comparison comp; EvalComparison(paramName, out paramName, out comp); column = tbl.GetColumn(paramName); //if this column is a string, by default do a fuzzy search if(comp == Comparison.Like || column.IsString) { comp = Comparison.Like; paramValue = String.Concat("%", paramValue, "%"); qry = qry.Where(column.Name).Like(paramValue.ToString()); } else if(paramValue.ToString().ToLower() == "null") qry = qry.Where(column.Name).IsNull(); //q.WHERE(column.ColumnName, comp, paramValue); } } } result = provider.ExecuteDataSet(qry.GetCommand()); } else if(!String.IsNullOrEmpty(_url.SpName)) { StoredProcedure sp = new StoredProcedure(_url.SpName); if(_url.Parameters != null) { IDictionaryEnumerator loopy = _url.Parameters.GetEnumerator(); while(loopy.MoveNext()) sp.Command.AddParameter(loopy.Key.ToString(), loopy.Value, DbType.AnsiString); } result = sp.ExecuteDataSet(); } } return result; }