public override void AcquireConnections(object transaction) { DTSValidationStatus validationStatus = this.ValidateConnection(DTSValidationStatus.VS_ISVALID); if (validationStatus == DTSValidationStatus.VS_ISVALID) { IDTSConnectionManager100 connectionManager = this.ComponentMetaData.RuntimeConnectionCollection[0].ConnectionManager; try { this.fileName = (string)connectionManager.AcquireConnection(transaction); } catch (Exception) { this.PostErrorAndThrow(MessageStrings.CannotGetFileNameFromConnection); } if (!System.IO.File.Exists(this.fileName)) { this.PostErrorAndThrow(MessageStrings.FileDoesNotExist(this.fileName)); } } else { throw new COMException(string.Empty, E_FAIL); } }
public void TestOutputColumn_InvalidCustomProperty() { Microsoft.SqlServer.Dts.Runtime.Package package = new Microsoft.SqlServer.Dts.Runtime.Package(); Executable exec = package.Executables.Add("STOCK:PipelineTask"); Microsoft.SqlServer.Dts.Runtime.TaskHost thMainPipe = exec as Microsoft.SqlServer.Dts.Runtime.TaskHost; MainPipe dataFlowTask = thMainPipe.InnerObject as MainPipe; ComponentEventHandler events = new ComponentEventHandler(); dataFlowTask.Events = DtsConvert.GetExtendedInterface(events as IDTSComponentEvents); IDTSComponentMetaData100 speechToText = dataFlowTask.ComponentMetaDataCollection.New(); speechToText.ComponentClassID = typeof(Martin.SQLServer.Dts.SSISSpeechToText).AssemblyQualifiedName; CManagedComponentWrapper speechToTextInstance = speechToText.Instantiate(); speechToTextInstance.ProvideComponentProperties(); speechToText.CustomPropertyCollection[Utility.SubscriptionKeyPropName].Value = "NotTheDefault"; // Before this is default setup for a clean component IDTSCustomProperty100 cp = speechToText.OutputCollection[0].OutputColumnCollection[0].CustomPropertyCollection.New(); cp.Name = "IAmInvalid"; cp.Value = "IAmInvalid"; DTSValidationStatus actual = speechToTextInstance.Validate(); DTSValidationStatus expected = DTSValidationStatus.VS_ISCORRUPT; Assert.AreEqual(expected, actual); Assert.AreEqual("[Error] SSIS Speech To Text: Output Column InputChannel has invalid property IAmInvalid.", events.errorMessages[0]); }
public void TestValidateExtraCustomProperty() { Microsoft.SqlServer.Dts.Runtime.Package package = new Microsoft.SqlServer.Dts.Runtime.Package(); Executable exec = package.Executables.Add("STOCK:PipelineTask"); Microsoft.SqlServer.Dts.Runtime.TaskHost thMainPipe = exec as Microsoft.SqlServer.Dts.Runtime.TaskHost; MainPipe dataFlowTask = thMainPipe.InnerObject as MainPipe; ComponentEventHandler events = new ComponentEventHandler(); dataFlowTask.Events = DtsConvert.GetExtendedInterface(events as IDTSComponentEvents); IDTSComponentMetaData100 speechToText = dataFlowTask.ComponentMetaDataCollection.New(); speechToText.ComponentClassID = typeof(Martin.SQLServer.Dts.SSISSpeechToText).AssemblyQualifiedName; CManagedComponentWrapper speechToTextInstance = speechToText.Instantiate(); speechToTextInstance.ProvideComponentProperties(); speechToText.CustomPropertyCollection.New(); DTSValidationStatus actual = speechToTextInstance.Validate(); DTSValidationStatus expected = DTSValidationStatus.VS_ISCORRUPT; Assert.AreEqual(expected, actual); Assert.AreEqual("[Error] SSIS Speech To Text: There is either to many or not enough custom properties.", events.errorMessages[0]); }
public void TestValidateOK() { Microsoft.SqlServer.Dts.Runtime.Package package = new Microsoft.SqlServer.Dts.Runtime.Package(); Executable exec = package.Executables.Add("STOCK:PipelineTask"); Microsoft.SqlServer.Dts.Runtime.TaskHost thMainPipe = exec as Microsoft.SqlServer.Dts.Runtime.TaskHost; MainPipe dataFlowTask = thMainPipe.InnerObject as MainPipe; ComponentEventHandler events = new ComponentEventHandler(); dataFlowTask.Events = DtsConvert.GetExtendedInterface(events as IDTSComponentEvents); IDTSComponentMetaData100 speechToText = dataFlowTask.ComponentMetaDataCollection.New(); speechToText.ComponentClassID = typeof(Martin.SQLServer.Dts.SSISSpeechToText).AssemblyQualifiedName; CManagedComponentWrapper speechToTextInstance = speechToText.Instantiate(); speechToTextInstance.ProvideComponentProperties(); speechToText.CustomPropertyCollection[Utility.SubscriptionKeyPropName].Value = "NotTheDefault"; DTSValidationStatus actual = speechToTextInstance.Validate(); DTSValidationStatus expected = DTSValidationStatus.VS_ISVALID; Assert.AreEqual(expected, actual); Assert.AreEqual(0, events.errorMessages.Count, "There are error messages"); }
public void TestOutputColumn_Timecode_Missing() { Microsoft.SqlServer.Dts.Runtime.Package package = new Microsoft.SqlServer.Dts.Runtime.Package(); Executable exec = package.Executables.Add("STOCK:PipelineTask"); Microsoft.SqlServer.Dts.Runtime.TaskHost thMainPipe = exec as Microsoft.SqlServer.Dts.Runtime.TaskHost; MainPipe dataFlowTask = thMainPipe.InnerObject as MainPipe; ComponentEventHandler events = new ComponentEventHandler(); dataFlowTask.Events = DtsConvert.GetExtendedInterface(events as IDTSComponentEvents); IDTSComponentMetaData100 speechToText = dataFlowTask.ComponentMetaDataCollection.New(); speechToText.ComponentClassID = typeof(Martin.SQLServer.Dts.SSISSpeechToText).AssemblyQualifiedName; CManagedComponentWrapper speechToTextInstance = speechToText.Instantiate(); speechToTextInstance.ProvideComponentProperties(); speechToText.CustomPropertyCollection[Utility.SubscriptionKeyPropName].Value = "NotTheDefault"; // Before this is default setup for a clean component speechToText.OutputCollection[0].OutputColumnCollection.RemoveObjectByID(speechToText.OutputCollection[0].OutputColumnCollection[Utility.OutputTimecodeColumnName].ID); IDTSOutputColumn100 tempCol = speechToText.OutputCollection[0].OutputColumnCollection.New(); tempCol.Name = "TempCol"; tempCol.SetDataTypeProperties(DataType.DT_STR, 10, 0, 0, 1252); DTSValidationStatus actual = speechToTextInstance.Validate(); DTSValidationStatus expected = DTSValidationStatus.VS_ISCORRUPT; Assert.AreEqual(expected, actual); Assert.AreEqual("[Error] SSIS Speech To Text: Required Output Column Timecode is missing.", events.errorMessages[0]); }
public DTSValidationStatus ValidateOutputProperties(IDTSCustomPropertyCollection100 customPropertyCollection, DTSValidationStatus oldStatus) { DTSValidationStatus resultStatus = oldStatus; resultStatus = ValidatePropertyExists(customPropertyCollection, rowTypeValue, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, typeOfOutput, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, masterRecordID, resultStatus); return(resultStatus); }
public DTSValidationStatus ValidateComponentProperties(IDTSCustomPropertyCollection100 customPropertyCollection, DTSValidationStatus oldStatus) { DTSValidationStatus resultStatus = oldStatus; resultStatus = ValidatePropertyExists(customPropertyCollection, isTextDelmited, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, textDelmiter, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, columnDelimiter, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, treatEmptyStringsAsNull, resultStatus); return(resultStatus); }
public override DTSValidationStatus Validate() { DTSValidationStatus status = DTSValidationStatus.VS_ISVALID; status = ValidateComponentProperties(status); status = ValidateInputs(status); status = ValidateOutputs(status); return(status); }
public DTSValidationStatus ValidatePropertyValue(string propertyName, object propertyValue, DTSValidationStatus oldStatus) { DTSValidationStatus resultStatus = oldStatus; if (this.propertyValidationTable.ContainsKey(propertyName)) { resultStatus = CommonUtils.CompareValidationValues(resultStatus, this.propertyValidationTable[propertyName](propertyName, propertyValue)); } return(resultStatus); }
public DTSValidationStatus ValidateOutputColumnProperties(IDTSCustomPropertyCollection100 customPropertyCollection, DTSValidationStatus oldStatus) { DTSValidationStatus resultStatus = oldStatus; resultStatus = ValidatePropertyExists(customPropertyCollection, usageOfColumn, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, keyOutputColumnID, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, dotNetFormatString, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, isColumnOptional, resultStatus); resultStatus = ValidatePropertyExists(customPropertyCollection, nullResultOnConversionError, resultStatus); return(resultStatus); }
public DTSValidationStatus ValidateProperties(IDTSCustomPropertyCollection100 customPropertyCollection, DTSValidationStatus oldStatus) { DTSValidationStatus resultStatus = oldStatus; foreach (IDTSCustomProperty100 property in customPropertyCollection) { resultStatus = ValidatePropertyValue(property.Name, property.Value, resultStatus); } return(resultStatus); }
protected virtual void Validate() { DTSValidationStatus dtsStatus = Instance.Validate(); // TODO: Error messages if (dtsStatus != DTSValidationStatus.VS_ISVALID) { if (dtsStatus == DTSValidationStatus.VS_NEEDSNEWMETADATA) { Instance.ReinitializeMetaData(); } } }
public static DTSValidationStatus CompareValidationValues(DTSValidationStatus oldStatus, DTSValidationStatus newStatus) { if (oldStatus == DTSValidationStatus.VS_ISVALID && newStatus == DTSValidationStatus.VS_ISVALID) { return DTSValidationStatus.VS_ISVALID; } if (oldStatus == DTSValidationStatus.VS_ISCORRUPT || newStatus == DTSValidationStatus.VS_ISCORRUPT) { return DTSValidationStatus.VS_ISCORRUPT; } else { return DTSValidationStatus.VS_ISBROKEN; } }
public static DTSValidationStatus CompareValidationValues(DTSValidationStatus oldStatus, DTSValidationStatus newStatus) { if (oldStatus == DTSValidationStatus.VS_ISVALID && newStatus == DTSValidationStatus.VS_ISVALID) { return(DTSValidationStatus.VS_ISVALID); } if (oldStatus == DTSValidationStatus.VS_ISCORRUPT || newStatus == DTSValidationStatus.VS_ISCORRUPT) { return(DTSValidationStatus.VS_ISCORRUPT); } else { return(DTSValidationStatus.VS_ISBROKEN); } }
DTSValidationStatus ValidateRowDelimiterProperty(string propertyName, object propertyValue) { DTSValidationStatus retStatus = ValidateDelimiterProperty(propertyName, propertyValue); if (retStatus == DTSValidationStatus.VS_ISVALID) { string value = (string)propertyValue; if (value.Length == 0) { this.PostError(MessageStrings.RowDelimiterEmpty); retStatus = DTSValidationStatus.VS_ISBROKEN; } } return(retStatus); }
public override DTSValidationStatus Validate() { DTSValidationStatus validation = base.Validate(); if (validation == DTSValidationStatus.VS_ISVALID) { bool cancel; //Validate input column if (ComponentMetaData.InputCollection[0].InputColumnCollection[0].DataType != DataType.DT_IMAGE) { ComponentMetaData.FireError(0, ComponentMetaData.Name, "Invalid input column data type", string.Empty, 0, out cancel); return(DTSValidationStatus.VS_ISBROKEN); } } return(validation); }
public override DTSValidationStatus Validate() { DTSValidationStatus validation = base.Validate(); if (validation == DTSValidationStatus.VS_ISVALID) { bool cancel; //Validate input column if (ComponentMetaData.InputCollection[0].InputColumnCollection[0].DataType != DataType.DT_IMAGE) { ComponentMetaData.FireError(0, ComponentMetaData.Name, "Invalid input column data type", string.Empty, 0, out cancel); return(DTSValidationStatus.VS_ISBROKEN); } //Validate input projection if (ComponentMetaData.CustomPropertyCollection["Input Spatial Reference"].Value == null || ComponentMetaData.CustomPropertyCollection["Input Spatial Reference"].Value.ToString() == string.Empty) { ComponentMetaData.FireError(0, ComponentMetaData.Name, "Input projection is empty", "", 0, out cancel); return(DTSValidationStatus.VS_ISBROKEN); } string srInput = ComponentMetaData.CustomPropertyCollection["Input Spatial Reference"].Value.ToString(); SpatialReference inSr = new SpatialReference(""); if (inSr.SetFromUserInput(srInput) != 0) { ComponentMetaData.FireError(0, ComponentMetaData.Name, "Invalid input projection", "", 0, out cancel); return(DTSValidationStatus.VS_ISBROKEN); } //Validate output projection if (ComponentMetaData.CustomPropertyCollection["Output Spatial Reference"].Value == null || ComponentMetaData.CustomPropertyCollection["Output Spatial Reference"].Value.ToString() == string.Empty) { ComponentMetaData.FireError(0, ComponentMetaData.Name, "Output projection is empty", "", 0, out cancel); return(DTSValidationStatus.VS_ISBROKEN); } string srOutput = ComponentMetaData.CustomPropertyCollection["Output Spatial Reference"].Value.ToString(); SpatialReference outSr = new SpatialReference(""); if (outSr.SetFromUserInput(srOutput) != 0) { ComponentMetaData.FireError(0, ComponentMetaData.Name, "Invalid output projection", "", 0, out cancel); return(DTSValidationStatus.VS_ISBROKEN); } } return(validation); }
/// <summary> /// Validates the component metadata /// </summary> /// <returns>Is component configuration valid?</returns> public override DTSValidationStatus Validate() { InitProperties(false); LineageMapping.UpdateInputIdProperties(ComponentMetaData, _IsagCustomProperties); DTSValidationStatus status = base.Validate(); if (status != DTSValidationStatus.VS_ISVALID) { return(status); } if (!_IsagCustomProperties.IsValid(ComponentMetaData, _events)) { return(DTSValidationStatus.VS_NEEDSNEWMETADATA); } if (!this.ComponentMetaData.AreInputColumnsValid) { return(DTSValidationStatus.VS_NEEDSNEWMETADATA); } return(DTSValidationStatus.VS_ISVALID); }
public DTSValidationStatus ValidateProperties(IDTSCustomPropertyCollection100 customPropertyCollection, DTSValidationStatus oldStatus) { DTSValidationStatus resultStatus = oldStatus; foreach (IDTSCustomProperty100 property in customPropertyCollection) { resultStatus = ValidatePropertyValue(property.Name, property.Value, resultStatus); } return resultStatus; }
public DTSValidationStatus ValidatePropertyValue(string propertyName, object propertyValue, DTSValidationStatus oldStatus) { DTSValidationStatus resultStatus = oldStatus; if (this.propertyValidationTable.ContainsKey(propertyName)) { resultStatus = CommonUtils.CompareValidationValues(resultStatus, this.propertyValidationTable[propertyName](propertyName, propertyValue)); } return resultStatus; }
private DTSValidationStatus ValidateInputs(DTSValidationStatus oldStatus) { if (this.ComponentMetaData.InputCollection.Count > 0) { this.PostError(MessageStrings.NotExpectedInputs); return DTSValidationStatus.VS_ISCORRUPT; } else { return oldStatus; } }
private DTSValidationStatus ValidateOutputs(DTSValidationStatus oldStatus) { DTSValidationStatus returnStatus = oldStatus; if (this.ComponentMetaData.OutputCollection.Count != 2) { this.PostError(MessageStrings.UnexpectedNumberOfOutputs); returnStatus = DTSValidationStatus.VS_ISCORRUPT; } else { IDTSOutputCollection100 outputCollection = this.ComponentMetaData.OutputCollection; IDTSOutput100 firstOutput = outputCollection[0]; IDTSOutput100 secondOutput = outputCollection[1]; if (secondOutput.IsErrorOut) { returnStatus = ValidateRegularOutput(firstOutput, returnStatus); returnStatus = ValidateErrorOutput(secondOutput, returnStatus); } else { returnStatus = ValidateRegularOutput(secondOutput, returnStatus); returnStatus = ValidateErrorOutput(firstOutput, returnStatus); } } return returnStatus; }
private DTSValidationStatus ValidateRegularOutput(IDTSOutput100 output, DTSValidationStatus oldStatus) { DTSValidationStatus returnStatus = oldStatus; IDTSOutputColumnCollection100 outputColumnCollection = output.OutputColumnCollection; if (outputColumnCollection.Count == 0) { this.PostError(MessageStrings.NoOutputColumns); if (returnStatus != DTSValidationStatus.VS_ISCORRUPT) { returnStatus = DTSValidationStatus.VS_ISBROKEN; } } else { returnStatus = ValidateOutputColumns(outputColumnCollection, returnStatus); } return returnStatus; }
private DTSValidationStatus ValidateErrorOutput(IDTSOutput100 errorOutput, DTSValidationStatus oldStatus) { DTSValidationStatus returnStatus = oldStatus; IDTSOutputColumnCollection100 outputColumnCollection = errorOutput.OutputColumnCollection; if (outputColumnCollection.Count == 0) { this.PostError(MessageStrings.NoErrorOutputColumns); returnStatus = DTSValidationStatus.VS_ISCORRUPT; } return returnStatus; }
private DTSValidationStatus ValidateOutputColumns(IDTSOutputColumnCollection100 outputColumnCollection, DTSValidationStatus oldStatus) { DTSValidationStatus returnStatus = oldStatus; foreach (IDTSOutputColumn100 outputColumn in outputColumnCollection) { returnStatus = ValidateOutputColumn(outputColumn, returnStatus); } return returnStatus; }
private DTSValidationStatus ValidateOutputColumn(IDTSOutputColumn100 outputColumn, DTSValidationStatus returnStatus) { returnStatus = propertiesManager.ValidateProperties(outputColumn.CustomPropertyCollection, returnStatus); if (returnStatus != DTSValidationStatus.VS_ISCORRUPT) { DTSValidationStatus newValidationStatus = ValidateSupportedDataTypes(outputColumn.DataType); returnStatus = CommonUtils.CompareValidationValues(returnStatus, newValidationStatus); } return returnStatus; }
private DTSValidationStatus ValidateConnection(DTSValidationStatus oldStatus) { if (this.ComponentMetaData.RuntimeConnectionCollection.Count != 1) { this.PostError(MessageStrings.InvalidConnectionReference(FileConnectionName)); return DTSValidationStatus.VS_ISCORRUPT; } else { IDTSRuntimeConnection100 connection = this.ComponentMetaData.RuntimeConnectionCollection[0]; if (string.Compare(connection.Name, FileConnectionName, StringComparison.OrdinalIgnoreCase) != 0) { this.PostError(MessageStrings.InvalidConnectionReference(FileConnectionName)); return DTSValidationStatus.VS_ISCORRUPT; } } return oldStatus; }
private DTSValidationStatus ValidatePropertyExists(IDTSCustomPropertyCollection100 customPropertyCollection, string propertyName, DTSValidationStatus oldStatus) { foreach (IDTSCustomProperty100 property in customPropertyCollection) { if (property.Name == propertyName) { return(Utilities.CompareValidationValues(oldStatus, DTSValidationStatus.VS_ISVALID)); } } this.PostError(MessageStrings.MissingProperty(propertyName)); return(Utilities.CompareValidationValues(oldStatus, DTSValidationStatus.VS_ISCORRUPT)); }
private DTSValidationStatus ValidateComponentProperties(DTSValidationStatus oldStatus) { return this.propertiesManager.ValidateProperties(this.ComponentMetaData.CustomPropertyCollection, oldStatus); }
private DTSValidationStatus promoteStatus(ref DTSValidationStatus currentStatus, DTSValidationStatus newStatus) { // statuses are ranked in order of increasing severity, from // valid to broken to needsnewmetadata to corrupt. // bad status, if any, is result of programming error switch (currentStatus) { case DTSValidationStatus.VS_ISVALID: switch (newStatus) { case DTSValidationStatus.VS_ISBROKEN: case DTSValidationStatus.VS_ISCORRUPT: case DTSValidationStatus.VS_NEEDSNEWMETADATA: currentStatus = newStatus; break; case DTSValidationStatus.VS_ISVALID: break; default: throw new System.ApplicationException("Internal Error: A value outside the scope of the status enumeration was found."); } break; case DTSValidationStatus.VS_ISBROKEN: switch (newStatus) { case DTSValidationStatus.VS_ISCORRUPT: case DTSValidationStatus.VS_NEEDSNEWMETADATA: currentStatus = newStatus; break; case DTSValidationStatus.VS_ISVALID: case DTSValidationStatus.VS_ISBROKEN: break; default: throw new System.ApplicationException("Internal Error: A value outside the scope of the status enumeration was found."); } break; case DTSValidationStatus.VS_NEEDSNEWMETADATA: switch (newStatus) { case DTSValidationStatus.VS_ISCORRUPT: currentStatus = newStatus; break; case DTSValidationStatus.VS_ISVALID: case DTSValidationStatus.VS_ISBROKEN: case DTSValidationStatus.VS_NEEDSNEWMETADATA: break; default: throw new System.ApplicationException("Internal Error: A value outside the scope of the status enumeration was found."); } break; case DTSValidationStatus.VS_ISCORRUPT: switch (newStatus) { case DTSValidationStatus.VS_ISCORRUPT: case DTSValidationStatus.VS_ISVALID: case DTSValidationStatus.VS_ISBROKEN: case DTSValidationStatus.VS_NEEDSNEWMETADATA: break; default: throw new System.ApplicationException("Internal Error: A value outside the scope of the status enumeration was found."); } break; default: throw new System.ApplicationException("Internal Error: A value outside the scope of the status enumeration was found."); } return currentStatus; }