public virtual InstallScript Read() { var result = new InstallScript(); XmlDocument doc; var scripts = new List <InstallItem>(); var manifest = new XmlDocument(); string path; manifest.Load(GetExistingStream(null)); if (manifest.DocumentElement.HasAttribute("created")) { result.Created = DateTime.Parse(manifest.DocumentElement.GetAttribute("created")); } result.Creator = manifest.DocumentElement.GetAttribute("creator"); result.Description = manifest.DocumentElement.GetAttribute("description"); if (manifest.DocumentElement.HasAttribute("modified")) { result.Modified = DateTime.Parse(manifest.DocumentElement.GetAttribute("modified")); } result.Version = manifest.DocumentElement.GetAttribute("revision"); result.Title = manifest.DocumentElement.GetAttribute("title"); if (manifest.DocumentElement.HasAttribute("website")) { result.Website = new Uri(manifest.DocumentElement.GetAttribute("website")); } foreach (var child in manifest.DocumentElement.ChildNodes.OfType <XmlElement>()) { if (child.LocalName == "Item") { scripts.Add(InstallItem.FromScript(child)); } else { path = child.GetAttribute("path"); if (!string.IsNullOrEmpty(path)) { if (path.EndsWith(".xslt", StringComparison.OrdinalIgnoreCase)) { doc = ReadReport(path); } else { doc = new XmlDocument(); doc.Load(GetExistingStream(path)); } foreach (var item in doc.DocumentElement.Elements("Item")) { scripts.Add(InstallItem.FromScript(item)); } } } } result.Lines = scripts; return(result); }
public static InstallItem FromWarning(ItemReference itemRef, string warning) { var result = new InstallItem(); result._itemRef = itemRef; result._name = warning; result._type = InstallType.Warning; return(result); }
public static InstallItem FromDependency(ItemReference itemRef) { var result = new InstallItem(); result._itemRef = itemRef; result._elem = new XmlDocument().CreateElement("Item"); result._elem.SetAttribute("type", result._itemRef.Type); if (result._itemRef.Unique.IsGuid()) { result._elem.SetAttribute("id", result._itemRef.Unique); } else { result._elem.SetAttribute("where", result._itemRef.Unique); } result._elem.SetAttribute("action", "get"); result._elem.SetAttribute("_dependency_check", "1"); result._elem.SetAttribute("_keyed_name", result._itemRef.KeyedName); result._type = InstallType.DependencyCheck; return result; }
public static InstallItem FromDependency(ItemReference itemRef) { var result = new InstallItem(); result._itemRef = itemRef; result._elem = new XmlDocument().CreateElement("Item"); result._elem.SetAttribute("type", result._itemRef.Type); if (result._itemRef.Unique.IsGuid()) { result._elem.SetAttribute("id", result._itemRef.Unique); } else { result._elem.SetAttribute("where", result._itemRef.Unique); } result._elem.SetAttribute("action", "get"); result._elem.SetAttribute("_dependency_check", "1"); result._elem.SetAttribute("_keyed_name", result._itemRef.KeyedName); result._type = InstallType.DependencyCheck; return(result); }
public static InstallItem FromWarning(ItemReference itemRef, string warning) { var result = new InstallItem(); result._itemRef = itemRef; result._name = warning; result._type = InstallType.Warning; return result; }
public static InstallItem FromScript(XmlElement elem) { var result = new InstallItem(); result._elem = elem; result._itemRef = ItemReference.FromFullItem(elem, true); if (result._itemRef.Type.IsGuid()) { result.InstalledId = result._itemRef.Type; } else { result.InstalledId = elem.Attribute("id", ""); } if (elem.HasAttribute("_dependency_check")) { result._type = InstallType.DependencyCheck; } else if (elem.HasAttribute("action")) { switch (elem.Attributes["action"].Value) { case "add": case "merge": case "create": result._type = InstallType.Create; break; case "ActivateActivity": case "AddItem": case "AddHistory": case "ApplyUpdate": case "BuildProcessReport": case "CancelWorkflow": case "checkImportedItemType": case "closeWorkflow": case "copy": case "copyAsIs": case "copyAsNew": case "delete": case "edit": case "EmailItem": case "EvaluateActivity": case "exportItemType": case "get": case "getItemAllVersions": case "getAffectedItems": case "getItemConfig": case "getItemLastVersion": case "getItemNextStates": case "getItemRelationships": case "GetItemRepeatConfig": case "getItemWhereUsed": case "GetMappedPath": case "getPermissions": case "getRelatedItem": case "GetUpdateInfo": case "instantiateWorkflow": case "lock": case "New Workflow Map": case "PromoteItem": case "purge": case "recache": case "replicate": case "resetAllItemsAccess": case "resetItemAccess": case "resetLifecycle": case "setDefaultLifecycle": case "skip": case "startWorkflow": case "unlock": case "update": case "ValidateWorkflowMap": case "version": if ((elem.Attributes["type"].Value != "Form" && elem.Attributes["type"].Value != "View") || elem.Attributes["action"].Value != "delete") result._dependencies = Enumerable.Repeat(result._itemRef, 1); result._itemRef = new ItemReference("*Script", result._itemRef.ToString() + " " + Utils.GetChecksum(Encoding.UTF8.GetBytes(elem.OuterXml))) { KeyedName = RenderAttributes(elem) }; result._type = InstallType.Script; break; default: result._dependencies = Enumerable.Repeat(new ItemReference("Method", "[Method].[name] = '" + elem.Attributes["action"].Value + "'") { KeyedName = elem.Attributes["action"].Value }, 1); result._itemRef = new ItemReference("*Script", result._itemRef.ToString() + " " + Utils.GetChecksum(Encoding.UTF8.GetBytes(elem.OuterXml))) { KeyedName = RenderAttributes(elem) }; result._type = InstallType.Script; break; } } if (elem.Attribute(XmlFlags.Attr_IsScript) == "1") { if (string.IsNullOrEmpty(result._itemRef.KeyedName)) { result._itemRef.KeyedName = RenderAttributes(elem); } result._type = InstallType.Script; } return result; }
public static InstallItem FromScript(XmlElement elem) { var result = new InstallItem(); result._elem = elem; result._itemRef = ItemReference.FromFullItem(elem, true); if (result._itemRef.Type.IsGuid()) { result.InstalledId = result._itemRef.Type; } else { result.InstalledId = elem.Attribute("id", ""); } if (elem.HasAttribute("_dependency_check")) { result._type = InstallType.DependencyCheck; } else if (elem.HasAttribute("action")) { switch (elem.Attributes["action"].Value) { case "add": case "merge": case "create": result._type = InstallType.Create; break; case "ActivateActivity": case "AddItem": case "AddHistory": case "ApplyUpdate": case "BuildProcessReport": case "CancelWorkflow": case "checkImportedItemType": case "closeWorkflow": case "copy": case "copyAsIs": case "copyAsNew": case "delete": case "edit": case "EmailItem": case "EvaluateActivity": case "exportItemType": case "get": case "getItemAllVersions": case "getAffectedItems": case "getItemConfig": case "getItemLastVersion": case "getItemNextStates": case "getItemRelationships": case "GetItemRepeatConfig": case "getItemWhereUsed": case "GetMappedPath": case "getPermissions": case "getRelatedItem": case "GetUpdateInfo": case "instantiateWorkflow": case "lock": case "New Workflow Map": case "PromoteItem": case "purge": case "recache": case "replicate": case "resetAllItemsAccess": case "resetItemAccess": case "resetLifecycle": case "setDefaultLifecycle": case "skip": case "startWorkflow": case "unlock": case "update": case "ValidateWorkflowMap": case "version": if ((elem.Attributes["type"].Value != "Form" && elem.Attributes["type"].Value != "View") || elem.Attributes["action"].Value != "delete") { result._dependencies = Enumerable.Repeat(result._itemRef, 1); } result._itemRef = new ItemReference("*Script", result._itemRef.ToString() + " " + Utils.GetChecksum(Encoding.UTF8.GetBytes(elem.OuterXml))) { KeyedName = RenderAttributes(elem) }; result._type = InstallType.Script; break; default: result._dependencies = Enumerable.Repeat(new ItemReference("Method", "[Method].[name] = '" + elem.Attributes["action"].Value + "'") { KeyedName = elem.Attributes["action"].Value }, 1); result._itemRef = new ItemReference("*Script", result._itemRef.ToString() + " " + Utils.GetChecksum(Encoding.UTF8.GetBytes(elem.OuterXml))) { KeyedName = RenderAttributes(elem) }; result._type = InstallType.Script; break; } } if (elem.Attribute(XmlFlags.Attr_IsScript) == "1") { if (string.IsNullOrEmpty(result._itemRef.KeyedName)) { result._itemRef.KeyedName = RenderAttributes(elem); } result._type = InstallType.Script; } return(result); }