Exemple #1
0
 public void OpenBasedOnArguments(WarwolfStartupEventArgs e)
 {
     if (e.Args.Any(p => p.Contains("-merge")))
     {
         _mergeFactory.OpenMergeWindow(_shellViewModel, e);
     }
     else
     {
         foreach (var item in e.Args)
         {
             _shellViewModel.LoadWorkflowAsync(item.Replace("\"", ""));
         }
     }
 }
Exemple #2
0
        public void OpenMergeWindow(IShellViewModel shellViewModel, WarwolfStartupEventArgs args)
        {
            VerifyArgument.IsNotNull(nameof(shellViewModel), shellViewModel);
            VerifyArgument.IsNotNull(nameof(args), args);
            var cleanPath     = args.Args[1].Replace('^', ' ');
            var mergeHeadPath = cleanPath;

            using (var stream = File.OpenRead(mergeHeadPath))
            {
                using (var streamReader = new StreamReader(stream))
                {
                    var resourceContent = streamReader.ReadToEnd();
                    var resourceXml     = resourceContent;
                    var serviceXml      = XDocument.Parse(resourceXml);

                    var resourceId = GetAttributeValue(serviceXml, "ID");
                    var serverID   = GetAttributeValue(serviceXml, "ServerID");

                    var serverRepo    = CustomContainer.Get <IServerRepository>();
                    var localResource = serverRepo.Source.ResourceRepository.LoadContextualResourceModel(new Guid(resourceId));
                    var resoureSource = serverRepo.Get(new Guid(serverID));
                    if (resoureSource != null)
                    {
                        var remoteResource = resoureSource.ResourceRepository.LoadContextualResourceModel(new Guid(resourceId));
                        shellViewModel.OpenMergeConflictsView(localResource, remoteResource, true);
                    }
                    else
                    {
                        var resource       = new Resource(resourceContent.ToStringBuilder().ToXElement());
                        var remoteResource = new ResourceModel(serverRepo.ActiveServer)
                        {
                            DisplayName  = resource.ResourceName,
                            DataList     = resource.DataList.ToString(),
                            ID           = new Guid(resourceId),
                            WorkflowXaml = serviceXml.Element("Service").Element("Action").ToString(SaveOptions.DisableFormatting).ToStringBuilder()
                        };
                        shellViewModel.OpenMergeConflictsView(localResource, remoteResource, false);
                    }
                }
            }
        }