public virtual IDataAdapterCommand <IEnumerable <fo.DicomDataset> > CreateSelectCommand ( string queryLevel, IEnumerable <IMatchingCondition> conditions, IQueryOptions options, IQueryResponseBuilder responseBuilder ) { var queryLeveTable = SchemaProvider.GetTableInfo(SchemaProvider.GetQueryTable(queryLevel)); if (queryLeveTable == null) { throw new ArgumentException("querylevel not supported"); } var queryBuilder = BuildQuery(conditions, options, queryLeveTable); var sorting = SortingStrategyFactory.Create( ); sorting.Sort(options, queryLeveTable); var selectCommand = new DicomDsQueryCommand(CreateCommand(queryBuilder.GetQueryText(queryLeveTable, options, sorting)), queryBuilder, responseBuilder); return(selectCommand); }
public virtual IPagedDataAdapterCommand <DicomDataset> CreateSelectCommand ( string queryLevel, IEnumerable <IMatchingCondition> conditions, IQueryOptions options, IQueryResponseBuilder responseBuilder ) { var queryLevelTable = SchemaProvider.GetTableInfo(SchemaProvider.GetQueryTable(queryLevel)); if (queryLevelTable == null) { throw new ArgumentException("querylevel not supported"); } var queryBuilder = BuildQuery(conditions, options, queryLevelTable); var sorting = SortingStrategyFactory.Create( ); sorting.ApplyPagination = sorting.CanPaginate(queryBuilder, options, queryLevelTable); var sortedQuery = sorting.Sort(queryBuilder, options, queryLevelTable); var selectCommand = new DicomDsQueryCommand(CreateCommand(sortedQuery), queryBuilder, responseBuilder, options); // if the database strategy can't paginate then we'll do pagination in code. selectCommand.ApplyPagination = !sorting.ApplyPagination; if (!string.IsNullOrEmpty(sorting.CountColumn)) { selectCommand.SetCountColumn(queryLevelTable, sorting.CountColumn); } return(selectCommand); }