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 ; }
protected virtual QueryBuilder BuildQuery ( IEnumerable <IMatchingCondition> conditions, IQueryOptions options, TableKey queryLeveTable ) { QueryBuilder queryBuilder = CreateQueryBuilder( ); if (null != conditions && conditions.Count( ) > 0) { foreach (var condition in conditions) { if (condition.VR == fo.DicomVR.PN) { List <PersonNameData> pnValues = new List <PersonNameData> ( ); pnValues = condition.GetPNValues( ); foreach (var values in pnValues) { int index = -1; string[] stringValues = values.ToArray( ); List <string> pnConditions = new List <string> ( ); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { var columnValues = new string [] { stringValues[++index] }; queryBuilder.ProcessColumn(queryLeveTable, column, condition, columnValues); } } } else { IList <string> columnValues = GetValues(condition); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { queryBuilder.ProcessColumn(queryLeveTable, column, condition, columnValues); } } } } else { foreach (var column in SchemaProvider.GetTableInfo(queryLeveTable).Columns) { queryBuilder.ProcessColumn(queryLeveTable, column); } } return(queryBuilder); }
protected virtual QueryBuilder BuildQuery ( IEnumerable <IMatchingCondition> conditions, IQueryOptions options, string queryLevel ) { QueryBuilder queryBuilder = CreateQueryBuilder( ); TableKey sourceTable = SchemaProvider.GetTableInfo(SchemaProvider.GetQueryTable(queryLevel)); if (sourceTable == null) { throw new ArgumentException("querylevel not supported"); } if (null != conditions) { foreach (var condition in conditions) { if (condition.VR == fo.DicomVR.PN) { List <PersonNameData> pnValues = new List <PersonNameData> ( ); pnValues = condition.GetPNValues( ); foreach (var values in pnValues) { int index = -1; string[] stringValues = values.ToArray( ); List <string> pnConditions = new List <string> ( ); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { var columnValues = new string [] { stringValues[++index] }; queryBuilder.ProcessColumn(sourceTable, column, condition, columnValues); } } } else { IList <string> columnValues = GetValues(condition); foreach (var column in SchemaProvider.GetColumnInfo(condition.KeyTag)) { queryBuilder.ProcessColumn(sourceTable, column, condition, columnValues); } } } } return(queryBuilder); }
public virtual IDataAdapterCommand <long> CreateSelectSeriesKeyCommand(ISeriesId series) { TableKey studyTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName); TableKey seriesTable = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.SeriesTableName); QueryBuilder queryBuilder = CreateQueryBuilder( ); SingleValueMatching uidMatching = new SingleValueMatching( ); queryBuilder.ProcessColumn(seriesTable, studyTable.ModelKeyColumns [0], uidMatching, new string[] { series.StudyInstanceUID }); queryBuilder.ProcessColumn(seriesTable, seriesTable.ModelKeyColumns [0], uidMatching, new string[] { series.SeriesInstanceUID }); return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(seriesTable)), seriesTable.Name, seriesTable.KeyColumn.Name)); }
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)); }
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)); }
protected virtual void ProcessSelectObjectInstance ( IObjectId objectInstance, QueryBuilder queryBuilder, TableKey objectInstanceTable, TableKey sourceTable ) { SingleValueMatching uidMatching = new SingleValueMatching( ); queryBuilder.ProcessColumn(sourceTable, objectInstanceTable.ModelKeyColumns [0], uidMatching, new string[] { objectInstance.SOPInstanceUID }); }
protected virtual void ProcessSelectSeries ( ISeriesId series, QueryBuilder queryBuilder, TableKey seriesTable, TableKey sourceTable ) { SingleValueMatching uidMatching = new SingleValueMatching( ); queryBuilder.ProcessColumn(sourceTable, seriesTable.ModelKeyColumns [0], uidMatching, new string[] { series.SeriesInstanceUID }); }
protected virtual void ProcessSelectStudy ( IStudyId study, QueryBuilder queryBuilder, TableKey studyTable, TableKey sourceTable ) { SingleValueMatching uidMatching = new SingleValueMatching( ); queryBuilder.ProcessColumn(sourceTable, studyTable.ModelKeyColumns [0], uidMatching, new string[] { study.StudyInstanceUID }); }
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 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)); }
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)); } }