/// <summary>
        /// Get SSIS event type by isag event type
        /// </summary>
        /// <param name="type">idag event type</param>
        /// <returns>SSIS event type</returns>
        private static SSIS_EventType GetSSISEventType(IsagEventType type)
        {
            int n = (int)type;

            if (n >= 170 && n < 180)
            {
                return(SSIS_EventType.Error);
            }
            else if (n >= 180)
            {
                return(SSIS_EventType.Warning);
            }
            else
            {
                return(SSIS_EventType.Information);
            }
        }
        /// <summary>
        /// Log event for the given error type and log level?
        /// </summary>
        /// <param name="errorType">error type and log level</param>
        /// <returns>Log event for the given error type?</returns>
        private bool DoLog(IsagEventType errorType)
        {
            int code = (int)errorType;

            if (_logLevel == 3 || code >= 170)
            {
                return(true);
            }
            else if (_logLevel == 2 && code < 140)
            {
                return(true);
            }
            else if (_logLevel == 1 && code < 110)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        /// <summary>
        /// Fire event
        /// </summary>
        /// <param name="eventType">event type</param>
        /// <param name="description">event description</param>
        /// <param name="parameter">event parameter list</param>
        public void Fire(IsagEventType eventType, string description, string[] parameter)
        {
            if (!DoLog(eventType))
            {
                return;                    //loglevel disables logging
            }
            bool cancel = false;

            //insert parameter into description
            description = string.Format(description, parameter);

            description += " | " + DestinationTableName + " | " + CustomEventValue;

            foreach (string param in parameter)
            {
                description += " | " + param;
            }

            switch (GetSSISEventType(eventType))
            {
            case SSIS_EventType.Information:
                ComponentMetaData.FireInformation((int)eventType, ComponentMetaData.Name, description, "", 0, ref cancel);
                break;

            case SSIS_EventType.Progress:
                throw new NotImplementedException("Progress messages are not implemented");

            case SSIS_EventType.Warning:
                ComponentMetaData.FireWarning((int)eventType, ComponentMetaData.Name, description, string.Empty, 0);
                break;

            case SSIS_EventType.Error:
                ComponentMetaData.FireError((int)eventType, ComponentMetaData.Name, description, string.Empty, 0, out cancel);
                break;

            default:
                ComponentMetaData.FireError((int)eventType, ComponentMetaData.Name, description, string.Empty, 0, out cancel);
                break;
            }
        }
 /// <summary>
 /// Fire event
 /// </summary>
 /// <param name="eventType">event type</param>
 /// <param name="description">event description</param>
 /// <param name="parameter">event parameter</param>
 public void Fire(IsagEventType eventType, string description, string parameter)
 {
     Fire(eventType, description, new string[] { parameter });
 }
 /// <summary>
 /// Fire event
 /// </summary>
 /// <param name="eventType">event type</param>
 /// <param name="description">event description</param>
 public void Fire(IsagEventType eventType, string description)
 {
     Fire(eventType, description, new string[0]);
 }