private void form_SetInputColumn(object sender, SetInputColumnArgs args) { Debug.Assert(args.VirtualColumn != null, "Invalid arguments passed from the UI"); this.ClearErrors(); try { // Grab the used input collection. This component can only have one... IDTSInput input = this.ComponentMetadata.InputCollection[0]; // Get the virtual column from the args... IDTSVirtualInputColumn virtualInputColumn = args.VirtualColumn.Tag as IDTSVirtualInputColumn; if (virtualInputColumn == null) { throw new ApplicationException(Properties.Resources.UIisInconsistentState); } // Get the lineageId, so we can use it to enable this column as an input column... int lineageId = virtualInputColumn.LineageID; IDTSInputColumn inputColumn = this.DesigntimeComponent.SetUsageType(input.ID, this.VirtualInput, lineageId, DTSUsageType.UT_READONLY); // return the new column back to the GUI to stick into a Tag... args.GeneratedColumns.InputColumn = new DataFlowElement(inputColumn.Name, inputColumn); } catch (Exception ex) { this.ReportErrors(ex); args.CancelAction = true; } }
public DerivedColumn AddDerivedColumn(DerivedColumnItem derivedColumnItem) { if (!derivedColumnItem.IsReplacingColumn) { Pipe.IDTSOutputColumn100 col = SSISDefaultOutput.OutputColumnCollection.New(); col.Name = derivedColumnItem.Name; col.SetDataTypeProperties((Wrapper.DataType)derivedColumnItem.DataType, derivedColumnItem.Length, derivedColumnItem.Precision, derivedColumnItem.Scale, derivedColumnItem.CodePage); col.ExternalMetadataColumnID = 0; col.ErrorRowDisposition = Pipe.DTSRowDisposition.RD_FailComponent; col.TruncationRowDisposition = Pipe.DTSRowDisposition.RD_FailComponent; Pipe.IDTSCustomProperty100 propEx = col.CustomPropertyCollection.New(); propEx.Name = "Expression"; propEx.Value = derivedColumnItem.Expression; Pipe.IDTSCustomProperty100 propFex = col.CustomPropertyCollection.New(); propFex.Name = "FriendlyExpression"; propFex.Value = derivedColumnItem.Expression; } else { Pipe.IDTSInputColumn100 col = base.FindSSISInputColumn(derivedColumnItem.ReplaceColumnName); col.ExternalMetadataColumnID = 0; col.ErrorRowDisposition = Pipe.DTSRowDisposition.RD_FailComponent; col.TruncationRowDisposition = Pipe.DTSRowDisposition.RD_FailComponent; Pipe.IDTSCustomProperty100 propEx = col.CustomPropertyCollection["Expression"]; propEx.Value = derivedColumnItem.Expression; Pipe.IDTSCustomProperty100 propFex = col.CustomPropertyCollection["FriendlyExpression"]; propFex.Value = derivedColumnItem.Expression; } return(this); }
/// <summary> /// Creates a new Input Column /// </summary> /// <param name="inputID"></param> /// <param name="virtualInput"></param> /// <param name="lineageID"></param> /// <param name="usageType"></param> /// <returns></returns> public override IDTSInputColumn SetUsageType(int inputID, IDTSVirtualInput virtualInput, int lineageID, DTSUsageType usageType) { DTSUsageType uType = usageType == DTSUsageType.UT_READWRITE ? DTSUsageType.UT_READONLY : usageType; IDTSInputColumn col = base.SetUsageType(inputID, virtualInput, lineageID, uType); return(col); }
public void SelectLookupInputColumn(System.Windows.Forms.CheckedListBox clbInputColumns, System.Windows.Forms.ListBox lbSelectedItems, int checkedIndex, System.Windows.Forms.CheckState state, int nullColumnLineageId) { FormInputColumn icol = clbInputColumns.Items[checkedIndex] as FormInputColumn; IDTSInput input = ComponentMetadata.InputCollection[0]; if (icol != null) { if (state == CheckState.Checked) { DesignTimeComponent.SetUsageType(input.ID, VirtualInput, icol.LineageID, DTSUsageType.UT_READONLY); IDTSInputColumn inputCol = input.InputColumnCollection.GetInputColumnByLineageID(icol.LineageID); IDTSCustomProperty keyCol = inputCol.CustomPropertyCollection[Resources.LookupErrorAggIsKeyColumnName]; keyCol.Value = true; icol.DTSInputColumn = inputCol; if (lbSelectedItems != null && !lbSelectedItems.Items.Contains(icol)) { int sortOrder = 0; if (lbSelectedItems.Items.Count > 0) { FormInputColumn lastCol = lbSelectedItems.Items[lbSelectedItems.Items.Count - 1] as FormInputColumn; sortOrder = lastCol.SortOrder; } icol.SortOrder = sortOrder + 1; lbSelectedItems.Items.Add(icol); } } else { bool isInput = false; if (icol.DTSInputColumn != null) { IDTSCustomProperty prop = icol.DTSInputColumn.CustomPropertyCollection[Resources.LookupErrorAggIsNullColumnName]; isInput = (bool)prop.Value; IDTSCustomProperty keyCol = icol.DTSInputColumn.CustomPropertyCollection[Resources.LookupErrorAggIsKeyColumnName]; keyCol.Value = false; } if (!isInput) { DesignTimeComponent.SetUsageType(input.ID, VirtualInput, icol.LineageID, DTSUsageType.UT_IGNORED); icol.DTSInputColumn = null; } if (lbSelectedItems != null && lbSelectedItems.Items.Contains(icol)) { lbSelectedItems.Items.Remove(icol); } } } }
/// <summary> /// Selexts an InputColumn (to become available in the input buffer) /// </summary> /// <param name="lineageID">LineageID of the InputColumn</param> /// <param name="isSelected">Selection Status of the Column</param> public IDTSInputColumn SelectInputColumn(int lineageID, bool selected) { IDTSInputColumn icol = null; if (Input != null) { DTSUsageType usageType = selected ? DTSUsageType.UT_READONLY : DTSUsageType.UT_IGNORED; icol = DesignTimeComponent.SetUsageType(Input.ID, VirtualInput, lineageID, usageType); } return(icol); }
/// <summary> /// Gets InputColumns of Input at selected inde of InputCollection encapsulated in the FormInputColumn class /// </summary> /// <param name="index">Index of the Input to get InputColumns</param> /// <returns>List of FormInputColumn</returns> public virtual List <FormInputColumn> GetFormInputColumns(int index) { List <FormInputColumn> inputCols = new List <FormInputColumn>(); IDTSInput input = GetInput(index); IDTSVirtualInput vInput = GetVirtualInput(index); if (input != null && VirtualInput != null) { for (int i = 0; i < VirtualInput.VirtualInputColumnCollection.Count; i++) //foreach (IDTSVirtualInputColumn vcol in VirtualInput.VirtualInputColumnCollection) { IDTSVirtualInputColumn vcol = VirtualInput.VirtualInputColumnCollection[i]; FormInputColumn icol = new FormInputColumn(vcol, i); if (vcol.UsageType != DTSUsageType.UT_IGNORED) { IDTSInputColumn inputCol = input.InputColumnCollection.GetInputColumnByLineageID(vcol.LineageID); icol.DTSInputColumn = inputCol; } bool isValidForInput = CheckColumnForInputValidity(vInput, input, icol); if (isValidForInput) { inputCols.Add(icol); } } inputCols.Sort((a, b) => a.Name.CompareTo(b.Name)); for (int i = 0; i < inputCols.Count; i++) { if (i >= 0 && i < inputCols.Count - 1 && inputCols[i].Name == inputCols[i + 1].Name) { inputCols[i].DisplayName = string.Format("{0}.{1}", inputCols[i].SourceComponent, inputCols[i].Name); } else if (i > 0 && i < inputCols.Count && inputCols[i].Name == inputCols[i - 1].Name) { inputCols[i].DisplayName = string.Format("{0}.{1}", inputCols[i].SourceComponent, inputCols[i].Name); } } inputCols.Sort((a, b) => a.Index.CompareTo(b.Index)); } return(inputCols); }
private static string GetColumName(Dictionary <string, int> names, IDTSInputColumn column) { int value; if (names.TryGetValue(column.Name, out value)) { if (value > 1) { return(string.Format("{0}_{1}", column.UpstreamComponentName, column.Name)); } } return(string.Format("{0}", column.Name)); }
public Union InsertOutputColumn(OutputColumn outputColumn, List <UnionInputColumn> unionInputColumns) { Pipe.IDTSOutputColumn100 newSSISOutputColumn = Component.OutputCollection[0].OutputColumnCollection.New(); newSSISOutputColumn.Name = outputColumn.Name; newSSISOutputColumn.SetDataTypeProperties((SSIS.Wrapper.DataType)outputColumn.DataType, outputColumn.Length, outputColumn.Precision, outputColumn.Scale, outputColumn.CodePage); foreach (UnionInputColumn unionInputColumn in unionInputColumns) { base.AddReadOnlyInputColumnForInput(unionInputColumn.ColumnName, unionInputColumn.InputName); Pipe.IDTSInputColumn100 inputColumn = base.FindSSISInputColumn(unionInputColumn.ColumnName, unionInputColumn.InputName); inputColumn.CustomPropertyCollection[0].Value = newSSISOutputColumn.LineageID; } return(this); }
public Lookup AddLookupColumn(LookupColumn lookupItem) { Refresh(); if (!lookupItem.IsReplacingOutput) { Pipe.IDTSOutputColumn100 newColumn = ComponentWrapper.InsertOutputColumnAt(SSISDefaultOutput.ID, 0, lookupItem.OutputAlias, ""); ComponentWrapper.SetOutputColumnProperty(SSISDefaultOutput.ID, newColumn.ID, "CopyFromReferenceColumn", lookupItem.Name); } else { Pipe.IDTSVirtualInputColumn100 virtualColumn = base.FindVirtualInputColumn(lookupItem.ReplaceColumnName); Pipe.IDTSInputColumn100 inputColumn = ComponentWrapper.SetUsageType(SSISDefaultInput.ID, base.DefaultVirtualInput, virtualColumn.LineageID, Pipe.DTSUsageType.UT_READWRITE); ComponentWrapper.SetInputColumnProperty(SSISDefaultInput.ID, inputColumn.ID, "CopyFromReferenceColumn", lookupItem.Name); } return(this); }
/// <summary> /// Selects an InputColumn (to become available in the input buffer) /// </summary> /// <param name="clbInputColumns">CheckedListbox with InputColumns</param> /// <param name="lbSelectedItems">ListBox with Selected InputColumns</param> /// <param name="checkedIndex">Index of the Item being checked</param> /// <param name="state">CheckState of the item being checkd</param> public virtual void SelectInputColumn(CheckedListBox clbInputColumns, ListBox lbSelectedItems, int checkedIndex, CheckState state) { FormInputColumn icol = clbInputColumns.Items[checkedIndex] as FormInputColumn; IDTSInput input = ComponentMetadata.InputCollection[0]; if (icol != null) { if (state == CheckState.Checked) { DesignTimeComponent.SetUsageType(input.ID, VirtualInput, icol.LineageID, DTSUsageType.UT_READONLY); IDTSInputColumn inputCol = input.InputColumnCollection.GetInputColumnByLineageID(icol.LineageID); icol.DTSInputColumn = inputCol; if (lbSelectedItems != null && !lbSelectedItems.Items.Contains(icol)) { int sortOrder = 0; if (lbSelectedItems.Items.Count > 0) { FormInputColumn lastCol = lbSelectedItems.Items[lbSelectedItems.Items.Count - 1] as FormInputColumn; sortOrder = lastCol.SortOrder; } icol.SortOrder = sortOrder + 1; lbSelectedItems.Items.Add(icol); } } else { DesignTimeComponent.SetUsageType(input.ID, VirtualInput, icol.LineageID, DTSUsageType.UT_IGNORED); icol.DTSInputColumn = null; if (lbSelectedItems != null && lbSelectedItems.Items.Contains(icol)) { lbSelectedItems.Items.Remove(icol); } } } }
///// <summary> ///// Get Maximum Input Sort Order ///// </summary> ///// <returns>Maximu Sort Order of Input Columns</returns> //public static int GetMaxInputColumnsSortOrder(IDTSInput input) //{ // int maxOrder = 0; // foreach (IDTSInputColumn col in input.InputColumnCollection) // { // foreach (IDTSCustomProperty prop in col.CustomPropertyCollection) // { // if (prop.Name == Resources.InputSortOrderPropertyName) // { // int order = prop.Value != null ? (int)prop.Value : 0; // if (order > maxOrder) // maxOrder = order; // break; // } // } // } // return maxOrder; //} public static void UpdateSortOrder(IDTSInput input, int inputColumnID, int val) { IDTSInputColumn currentColumn = input.InputColumnCollection.GetObjectByID(inputColumnID); IDTSCustomProperty currentProp = currentColumn.CustomPropertyCollection[Resources.InputSortOrderPropertyName]; int currentValue = (int)currentProp.Value; foreach (IDTSInputColumn col in input.InputColumnCollection) { if (col.ID == inputColumnID) { continue; } IDTSCustomProperty prop = col.CustomPropertyCollection[Resources.InputSortOrderPropertyName]; if (prop != null && (int)prop.Value == val) { prop.Value = currentValue; //UpdateSortOrder(inputID, col.ID, val + 1); } } }
/// <summary> /// PreExecute Phase for initialization of internal runtime structures /// </summary> public override void PreExecute() { bool fireAgain = true; rowsProcessed = 0; ComponentMetaData.FireInformation(0, this.ComponentMetaData.Name, "Pre-Execute phase is beginning.", string.Empty, 0, ref fireAgain); IDTSInput input = ComponentMetaData.InputCollection[0]; inputBufferColumns = new List <InputBufferColumnInfo>(input.InputColumnCollection.Count); for (int i = 0; i < input.InputColumnCollection.Count; i++) { IDTSInputColumn column = input.InputColumnCollection[i]; inputBufferColumns.Add(new InputBufferColumnInfo(BufferManager.FindColumnByLineageID(input.Buffer, column.LineageID), column.Name, column.ID, column.LineageID, 0, column.DataType, column.Length, column.Precision, column.Scale)); } outputColumns = new List <XmlColumn>(); IDTSOutput output = ComponentMetaData.OutputCollection[0]; foreach (IDTSOutputColumn col in output.OutputColumnCollection) { SaveOptions saveOptions = SaveOptions.None; bool serializeDataType = false; bool serializeLineage = false; string sourceID = string.Empty; string sourceName = string.Empty; List <int> cols = null; foreach (IDTSCustomProperty prop in col.CustomPropertyCollection) { if (prop.Name == Resources.XmlSaveOptionPropertyName) { saveOptions = (SaveOptions)prop.Value; } else if (prop.Name == Resources.XmlSerializeDataTypeName) { serializeDataType = (bool)prop.Value; } else if (prop.Name == Resources.XmlSerializeLineageName) { serializeLineage = (bool)prop.Value; } else if (prop.Name == Resources.XmlInputColumnsPropertyname) { string colsStr = prop.Value.ToString(); var colLineages = InputColumns.ParseInputLineages(colsStr); cols = new List <int>(colLineages.Count); foreach (int lineageID in colLineages) { int idx = inputBufferColumns.FindIndex(ibci => ibci.LineageID == lineageID); cols.Add(idx); } } else if (prop.Name == Resources.XmlSourceIdPropertyName) { sourceName = prop.Value.ToString(); } else if (prop.Name == Resources.XmlSourceNamePropertyName) { sourceID = prop.Value.ToString(); } } int index = BufferManager.FindColumnByLineageID(input.Buffer, col.LineageID); outputColumns.Add(new XmlColumn(index, col.Name, col.DataType, saveOptions, serializeLineage, serializeDataType, cols, sourceID, sourceName, col.Length)); } }
private void MapInputColumn(Pipe.IDTSVirtualInputColumn100 virtualColumn, string destinationColumnName) { Pipe.IDTSInputColumn100 inputColumn = ComponentWrapper.SetUsageType(SSISDefaultInput.ID, DefaultVirtualInput, virtualColumn.LineageID, Pipe.DTSUsageType.UT_READONLY); ComponentWrapper.MapInputColumn(SSISDefaultInput.ID, inputColumn.ID, SSISDefaultInput.ExternalMetadataColumnCollection[destinationColumnName].ID); }
private void UpdateComponentData() { //Set History Looup Properties UIHelper.ComponentMetadata.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.NoMatchBehavior)].Value = _historyLookupProperties.NoMatchBehavior; UIHelper.ComponentMetadata.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.CacheType)].Value = _historyLookupProperties.CacheType; UIHelper.ComponentMetadata.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.NoMatchCacheSize)].Value = _historyLookupProperties.NoMatchCacheSize; UIHelper.ComponentMetadata.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.DefaultCacheSize)].Value = _historyLookupProperties.DefaultCacheSize; UIHelper.ComponentMetadata.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.KeyHashAlgorithm)].Value = _historyLookupProperties.KeyHashAlgorithm; switch (_historyLookupProperties.NoMatchBehavior) { case HistoryLookupTransformation.NoMatchBehavior.FailComponent: UIHelper.Input.ErrorRowDisposition = DTSRowDisposition.RD_FailComponent; UIHelper.Input.TruncationRowDisposition = DTSRowDisposition.RD_FailComponent; UIHelper.Input2.ErrorRowDisposition = DTSRowDisposition.RD_FailComponent; UIHelper.Input2.TruncationRowDisposition = DTSRowDisposition.RD_FailComponent; UIHelper.ComponentMetadata.UsesDispositions = false; break; case HistoryLookupTransformation.NoMatchBehavior.RedirectToErrorOutput: UIHelper.Input.ErrorRowDisposition = DTSRowDisposition.RD_RedirectRow; UIHelper.Input.TruncationRowDisposition = DTSRowDisposition.RD_RedirectRow; UIHelper.Input2.ErrorRowDisposition = DTSRowDisposition.RD_RedirectRow; UIHelper.Input2.TruncationRowDisposition = DTSRowDisposition.RD_RedirectRow; UIHelper.ComponentMetadata.UsesDispositions = true; break; case HistoryLookupTransformation.NoMatchBehavior.RedirectToNoMatchOutput: UIHelper.Input.ErrorRowDisposition = DTSRowDisposition.RD_NotUsed; UIHelper.Input.TruncationRowDisposition = DTSRowDisposition.RD_NotUsed; UIHelper.Input2.ErrorRowDisposition = DTSRowDisposition.RD_NotUsed; UIHelper.Input2.TruncationRowDisposition = DTSRowDisposition.RD_NotUsed; UIHelper.ComponentMetadata.UsesDispositions = false; break; case HistoryLookupTransformation.NoMatchBehavior.IgnoreError: UIHelper.Input.ErrorRowDisposition = DTSRowDisposition.RD_IgnoreFailure; UIHelper.Input.TruncationRowDisposition = DTSRowDisposition.RD_IgnoreFailure; UIHelper.Input2.ErrorRowDisposition = DTSRowDisposition.RD_IgnoreFailure; UIHelper.Input2.TruncationRowDisposition = DTSRowDisposition.RD_IgnoreFailure; UIHelper.ComponentMetadata.UsesDispositions = false; break; default: break; } //Lists to hold information about processed ooutput columns List <OutputColumnDetail> outputCols = new List <OutputColumnDetail>(); List <OutputColumnDetail> processedOutputCols = new List <OutputColumnDetail>(); List <int> oColsToRemove = new List <int>(); if (UIHelper.Output != null) { //Get Output Columns Detailsfrom Output Columns ListView foreach (ListViewItem lvi in lvOutputColumns.Items) { if (lvi.Checked) { outputCols.Add(new OutputColumnDetail((IDTSVirtualInputColumn)lvi.Tag, lvi.SubItems[1].Text, lvi.SubItems[1].Tag != null ? (int)lvi.SubItems[1].Tag : -1)); } } //Iterate through existing OutputColumns and try to update them foreach (IDTSOutputColumn oCol in UIHelper.Output.OutputColumnCollection) { OutputColumnDetail od = outputCols.Find(ocd => ocd.ID == oCol.ID); if (od != null) { outputCols.Remove(od); processedOutputCols.Add(od); oCol.Name = od.AliasName; oCol.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.SourceLineageID)].Value = od.VirtualInputColumn.LineageID; HistoryLookupTransformation.SetOutputColumnDataType(oCol, od.VirtualInputColumn); od.OutputLineageID = oCol.LineageID; } else { oColsToRemove.Add(oCol.ID); } } //Remove Not Existing Output Columns foreach (int id in oColsToRemove) { UIHelper.Output.OutputColumnCollection.RemoveObjectByID(id); } //Add new OutputColumns foreach (OutputColumnDetail od in outputCols) { processedOutputCols.Add(od); IDTSOutputColumn oCol = UIHelper.Output.OutputColumnCollection.New(); oCol.Name = od.AliasName; HistoryLookupTransformation.SetOutputColumnProperties(oCol); HistoryLookupTransformation.SetOutputColumnDataType(oCol, od.VirtualInputColumn); oCol.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.SourceLineageID)].Value = od.VirtualInputColumn.LineageID; od.OutputLineageID = oCol.LineageID; } } List <ColumnMappingDetail> mappings = new List <ColumnMappingDetail>(lvMappings.Items.Count); //Process DataInput if (UIHelper.VirtualInput != null) { //Iterete through mappings and store them in List for easy searching foreach (ListViewItem lvi in lvMappings.Items) { mappings.Add(new ColumnMappingDetail(((ConvertMetadataInputColumn)lvi.Tag).LineageID, ((ConvertMetadataInputColumn)lvi.SubItems[1].Tag).LineageID)); } //Iterate tghrough virtual input foreach (IDTSVirtualInputColumn vCol in UIHelper.VirtualInput.VirtualInputColumnCollection) { int lookupLineageID = 0; HistoryLookupTransformation.InputColumnUsageType usageType = HistoryLookupTransformation.InputColumnUsageType.None; //if column LineageID equalsto DataDateColumnLineageID in HistoryLookuProperties, then it was selected as Date Column if (vCol.LineageID == _historyLookupProperties.DataDateColumnLineageID) { usageType |= HistoryLookupTransformation.InputColumnUsageType.DateColumn; } //Try to lookup defined mapping ColumnMappingDetail cmd = mappings.Find(cm => cm.DataColumnLineageID == vCol.LineageID); //If mapping was found then it is lookup column if (cmd != null) { usageType |= HistoryLookupTransformation.InputColumnUsageType.LookupColumn; lookupLineageID = cmd.LookupColumnLineageID; } //If usageType is None then ignore column if (usageType == HistoryLookupTransformation.InputColumnUsageType.None) { UIHelper.DesignTimeComponent.SetUsageType(UIHelper.Input.ID, UIHelper.VirtualInput, vCol.LineageID, DTSUsageType.UT_IGNORED); } else { IDTSInput inp = UIHelper.ComponentMetadata.InputCollection[0]; IDTSInputColumn iCol = UIHelper.DesignTimeComponent.SetUsageType(UIHelper.Input.ID, UIHelper.VirtualInput, vCol.LineageID, DTSUsageType.UT_READONLY); HistoryLookupTransformation.SetDataInputColumnProperties(iCol); iCol.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.InputColumnUsageType)].Value = usageType; iCol.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.LookupKeyLineageID)].Value = lookupLineageID; } } } //Process HistoryLookupInput if (UIHelper.VirtualInput2 != null) { foreach (IDTSVirtualInputColumn vCol in UIHelper.VirtualInput2.VirtualInputColumnCollection) { int oColLineageID = 0; HistoryLookupTransformation.DateComparison dateComparison = HistoryLookupTransformation.DateComparison.None; HistoryLookupTransformation.InputColumnUsageType usageType = HistoryLookupTransformation.InputColumnUsageType.None; ColumnMappingDetail mapping = mappings.Find(m => m.LookupColumnLineageID == vCol.LineageID); if (mapping != null) { usageType |= HistoryLookupTransformation.InputColumnUsageType.LookupColumn; } //If it matches LooupDateFromLineageID then it is LookupFromDate if (vCol.LineageID == _historyLookupProperties.LookupDateFromLineageID) { usageType |= HistoryLookupTransformation.InputColumnUsageType.DateFromColumn; dateComparison = (HistoryLookupTransformation.DateComparison)_historyLookupProperties.LookupDateFromComparison; } //If it matches LookupDateToLineageID then it is LookupToDate if (vCol.LineageID == _historyLookupProperties.LookupDateToLineageID) { usageType |= HistoryLookupTransformation.InputColumnUsageType.DateToColumn; dateComparison = (HistoryLookupTransformation.DateComparison)_historyLookupProperties.LookupDateToComparison; } var ocol = processedOutputCols.Find(oc => oc.VirtualInputColumn.LineageID == vCol.LineageID); if (ocol != null) { usageType |= HistoryLookupTransformation.InputColumnUsageType.OutputColumn; oColLineageID = ocol.OutputLineageID; } //Uf UsageType is None then Ignore the input column if (usageType == HistoryLookupTransformation.InputColumnUsageType.None) { UIHelper.DesignTimeComponent.SetUsageType(UIHelper.Input2.ID, UIHelper.VirtualInput2, vCol.LineageID, DTSUsageType.UT_IGNORED); } else //Set the column as Input Column { IDTSInputColumn iCol = UIHelper.DesignTimeComponent.SetUsageType(UIHelper.Input2.ID, UIHelper.VirtualInput2, vCol.LineageID, DTSUsageType.UT_READONLY); HistoryLookupTransformation.SetLookupInputColumnProperties(iCol); iCol.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.InputColumnUsageType)].Value = usageType; iCol.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.OutputColumnLineageID)].Value = oColLineageID; iCol.CustomPropertyCollection[HistoryLookupTransformation.GetPropertyname(HistoryLookupTransformation.CustomProperties.DateComparison)].Value = dateComparison; } } } }
/// <summary> /// PreExecute Phase for initialization of internal runtime structures /// </summary> public override void PreExecute() { base.PreExecute(); IDTSInput input = ComponentMetaData.InputCollection[0]; for (int i = 0; i < input.InputColumnCollection.Count; i++) { IDTSInputColumn column = input.InputColumnCollection[i]; } IDTSOutput output = ComponentMetaData.OutputCollection[0]; rowNumberColumns = new List <RowNumberColumn>(); //Iterate thorough OutputColumns collection and generate and prepare RowNumberColumns foreach (IDTSOutputColumn col in output.OutputColumnCollection) { if (col.CustomPropertyCollection.Count == 2) { RowNumberColumn numCol = new RowNumberColumn(); numCol.Index = BufferManager.FindColumnByLineageID(input.Buffer, col.LineageID); numCol.DataType = col.DataType; foreach (IDTSCustomProperty prop in col.CustomPropertyCollection) { switch (prop.Name) { case "IncrementBy": if (col.DataType == DataType.DT_DATE || col.DataType == DataType.DT_DBDATE) { string pv = prop.Value.ToString(); char ch = pv[pv.Length - 1]; switch (ch) { case 'd': numCol.IncrementType = IncrementByType.Day; break; case 'w': numCol.IncrementType = IncrementByType.Week; break; case 'm': numCol.IncrementType = IncrementByType.Month; break; case 'y': numCol.IncrementType = IncrementByType.Year; break; } numCol.IncrementBy = int.Parse(pv.Substring(0, pv.Length - 1)); } else { numCol.IncrementBy = prop.Value; numCol.IncrementType = IncrementByType.Value; } break; case "InitialValue": numCol.InitialValue = prop.Value; break; default: break; } } rowNumberColumns.Add(numCol); } } }