public IEnumerable <IDictionary <string, object> > GetObfuscatedValues(IEnumerable <IDictionary <string, object> > records) { int columnIndex; string columnName; Type columnType; object columnValue, obfusscatedValue; bool? columnIsNullable = null; IDictionary <string, object> obfuscatedRecord; IMetaColumn metaColumn; if ((object)records == null) { throw new ArgumentNullException("records"); } foreach (IDictionary <string, object> record in records) { obfuscatedRecord = new Dictionary <string, object>(); columnIndex = 0; foreach (KeyValuePair <string, object> field in record) { columnName = field.Key; columnValue = record[field.Key]; columnType = (columnValue ?? new object()).GetType(); metaColumn = new MetaColumn() { ColumnIndex = columnIndex, ColumnName = columnName, ColumnType = columnType, ColumnIsNullable = columnIsNullable, TableIndex = 0, TagContext = null }; obfusscatedValue = this.GetObfuscatedValue(metaColumn, columnValue); obfuscatedRecord.Add(columnName, obfusscatedValue); columnIndex++; } yield return(obfuscatedRecord); } }
/// <summary> /// IDTSRuntimeComponent100 (OK) /// </summary> /// <param name="inputID"> </param> /// <param name="buffer"> </param> public override void ProcessInput(int inputID, PipelineBuffer buffer) { ColumnInfo columnInfo; string columnName; Type columnType; object columnValue, obfuColumnValue; int rowIndex = 0; IMetaColumn metaColumn; if (!buffer.EndOfRowset) { while (buffer.NextRow()) { for (int columnIndex = 0; columnIndex < buffer.ColumnCount; columnIndex++) { if (columnIndex >= this.InputColumnInfos.Count) continue; columnInfo = this.InputColumnInfos[columnIndex]; columnName = columnInfo.name; columnType = InferClrTypeForSsisDataType(columnInfo.type); columnValue = buffer[columnInfo.bufferColumnIndex]; metaColumn = new MetaColumn() { ColumnIndex = columnIndex, ColumnName = columnName, ColumnType = columnType, ColumnIsNullable = null, TableIndex = 0, TagContext = null }; obfuColumnValue = this.OxymoronEngine.GetObfuscatedValue(metaColumn, columnValue); SetBufferValue(buffer, columnInfo.bufferColumnIndex, obfuColumnValue, columnInfo.type); //if (!buffer.IsNull(columnInfo.bufferColumnIndex)) //buffer[columnInfo.bufferColumnIndex] = columnValue; } //buffer.DirectRow(ComponentMetaData.OutputCollection[Constants.OUTPUT_NAME].ID); rowIndex++; } } //buffer.SetEndOfRowset(); }