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; }
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); }
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); }
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; }