Пример #1
0
        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);
        }