/// <summary> /// Creator of the SSISOutput class. Will populate this class with all the relevant parts of an IDTSOutput100 /// </summary> /// <param name="output">The IDTSOutput100 that you wish to collect all relevant data from</param> /// <param name="bufferManager">The buffer manager, or null. This is used for the collection of column lineage into buffers.</param> public SSISOutput(IDTSOutput100 output, IDTSBufferManager100 bufferManager) { _customPropertyCollection = new Dictionary <string, SSISProperty>(); _outputColumnCollection = new List <SSISOutputColumn>(); _name = "_" + System.Text.RegularExpressions.Regex.Replace(output.Name, @"[^a-zA-Z0-9]", String.Empty); _errorRowDisposition = output.ErrorRowDisposition; // Get the Custom Properties for (int i = 0; i < output.CustomPropertyCollection.Count; i++) { SSISProperty newProperty = new SSISProperty(); newProperty.Name = output.CustomPropertyCollection[i].Name; newProperty.Value = output.CustomPropertyCollection[i].Value; _customPropertyCollection.Add(newProperty.Name, newProperty); } // Get the Columns for (int i = 0; i < output.OutputColumnCollection.Count; i++) { SSISOutputColumn newColumn = new SSISOutputColumn(output.OutputColumnCollection[i], bufferManager, output.Buffer); _outputColumnCollection.Add(newColumn); } }
public static String DynamicClassStringFromOutput(SSISOutput output, Boolean firstRowColumnNames, String rowTerminator, String columnDelimiter) { String classString = string.Empty; classString += "[DelimitedRecord(\"" + ReplaceEscapes(columnDelimiter) + "\")]\r\n"; if (firstRowColumnNames) { classString += "[IgnoreFirst(1)]\r\n"; } classString += "public sealed class " + output.Name + "\r\n"; classString += "{\r\n"; for (int i = 0; i < output.OutputColumnCollection.Count; i++) { SSISOutputColumn outputColumn = output.OutputColumnCollection[i]; if (!outputColumn.IsDerived) { String conversionString = (String)ManageProperties.GetPropertyValue(outputColumn.CustomPropertyCollection, ManageProperties.dotNetFormatString); Boolean isOptional = (Boolean)ManageProperties.GetPropertyValue(outputColumn.CustomPropertyCollection, ManageProperties.isColumnOptional); if ((i + 1 == output.OutputColumnCollection.Count) && (!String.IsNullOrEmpty(rowTerminator))) { classString += "[FieldDelimiterAttribute(\"" + ReplaceEscapes(rowTerminator) + "\")]\r\n"; } if (isOptional) { classString += "[FieldOptional()]\r\n"; } if ((Boolean)ManageProperties.GetPropertyValue(outputColumn.CustomPropertyCollection, ManageProperties.nullResultOnConversionError)) { classString += "[FieldNullOnError()]\r\n"; } switch (outputColumn.SSISDataType) { case DataType.DT_BOOL: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Boolean, \"" + conversionString + "\")]\r\n"; } classString += "public Boolean? "; break; case DataType.DT_DATE: case DataType.DT_DBDATE: case DataType.DT_DBTIME: case DataType.DT_DBTIME2: case DataType.DT_DBTIMESTAMP: case DataType.DT_DBTIMESTAMP2: case DataType.DT_DBTIMESTAMPOFFSET: case DataType.DT_FILETIME: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Date, \"" + conversionString + "\")]\r\n"; } classString += "public DateTime? "; break; case DataType.DT_CY: case DataType.DT_DECIMAL: case DataType.DT_NUMERIC: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Decimal, \"" + conversionString + "\")]\r\n"; } classString += "public Decimal? "; break; case DataType.DT_I1: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Byte, \"" + conversionString + "\")]\r\n"; } classString += "public Byte? "; break; case DataType.DT_I2: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Int16, \"" + conversionString + "\")]\r\n"; } classString += "public Int16? "; break; case DataType.DT_I4: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Int32, \"" + conversionString + "\")]\r\n"; } classString += "public Int32? "; break; case DataType.DT_I8: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Int64, \"" + conversionString + "\")]\r\n"; } classString += "public Int64? "; break; case DataType.DT_R4: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Single, \"" + conversionString + "\")]\r\n"; } classString += "public Single? "; break; case DataType.DT_R8: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Dpuble, \"" + conversionString + "\")]\r\n"; } classString += "public Double? "; break; case DataType.DT_UI1: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.SByte, \"" + conversionString + "\")]\r\n"; } classString += "public SByte? "; break; case DataType.DT_UI2: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.UInt16, \"" + conversionString + "\")]\r\n"; } classString += "public UInt16? "; break; case DataType.DT_UI4: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.UInt32, \"" + conversionString + "\")]\r\n"; } classString += "public UInt32? "; break; case DataType.DT_UI8: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.UInt64, \"" + conversionString + "\")]\r\n"; } classString += "public UInt64? "; break; case DataType.DT_GUID: if (!String.IsNullOrEmpty(conversionString)) { classString += "[FieldConverter(ConverterKind.Guid, \"" + conversionString + "\")]\r\n"; } classString += "public Guid? "; break; case DataType.DT_STR: case DataType.DT_TEXT: case DataType.DT_NTEXT: case DataType.DT_WSTR: classString += "public String "; break; default: classString += "public String "; break; } classString += outputColumn.Name + ";\r\n"; } } classString += "}\r\n"; return(classString); }