/// <summary> /// /// </summary> /// <param name="prevStatuses"></param> /// <param name="currentStatuses"></param> /// <returns></returns> public static ChangeInfo[] GetChangeInfoSetFromStatuses(IPlatformStatus[] prevStatuses, IPlatformStatus[] currentStatuses) { // WORKAROUND: ie-status.json has a duplicated id. var prevIdAndNames = prevStatuses.Select(x => new { x.Id, x.Name }).ToLookup(k => k.Id, v => v); var curIdAndNames = currentStatuses.Select(x => new { x.Id, x.Name }).ToLookup(k => k.Id, v => v); Func<IPlatformStatus, String> prevIdMapper = (platformStatus) => prevIdAndNames[platformStatus.Id].Count() > 1 ? platformStatus.Id + "_" + platformStatus.Name : platformStatus.Id.ToString(); Func<IPlatformStatus, String> curIdMapper = (platformStatus) => curIdAndNames[platformStatus.Id].Count() > 1 ? platformStatus.Id + "_" + platformStatus.Name : platformStatus.Id.ToString(); var prevStatusIds = prevStatuses.Select(prevIdMapper).ToArray(); var prevStatusesByName = prevStatuses.ToDictionary(prevIdMapper, v => v); var currentStatusIds = currentStatuses.Select(curIdMapper).ToArray(); var currentStatusesByName = currentStatuses.ToDictionary(curIdMapper, v => v); // Deleted or Added Id var deletedOrAddedIds = currentStatusIds .Except(prevStatusIds) .Concat(prevStatusIds.Except(currentStatusIds)) .ToArray(); var deletedOrAddedChanges = deletedOrAddedIds.Select(x => ChangeInfo.Create(prevStatusesByName.ContainsKey(x) ? prevStatusesByName[x] : null, currentStatusesByName.ContainsKey(x) ? currentStatusesByName[x] : null)); // Changed Statuses var changedStatusNames = Enumerable.Intersect(currentStatusIds, prevStatusIds) .Where(x => !prevStatusesByName[x].CompareStatus(currentStatusesByName[x])) .ToArray(); return changedStatusNames.Select(x => ChangeInfo.Create(prevStatusesByName[x], currentStatusesByName[x])) .Concat(deletedOrAddedChanges) .ToArray(); }
public override bool CompareStatus(IPlatformStatus status) { var ieStatus = status as IePlatformStatus; return(this.IeStatus.IePrefixed == ieStatus.IeStatus.IePrefixed && this.IeStatus.IeUnprefixed == ieStatus.IeStatus.IeUnprefixed && this.IeStatus.Text == ieStatus.IeStatus.Text && this.IeStatus.Flag == ieStatus.IeStatus.Flag && this.IeStatus.Priority == ieStatus.IeStatus.Priority); }
public override bool CompareStatus(IPlatformStatus status) { var webkitStatus = status as WebKitPlatformStatus; if (webkitStatus == null) { return(false); } return(this.Status.Status == webkitStatus.Status.Status && this.Status.EnabledByDefault == webkitStatus.Status.EnabledByDefault ); }
public virtual bool CompareStatus(IPlatformStatus status) { var status2 = status as MozillaPlatformStatus; if (status2 == null) { return(false); } return(this.Status == status2.Status && this.Version == status2.Version && this.Channel == status2.Channel ); }
public override bool CompareStatus(IPlatformStatus status) { var chStatus = status as ChromiumPlatformStatus; if (chStatus == null) { return(false); } return(this.Prefixed == chStatus.Prefixed && this.Flag == chStatus.Flag && this.Status == chStatus.Status && this.Android == chStatus.Android && this.Ios == chStatus.Ios && this.Desktop == chStatus.Desktop ); }
public static ChangeInfo Create(IPlatformStatus oldStatus, IPlatformStatus newStatus) { if (oldStatus is ChromiumPlatformStatus || newStatus is ChromiumPlatformStatus) { return new ChromiumChangeInfo(oldStatus, newStatus); } if (oldStatus is WebKitPlatformStatus || newStatus is WebKitPlatformStatus) { return new WebKitChangeInfo(oldStatus, newStatus); } if (oldStatus is MozillaPlatformStatus || newStatus is MozillaPlatformStatus) { return new MozillaChangeInfo(oldStatus, newStatus); } else { return new IeChangeInfo(oldStatus, newStatus); } }
public ChromiumChangeInfo(IPlatformStatus oldStatus, IPlatformStatus newStatus) : base(oldStatus, newStatus) { }
public override bool CompareStatus(IPlatformStatus status) { var webkitStatus = status as WebKitPlatformStatus; if (webkitStatus == null) return false; return this.Status.Status == webkitStatus.Status.Status && this.Status.EnabledByDefault == webkitStatus.Status.EnabledByDefault ; }
public PlatformStatuses(DateTime date, IPlatformStatus[] statuses) { Date = date; Statuses = statuses; }
public virtual bool CompareStatus(IPlatformStatus status) { return false; }
public virtual bool CompareStatus(IPlatformStatus status) { var status2 = status as MozillaPlatformStatus; if (status2 == null) return false; return this.Status == status2.Status && this.Version == status2.Version && this.Channel == status2.Channel ; }
public override bool CompareStatus(IPlatformStatus status) { var ieStatus = status as IePlatformStatus; return this.IeStatus.IePrefixed == ieStatus.IeStatus.IePrefixed && this.IeStatus.IeUnprefixed == ieStatus.IeStatus.IeUnprefixed && this.IeStatus.Text == ieStatus.IeStatus.Text && this.IeStatus.Flag == ieStatus.IeStatus.Flag; }
public override bool CompareStatus(IPlatformStatus status) { var chStatus = status as ChromiumPlatformStatus; if (chStatus == null) return false; return this.Prefixed == chStatus.Prefixed && this.ImplStatusChrome == chStatus.ImplStatusChrome && this.ShippedAndroidMilestone == chStatus.ShippedAndroidMilestone && this.ShippedIosMilestone == chStatus.ShippedIosMilestone && this.ShippedMilestone == chStatus.ShippedMilestone && this.ShippedOperaAndroidMilestone == chStatus.ShippedOperaAndroidMilestone && this.ShippedOperaMilestone == chStatus.ShippedOperaMilestone && this.ShippedWebViewMilestone == chStatus.ShippedWebViewMilestone ; }
public ChangeInfo(IPlatformStatus oldStatus, IPlatformStatus newStatus) { OldStatus = oldStatus; NewStatus = newStatus; }
public MozillaChangeInfo(IPlatformStatus oldStatus, IPlatformStatus newStatus) : base(oldStatus, newStatus) { }
public virtual bool CompareStatus(IPlatformStatus status) { return(false); }
public WebKitChangeInfo(IPlatformStatus oldStatus, IPlatformStatus newStatus) : base(oldStatus, newStatus) { }