Exemplo n.º 1
0
        /// <summary>
        /// Matches targets with what is available on the server and updates the options model
        /// </summary>
        /// <returns>Targets that were removed</returns>
        private async Task UpdateTargetsAsync()
        {
            var targets = await GetTargetsAsync();

            var canonicalPlatforms = targets.GroupBy(t => t.Name).Select(t =>
            {
                return(new TargetPlatform
                {
                    Name = t.Key,

                    Versions = t.Select(v => new TargetPlatformVersion
                    {
                        PlatformName = t.Key,
                        Version = v.Version,
                        IsSelected = v.IsSet
                    })
                               .OrderBy(v => v.Version)
                               .ToList()
                });
            });

            var reconciledPlatforms = new List <TargetPlatform>();

            foreach (var canonicalPlatform in canonicalPlatforms)
            {
                var existingTargetPlatform = _optionsModel.Platforms
                                             .FirstOrDefault(t => StringComparer.OrdinalIgnoreCase.Equals(t.Name, canonicalPlatform.Name));

                var platform = (existingTargetPlatform?.Equals(canonicalPlatform) ?? false)
                                    ? existingTargetPlatform
                                    : canonicalPlatform;

                foreach (var alias in _targetMapper.Aliases)
                {
                    foreach (var name in _targetMapper.GetNames(alias))
                    {
                        if (String.Equals(platform.Name, name))
                        {
                            platform.AlternativeNames.Add(alias);
                        }
                    }
                }

                reconciledPlatforms.Add(platform);
            }

            // This will sort the platforms on the 'Name' property
            reconciledPlatforms.Sort();

            InvalidTargets = Targets.Where(p => !reconciledPlatforms.Contains(p)).ToList();
            Targets        = reconciledPlatforms;
        }
Exemplo n.º 2
0
        private void UpdateTargetPlatforms(IEnumerable <TargetPlatform> targetPlatforms)
        {
            lock (_lock)
            {
                // Remove any existing subscribed events
                foreach (var platform in _currentVersions)
                {
                    platform.PropertyChanged -= TargetPlatformAndResultFormatPropertyChanged;
                }

                var reconciledPlatforms = new List <TargetPlatform>();

                foreach (var canonicalPlatform in targetPlatforms)
                {
                    var existingTargetPlatform = _optionsModel.Platforms
                                                 .FirstOrDefault(t => StringComparer.OrdinalIgnoreCase.Equals(t.Name, canonicalPlatform.Name));

                    var platform = (existingTargetPlatform?.Equals(canonicalPlatform) ?? false)
                                        ? existingTargetPlatform
                                        : canonicalPlatform;

                    foreach (var alias in _targetMapper.Aliases)
                    {
                        foreach (var name in _targetMapper.GetNames(alias))
                        {
                            if (String.Equals(platform.Name, name))
                            {
                                platform.AlternativeNames.Add(alias);
                            }
                        }
                    }

                    reconciledPlatforms.Add(platform);
                }

                // This will sort the platforms on the 'Name' property
                reconciledPlatforms.Sort();

                InvalidTargets = Targets.Where(p => !reconciledPlatforms.Contains(p)).ToList();
                Targets        = reconciledPlatforms;

                foreach (var platform in _currentVersions)
                {
                    platform.PropertyChanged += TargetPlatformAndResultFormatPropertyChanged;
                }
            }
        }