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