/// <summary> /// Recupera a mensagem de falha de forma recursiva. /// </summary> /// <param name="result"></param> /// <param name="message"></param> /// <returns></returns> private static bool GetRecursiveFailureMessage(PersistenceActionResult result, StringBuilder message) { if (!string.IsNullOrEmpty(result.FailureMessage)) { message.AppendFormat("Action: {0} --> ", result.ActionId).AppendLine(result.FailureMessage); } if (result.BeforeActions != null && result.BeforeActions.Length > 0) { foreach (var i in result.BeforeActions) { if (GetRecursiveFailureMessage(i, message)) { return(true); } } } if (result.AfterActions != null && result.AfterActions.Length > 0) { foreach (var i in result.AfterActions) { if (GetRecursiveFailureMessage(i, message)) { return(true); } } } return(!string.IsNullOrEmpty(result.FailureMessage)); }
/// <summary> /// Construtor padrão. /// </summary> /// <param name="action">Instancia da ação.</param> /// <param name="result">Resultado.</param> /// <param name="beforeActions">Ações executadas anteriormente.</param> /// <param name="afterActions">Ações executadas posteriomente.</param> /// <param name="alternativeActions">Ações alternativas executadas.</param> public ExecuteAction(PersistenceAction action, PersistenceActionResult result, ExecuteAction[] beforeActions, ExecuteAction[] afterActions, ExecuteAction[] alternativeActions) { action.Require("action").NotNull(); _action = action; _result = result; _beforeActions = beforeActions; _afterActions = afterActions; _alternativeActions = alternativeActions; }
/// <summary> /// Desserializa o objeto. /// </summary> /// <param name="reader"></param> public void Deserialize(Serialization.IO.CompactReader reader) { ActionId = reader.ReadInt32(); Success = reader.ReadBoolean(); AffectedRows = reader.ReadInt32(); RowVersion = reader.ReadInt64(); FailureMessage = reader.ReadString(); if (reader.ReadBoolean()) { Result = reader.ReadObject(); } var parameters = new List <PersistenceParameter>(); while (reader.ReadBoolean()) { PersistenceParameter parameter = new PersistenceParameter(); ((ICompactSerializable)parameter).Deserialize(reader); parameters.Add(parameter); } Parameters = parameters.ToArray(); var actions = new List <PersistenceActionResult>(); while (reader.ReadBoolean()) { PersistenceActionResult action = new PersistenceActionResult(); ((ICompactSerializable)action).Deserialize(reader); actions.Add(action); } AlternativeActions = actions.ToArray(); var beforeActions = new List <PersistenceActionResult>(); while (reader.ReadBoolean()) { PersistenceActionResult action = new PersistenceActionResult(); ((ICompactSerializable)action).Deserialize(reader); beforeActions.Add(action); } BeforeActions = beforeActions.ToArray(); var afterActions = new List <PersistenceActionResult>(); while (reader.ReadBoolean()) { PersistenceActionResult action = new PersistenceActionResult(); ((ICompactSerializable)action).Deserialize(reader); afterActions.Add(action); } AfterActions = afterActions.ToArray(); }
void System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader reader) { reader.MoveToAttribute("ActionId"); ActionId = reader.ReadContentAsInt(); reader.MoveToAttribute("Success"); Success = bool.Parse(reader.ReadContentAsString()); reader.MoveToAttribute("AffectedRows"); AffectedRows = reader.ReadContentAsInt(); reader.MoveToAttribute("RowVersion"); RowVersion = reader.ReadContentAsLong(); reader.MoveToElement(); reader.ReadStartElement(); if (!reader.IsEmptyElement) { reader.ReadStartElement("FailureMessage"); FailureMessage = reader.ReadString(); reader.ReadEndElement(); } else { FailureMessage = null; reader.Skip(); } if (!reader.IsEmptyElement) { reader.ReadStartElement("Result"); Result = reader.ReadContentAsObject(); reader.ReadEndElement(); } else { Result = null; reader.Skip(); } if (!reader.IsEmptyElement) { reader.ReadStartElement("Parameters", Namespaces.Data); var parameters = new List <PersistenceParameter>(); while (reader.NodeType != System.Xml.XmlNodeType.EndElement) { if (reader.LocalName == "Parameter") { var parameter = new PersistenceParameter(); ((System.Xml.Serialization.IXmlSerializable)parameter).ReadXml(reader); parameters.Add(parameter); } else { reader.Skip(); } } Parameters = parameters.ToArray(); reader.ReadEndElement(); } else { reader.Skip(); } if (!reader.IsEmptyElement) { reader.ReadStartElement("AlternativeActions", Namespaces.Data); var actions = new List <PersistenceActionResult>(); while (reader.NodeType != System.Xml.XmlNodeType.EndElement) { if (reader.LocalName == "PersistenceActionResult") { var action = new PersistenceActionResult(); ((System.Xml.Serialization.IXmlSerializable)action).ReadXml(reader); actions.Add(action); } else { reader.Skip(); } } AlternativeActions = actions.ToArray(); reader.ReadEndElement(); } else { reader.Skip(); } if (!reader.IsEmptyElement) { reader.ReadStartElement("BeforeActions", Namespaces.Data); var actions = new List <PersistenceActionResult>(); while (reader.NodeType != System.Xml.XmlNodeType.EndElement) { if (reader.LocalName == "PersistenceActionResult") { var action = new PersistenceActionResult(); ((System.Xml.Serialization.IXmlSerializable)action).ReadXml(reader); actions.Add(action); } else { reader.Skip(); } } BeforeActions = actions.ToArray(); reader.ReadEndElement(); } else { reader.Skip(); } if (!reader.IsEmptyElement) { reader.ReadStartElement("AfterActions", Namespaces.Data); var actions = new List <PersistenceActionResult>(); while (reader.NodeType != System.Xml.XmlNodeType.EndElement) { if (reader.LocalName == "PersistenceActionResult") { var action = new PersistenceActionResult(); ((System.Xml.Serialization.IXmlSerializable)action).ReadXml(reader); actions.Add(action); } else { reader.Skip(); } } AfterActions = actions.ToArray(); reader.ReadEndElement(); } else { reader.Skip(); } reader.ReadEndElement(); }