public virtual void ReadData(string tableName, string columnName, object value) { var column = SchemaProvider.GetColumn(tableName, columnName); var dicomTags = column.Tags; if (column.IsKey) { CurrentData.KeyValue = value.ToString( ); } if (column.IsForeign) { string keyString = value.ToString( ); KeyToDataSetCollection resultSet = null; if (ResultSets.TryGetValue(column.Table.Parent, out resultSet)) { DicomAttributeCollection foreignDs = resultSet[keyString]; if (QueryLevel == column.Table.Name) { foreignDs.Merge(CurrentData.CurrentDs); //resultSet[keyString] = CurrentData.CurrentDs ; } else { if (column.Table.IsSequence) { DicomAttributeSQ sq = (DicomAttributeSQ)CurrentData.ForeignDs [CurrentData.ForeignTagValue]; DicomSequenceItem item = new DicomSequenceItem( ); sq.AddSequenceItem(item); CurrentData.CurrentDs.Merge(item); CurrentData.CurrentDs = item; } else if (column.Table.IsMultiValue) { CurrentData.CurrentDs = foreignDs; } else { CurrentData.CurrentDs.Merge(foreignDs); CurrentData.CurrentDs = foreignDs.Copy( ); } } } } if (null == dicomTags) { return; } ReadTags(columnName, value, dicomTags); }
public virtual void ReadData(string tableName, string columnName, object value) { var column = SchemaProvider.GetColumn(tableName, columnName); var dicomTags = column.Tags; if (column.IsKey) { CurrentData.KeyValue = value.ToString( ); } if (column.IsForeign) { string keyString = value.ToString( ); KeyToDataSetCollection resultSet = null; if (ResultSets.TryGetValue(column.Table.Parent, out resultSet)) { fo.DicomDataset foreignDs = (fo.DicomDataset)resultSet[keyString]; if (QueryLevelTableName == column.Table.Name) { foreignDs.Merge(CurrentData.CurrentDs); //resultSet[keyString] = CurrentData.CurrentDs ; } else { if (column.Table.IsSequence) { fo.DicomSequence sq = (fo.DicomSequence)CurrentData.ForeignDs.Get <fo.DicomSequence> (CurrentData.ForeignTagValue); fo.DicomDataset item = new fo.DicomDataset( ); sq.Items.Add(item); CurrentData.CurrentDs.Merge(item); CurrentData.CurrentDs = item; } else if (column.Table.IsMultiValue) { CurrentData.CurrentDs = foreignDs; } else { CurrentData.CurrentDs.Merge(foreignDs); foreignDs.CopyTo(CurrentData.CurrentDs); //TODO: check if above merge is still necessary with this new CopyTo method } } } } if (null == dicomTags) { return; } ReadTags(columnName, value, dicomTags); }
public virtual void BeginResultSet(string name) { if (!ResultSets.TryGetValue(name, out CurrentResultSet)) { CurrentResultSet = new KeyToDataSetCollection( ); } CurrentResultSetName = name; }
public virtual void BeginResultSet(string name) { CurrentResultSet = new KeyToDataSetCollection( ); CurrentResultSetName = name; }