public void Flush(IFlush flush, Roles roles, IRoleType roleType) { if (this.Count == 0) { flush.ClearCompositeAndCompositesRole(roles.Reference, roleType); } else { if (this.added != null && this.added.Count > 0) { flush.AddCompositeRole(roles.Reference, roleType, this.added); } if (this.removed != null && this.removed.Count > 0) { flush.RemoveCompositeRole(roles.Reference, roleType, this.removed); } } if (this.added != null) { this.baseline.UnionWith(this.added); } if (this.removed != null) { this.baseline.ExceptWith(this.removed); } this.added = null; this.removed = null; }
public void Flush(IFlush flush) { IRoleType unitRole = null; List <IRoleType> unitRoles = null; foreach (var flushRole in this.RequireFlushRoles) { if (flushRole.ObjectType is IUnit) { if (unitRole == null) { unitRole = flushRole; } else { if (unitRoles == null) { unitRoles = new List <IRoleType> { unitRole }; } unitRoles.Add(flushRole); } } else { if (flushRole.IsOne) { var role = this.GetCompositeRole(flushRole); if (role != null) { flush.SetCompositeRole(this.Reference, flushRole, role.Value); } else { flush.ClearCompositeAndCompositesRole(this.Reference, flushRole); } } else { var roles = this.ModifiedRolesByRoleType[flushRole]; roles.Flush(flush, this, flushRole); } } } if (unitRoles != null) { unitRoles.Sort(MetaObjectComparer.ById); flush.SetUnitRoles(this, unitRoles); } else if (unitRole != null) { flush.SetUnitRole(this.Reference, unitRole, this.GetUnitRole(unitRole)); } this.requireFlushRoles = null; }