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);
        }
Esempio n. 2
0
        public static InstallItem FromWarning(ItemReference itemRef, string warning)
        {
            var result = new InstallItem();

            result._itemRef = itemRef;
            result._name    = warning;
            result._type    = InstallType.Warning;
            return(result);
        }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 public static InstallItem FromWarning(ItemReference itemRef, string warning)
 {
     var result = new InstallItem();
       result._itemRef = itemRef;
       result._name = warning;
       result._type = InstallType.Warning;
       return result;
 }
Esempio n. 6
0
        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;
        }
Esempio n. 7
0
        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);
        }