public EtlSession InvokePackage(EtlPackage package, EtlVariableAssignment[] assignments, string parentSessionId)
            {
                if (package == null)
                {
                    throw new ArgumentNullException("package");
                }

                if (assignments == null)
                {
                    assignments = new EtlVariableAssignment[0];
                }

                var session = InvokePackageCore(package, assignments, parentSessionId);
                return session;
            }
Esempio n. 2
0
            public EtlSession InvokePackage(EtlPackage package, EtlVariableAssignment[] assignments, string parentSessionId)
            {
                if (package == null)
                {
                    throw new ArgumentNullException("package");
                }

                if (assignments == null)
                {
                    assignments = new EtlVariableAssignment[0];
                }

                var session = InvokePackageCore(package, assignments, parentSessionId);

                return(session);
            }
Esempio n. 3
0
            private EtlVariable AssignVariable(EtlVariableAssignment assignment, bool initializing)
            {
                if (assignment == null)
                {
                    throw new ArgumentNullException("assignment");
                }

                if (assignment.Name == null || assignment.Name.Trim() == "")
                {
                    throw new InvalidOperationException(string.Format(Properties.Resources.VariableNameCannotBeEmpty));
                }

                var variableIndex = FindVariableIndex(assignment.Name);

                if (variableIndex < 0)
                {
                    throw new InvalidOperationException(string.Format(Properties.Resources.VariableNotFound, assignment.Name));
                }

                var variable = _variables[variableIndex];

                if (variable.Modifier == EtlVariableModifier.Bound)
                {
                    throw new InvalidOperationException(string.Format(Properties.Resources.CannotAssignBoundVariable, variable.Name));
                }
                else if (variable.Modifier == EtlVariableModifier.Input && !initializing)
                {
                    throw new InvalidOperationException(string.Format(Properties.Resources.CannotAssignInputVariable, variable.Name));
                }

                var newVariable = (EtlVariable)variable.Clone();

                newVariable.Value         = assignment.Value;
                newVariable.DateTime      = DateTime.Now;
                newVariable.UtcDateTime   = DateTime.Now.ToUniversalTime();
                _variables[variableIndex] = newVariable;

                return(newVariable);
            }
Esempio n. 4
0
 public EtlVariable AssignVariable(EtlVariableAssignment assignment)
 {
     return(AssignVariable(assignment, false));
 }
 protected EtlVariableAssignment(EtlVariableAssignment obj)
 {
     this.Name  = obj.Name;
     this.Value = obj.Value;
 }
 public EtlSession Invoke(IEtlLogger[] loggers, EtlVariableAssignment[] variables, string parentSessionId)
 {
     var logger = JoinLoggers(loggers);
     return Invoke(logger, variables, parentSessionId);
 }
 public EtlSession Invoke(IEtlLogger logger, EtlVariableAssignment[] variables, string parentSessionId)
 {
     var invoker = new _Invoker(logger);
     var session = invoker.InvokePackage(this, variables, parentSessionId);
     return session;
 }
 public EtlSession Invoke(IEtlLogger[] loggers, EtlVariableAssignment[] variables)
 {
     return Invoke(loggers, variables, null);
 }
 public EtlSession InvokePackage(EtlPackage package, EtlVariableAssignment[] assignments)
 {
     return InvokePackage(package, assignments, GetCurrentUserName());
 }
            private EtlSession InvokePackageCore(EtlPackage package, EtlVariableAssignment[] assignments, string parentSessionId)
            {
                var session = new EtlSession
                {
                    EtlSessionId = Guid.NewGuid().ToString(),
                    EtlPackageId = package.Id,
                    EtlPackageName = package.Name,
                    ParentEtlSessionId = parentSessionId,
                    Status = EtlStatus.Started,
                    UserName = GetCurrentUserName(),
                };

                session.StartDateTime = DateTime.Now;
                session.StartUtcDateTime = session.StartDateTime.ToUniversalTime();

                _logger.LogEtlSessionStart(session);
                _logger.LogEtlMessage
                (
                    new EtlMessage
                    {
                        EtlPackageId = session.EtlPackageId,
                        EtlSessionId = session.EtlSessionId,
                        LogDateTime = session.StartDateTime,
                        LogUtcDateTime = session.StartUtcDateTime,
                        MessageType = EtlMessageType.SessionStart,
                        Text = string.Format(Properties.Resources.SessionStarted, session.EtlSessionId, session.EtlPackageId, session.EtlPackageName)
                    }
                );

                try
                {
                    InvokePackageCatched(package, session, assignments);
                }
                catch (Exception exc)
                {
                    if (IsCriticalException(exc))
                    {
                        throw;
                    }

                    session.Status = EtlStatus.Failed;

                    var errorDateTime = DateTime.Now;
                    _logger.LogEtlMessage
                    (
                        new EtlMessage
                        {
                            EtlPackageId = session.EtlPackageId,
                            EtlSessionId = session.EtlSessionId,
                            LogDateTime = errorDateTime,
                            LogUtcDateTime = errorDateTime.ToUniversalTime(),
                            MessageType = EtlMessageType.Error,
                            Text = exc.Message,
                            StackTrace = exc.StackTrace,
                        }
                    );
                }
                finally
                {
                    session.EndDateTime = DateTime.Now;
                    session.EndUtcDateTime = session.EndDateTime.Value.ToUniversalTime();

                    _logger.LogEtlMessage
                    (
                        new EtlMessage
                        {
                            EtlPackageId = session.EtlPackageId,
                            EtlSessionId = session.EtlSessionId,
                            LogDateTime = session.EndDateTime.Value,
                            LogUtcDateTime = session.EndUtcDateTime.Value,
                            MessageType = EtlMessageType.SessionEnd,
                            Text = string.Format(Properties.Resources.SessionFinished, session.EtlSessionId, session.EtlPackageId, session.EtlPackageName, session.Status)
                        }
                    );

                    _logger.LogEtlSessionEnd(session);
                }

                return session;
            }
            private void InvokePackageCatched(EtlPackage package, EtlSession session, EtlVariableAssignment[] assignments)
            {
                var buildStartDateTime = DateTime.Now;
                _logger.LogEtlMessage
                (
                    new EtlMessage
                    {
                        EtlPackageId = session.EtlPackageId,
                        EtlSessionId = session.EtlSessionId,
                        LogDateTime = buildStartDateTime,
                        LogUtcDateTime = buildStartDateTime.ToUniversalTime(),
                        MessageType = EtlMessageType.Debug,
                        Text = string.Format(Properties.Resources.VariablesInitStarted),
                    }
                );

                var context = new _Context(package, session);
                context.InitVariables(package.Variables, assignments);

                foreach (var variable in context.GetVariables())
                {
                    var escapedVariable = EscapeVariable(variable);

                    _logger.LogEtlMessage
                    (
                        new EtlMessage
                        {
                            EtlPackageId = context.EtlPackageId,
                            EtlSessionId = context.EtlSessionId,
                            LogDateTime = buildStartDateTime,
                            LogUtcDateTime = buildStartDateTime.ToUniversalTime(),
                            MessageType = EtlMessageType.Debug,
                            Text = string.Format(Properties.Resources.VariableInit, escapedVariable.Name, escapedVariable.Value),
                        }
                    );

                    if (variable.Modifier == EtlVariableModifier.Input || variable.Modifier == EtlVariableModifier.Bound)
                    {
                        _logger.LogEtlVariable(escapedVariable);
                    }
                }

                var preprocessor = new EtlPackagePreprocessor();
                package = preprocessor.PreprocessPackage(package, context.GetVariables());

                var buildEndDateTime = DateTime.Now;
                _logger.LogEtlMessage
                (
                    new EtlMessage
                    {
                        EtlPackageId = session.EtlPackageId,
                        EtlSessionId = session.EtlSessionId,
                        LogDateTime = buildEndDateTime,
                        LogUtcDateTime = buildEndDateTime.ToUniversalTime(),
                        MessageType = EtlMessageType.Debug,
                        Text = string.Format(Properties.Resources.VariablesInitFinished),
                    }
                );

                InvokePackageSteps(package, context);

                foreach (var variable in context.GetVariables())
                {
                    if (variable.Modifier == EtlVariableModifier.Output)
                    {
                        _logger.LogEtlVariable(EscapeVariable(variable));

                    }
                }

                session.Status = context.CurrentStatus;
            }
        public EtlSession InvokeEtlPackage(string etlPackageId, EtlVariableAssignment[] parameters, string parentSessionId)
        {
            foreach (var agent in _etlAgents)
            {
                var packages = agent.GetEtlPackages();
                foreach (var package in packages)
                {
                    if (String.Equals(package.Id, etlPackageId, StringComparison.InvariantCultureIgnoreCase))
                    {
                        return agent.InvokeEtlPackage(etlPackageId, parameters, parentSessionId);
                    }
                }
            }

            return null;
        }
        private static EtlVariableAssignment[] ParseParameters(string str)
        {
            if (str == null)
            {
                return new EtlVariableAssignment[0];
            }

            str = str.Trim();
            if (str == "")
            {
                return new EtlVariableAssignment[0];
            }

            if (!str.EndsWith(";"))
            {
                str = str + ";";
            }

            var parameters = new List<EtlVariableAssignment>();
            var buf = new StringBuilder();
            var isVariableName = true;
            var wasQuote = false;
            var wasEscape = false;
            var parameter = new EtlVariableAssignment();

            for (var i = 0; i < str.Length; i++)
            {
                var ch = str[i];

                if (ch == '=')
                {
                    wasEscape = false;

                    if (wasQuote)
                    {
                        buf.Append(ch);
                    }
                    else if (isVariableName)
                    {
                        parameter.Name = buf.ToString();
                        buf.Length = 0;
                        isVariableName = false;
                    }
                    else
                    {
                        throw new FormatException();
                    }
                }
                else if (ch == '\\')
                {
                    if (wasQuote && str[i + 1] == '\'')
                    {
                        wasEscape = true;
                    }
                    else
                    {
                        wasEscape = false;
                        buf.Append(ch);
                    }
                }
                else if (ch == '\'')
                {
                    if (isVariableName)
                    {
                        throw new FormatException();
                    }

                    if (wasEscape)
                    {
                        buf.Append(ch);
                    }
                    else
                    {
                        wasQuote = !wasQuote;
                    }
                }
                else if (ch == ';')
                {
                    wasEscape = false;

                    if (wasQuote)
                    {
                        buf.Append(ch);
                    }
                    else
                    {
                        if (isVariableName)
                        {
                            parameter.Name = buf.ToString();
                        }
                        else
                        {
                            parameter.Value = buf.ToString();
                        }

                        parameters.Add(parameter);
                        parameter = new EtlVariableAssignment();

                        buf.Length = 0;
                        isVariableName = true;
                    }
                }
                else
                {
                    wasEscape = false;
                    buf.Append(ch);
                }
            }

            return parameters.ToArray();
        }
 public EtlVariable AssignVariable(EtlVariableAssignment assignment)
 {
     return AssignVariable(assignment, false);
 }
            private EtlVariable AssignVariable(EtlVariableAssignment assignment, bool initializing)
            {
                if (assignment == null)
                {
                    throw new ArgumentNullException("assignment");
                }

                if (assignment.Name == null || assignment.Name.Trim() == "")
                {
                    throw new InvalidOperationException(string.Format(Properties.Resources.VariableNameCannotBeEmpty));
                }

                var variableIndex = FindVariableIndex(assignment.Name);
                if (variableIndex < 0)
                {
                    throw new InvalidOperationException(string.Format(Properties.Resources.VariableNotFound, assignment.Name));
                }

                var variable =_variables[variableIndex];

                if (variable.Modifier == EtlVariableModifier.Bound)
                {
                    throw new InvalidOperationException(string.Format(Properties.Resources.CannotAssignBoundVariable, variable.Name));
                }
                else if (variable.Modifier == EtlVariableModifier.Input && !initializing)
                {
                        throw new InvalidOperationException(string.Format(Properties.Resources.CannotAssignInputVariable, variable.Name));
                }

                var newVariable = (EtlVariable)variable.Clone();
                newVariable.Value = assignment.Value;
                newVariable.DateTime = DateTime.Now;
                newVariable.UtcDateTime = DateTime.Now.ToUniversalTime();
                _variables[variableIndex] = newVariable;

                return newVariable;
            }
 protected EtlVariableAssignment(EtlVariableAssignment obj)
 {
     this.Name = obj.Name;
     this.Value = obj.Value;
 }