public SingleResultQueryCommand <InstanceMetadata> CreateGetMetadataCommand(IObjectId instance)
        {
            TableKey            studyTable     = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey            seriesTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.SeriesTableName);
            TableKey            instanceTable  = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            QueryBuilder        queryBuilder   = CreateQueryBuilder( );
            SingleValueMatching uidMatching    = new SingleValueMatching( );
            ColumnInfo          metadataColumn = SchemaProvider.GetColumn(instanceTable.Name,
                                                                          StorageDbSchemaProvider.MetadataTable.MetadataColumn);

            queryBuilder.ProcessColumn(instanceTable, seriesTable.ModelKeyColumns[0], uidMatching, new string[] { instance.SeriesInstanceUID });
            queryBuilder.ProcessColumn(instanceTable, studyTable.ModelKeyColumns[0], uidMatching, new string[] { instance.StudyInstanceUID });
            queryBuilder.ProcessColumn(instanceTable, instanceTable.ModelKeyColumns[0], uidMatching, new string[] { instance.SOPInstanceUID });
            queryBuilder.ProcessColumn(instanceTable, metadataColumn);

            return(new SingleResultQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(instanceTable)),
                                                                    instanceTable,
                                                                    metadataColumn.ToString( ),
                                                                    CreateMetadata));

            //IDbCommand command  = CreateCommand ( ) ;
            //var        sopParam = CreateParameter ( "@" + DB.Schema.StorageDbSchemaProvider.MetadataTable.SopInstanceColumn, instance.SOPInstanceUID ) ;


            // command.CommandText = string.Format ( "SELECT {0} FROM {1} WHERE {2}=@{2}",
            //                                      DB.Schema.StorageDbSchemaProvider.MetadataTable.MetadataColumn,
            //                                      DB.Schema.StorageDbSchemaProvider.MetadataTable.TableName,
            //                                      DB.Schema.StorageDbSchemaProvider.MetadataTable.SopInstanceColumn ) ;

            //command.Parameters.Add ( sopParam );

            //SetConnectionIfNull ( command ) ;

            //return command ;
        }
Example #2
0
        public virtual IDataAdapterCommand <long> CreateSelectStudyKeyCommand(IStudyId study)
        {
            TableKey     studyTable   = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            QueryBuilder queryBuilder = CreateQueryBuilder( );

            ProcessSelectStudy(study, queryBuilder, studyTable, studyTable);

            return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(studyTable)),
                                                        studyTable.Name,
                                                        studyTable.KeyColumn.Name));
        }
        public virtual IDataAdapterCommand <long> CreateSelectStudyKeyCommand(IStudyId study)
        {
            TableKey            studyTable   = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            QueryBuilder        queryBuilder = CreateQueryBuilder( );
            SingleValueMatching uidMatching  = new SingleValueMatching( );


            queryBuilder.ProcessColumn(studyTable, studyTable.ModelKeyColumns [0], uidMatching, new string[] { study.StudyInstanceUID });

            return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(studyTable)),
                                                        studyTable.Name,
                                                        studyTable.KeyColumn.Name));
        }
        public virtual IDataAdapterCommand <long> CreateSelectInstanceKeyCommand(IObjectId instance)
        {
            QueryBuilder        queryBuilder   = CreateQueryBuilder( );
            TableKey            sourceTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            SingleValueMatching sopUIDMatching = new SingleValueMatching( );


            queryBuilder.ProcessColumn(sourceTable, sourceTable.ModelKeyColumns[0], sopUIDMatching, new string[] { instance.SOPInstanceUID });


            return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(sourceTable)),
                                                        sourceTable.Name,
                                                        sourceTable.KeyColumn.Name));
        }
Example #5
0
        public virtual IDataAdapterCommand <long> CreateSelectInstanceKeyCommand(IObjectId instance)
        {
            QueryBuilder queryBuilder  = CreateQueryBuilder( );
            TableKey     studyTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey     seriesTable   = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.SeriesTableName);
            TableKey     instanceTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);


            ProcessSelectObjectInstance(instance, queryBuilder, instanceTable, instanceTable);
            ProcessSelectSeries(instance, queryBuilder, seriesTable, instanceTable);
            ProcessSelectStudy(instance, queryBuilder, studyTable, seriesTable);

            return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(instanceTable)),
                                                        instanceTable.Name,
                                                        instanceTable.KeyColumn.Name));
        }
Example #6
0
        public ResultSetQueryCommand <InstanceMetadata> CreateGetMetadataCommand(IStudyId study)
        {
            TableKey     studyTable     = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey     sourceTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            QueryBuilder queryBuilder   = CreateQueryBuilder( );
            ColumnInfo   metaDataColumn = SchemaProvider.GetColumn(sourceTable.Name,
                                                                   StorageDbSchemaProvider.MetadataTable.MetadataColumn);

            ProcessSelectStudy(study, queryBuilder, studyTable, sourceTable);

            queryBuilder.ProcessColumn(sourceTable, metaDataColumn, null, null);

            return(new ResultSetQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(sourceTable)),
                                                                 sourceTable,
                                                                 new string [] { metaDataColumn.ToString( ) },
                                                                 CreateMetadata));
        }
        public ResultSetQueryCommand <InstanceMetadata> CreateGetMetadataCommand(ISeriesId series)
        {
            TableKey            studyTable     = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey            seriesTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.SeriesTableName);
            TableKey            sourceTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            QueryBuilder        queryBuilder   = CreateQueryBuilder( );
            SingleValueMatching uidMatching    = new SingleValueMatching( );
            ColumnInfo          metadataColumn = SchemaProvider.GetColumn(sourceTable.Name,
                                                                          StorageDbSchemaProvider.MetadataTable.MetadataColumn);

            queryBuilder.ProcessColumn(sourceTable, seriesTable.ModelKeyColumns[0], uidMatching, new string[] { series.SeriesInstanceUID });
            queryBuilder.ProcessColumn(sourceTable, studyTable.ModelKeyColumns[0], uidMatching, new string[] { series.StudyInstanceUID });
            queryBuilder.ProcessColumn(sourceTable, metadataColumn);

            return(new ResultSetQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(sourceTable)),
                                                                 sourceTable,
                                                                 new string [] { metadataColumn.ToString( ) },
                                                                 CreateMetadata));
        }
Example #8
0
        public SingleResultQueryCommand <InstanceMetadata> CreateGetMetadataCommand(IObjectId instance)
        {
            TableKey     studyTable     = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey     seriesTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.SeriesTableName);
            TableKey     instanceTable  = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            QueryBuilder queryBuilder   = CreateQueryBuilder( );
            ColumnInfo   metadataColumn = SchemaProvider.GetColumn(instanceTable.Name,
                                                                   StorageDbSchemaProvider.MetadataTable.MetadataColumn);

            ProcessSelectStudy(instance, queryBuilder, studyTable, instanceTable);
            ProcessSelectSeries(instance, queryBuilder, seriesTable, instanceTable);
            ProcessSelectObjectInstance(instance, queryBuilder, instanceTable, instanceTable);

            queryBuilder.ProcessColumn(instanceTable, metadataColumn);

            return(new SingleResultQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(instanceTable)),
                                                                    instanceTable,
                                                                    metadataColumn.ToString( ),
                                                                    CreateMetadata));
        }
Example #9
0
        public virtual string Sort(QueryBuilder queryBuilder, IQueryOptions options, TableKey queryLevelTable)
        {
            IEnumerable <ColumnInfo> orderByColumns = null;


            Direction = SortingDirection.ASC;

            if (queryLevelTable == StorageDbSchemaProvider.StudyTableName)
            {
                var studyTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);

                orderByColumns = new ColumnInfo [] { studyTable.KeyColumn };

                Direction = SortingDirection.DESC;
            }
            else if (queryLevelTable == StorageDbSchemaProvider.SeriesTableName)
            {
                orderByColumns = SchemaProvider.GetColumnInfo((uint)DicomTag.SeriesNumber);
            }

            if (queryLevelTable == StorageDbSchemaProvider.ObjectInstanceTableName)
            {
                orderByColumns = SchemaProvider.GetColumnInfo((uint)DicomTag.InstanceNumber);
            }


            if (null != orderByColumns)
            {
                SortBy = string.Join(",", orderByColumns.Select(column => (string)column));

                foreach (var column in orderByColumns)
                {
                    if (!queryBuilder.ProcessedColumns.ContainsKey(queryLevelTable) ||
                        (queryBuilder.ProcessedColumns.ContainsKey(queryLevelTable) &&
                         !queryBuilder.ProcessedColumns[queryLevelTable].Contains(column)))
                    {
                        queryBuilder.ProcessColumn(queryLevelTable, column);
                    }
                }

                string queryText = queryBuilder.GetQueryText(queryLevelTable, options);


                if (ApplyPagination && CanPaginate(queryBuilder, options, queryLevelTable))
                {
                    CountColumn = "TotalRows";

                    return(string.Format(Sorting_Template,
                                         queryText,
                                         CountColumn,
                                         string.Format(OrderBy_Template, SortBy, GetDirection()),
                                         string.Format(Pagination_Template, options.Offset, options.Limit)));
                }
                else
                {
                    return(queryText + string.Format(OrderBy_Template,
                                                     SortBy,
                                                     GetDirection( )));
                }
            }
            else
            {
                return(queryBuilder.GetQueryText(queryLevelTable, options));
            }
        }