public bool TryCreateConverter( Type source, Type target, ChangeTypeProvider root, [NotNullWhen(true)] out ChangeType?converter) { return(_changeTypeProvider(source, target, out converter)); }
protected virtual void NotifyChanges(ChangeType?changeType = ChangeType.Updated) { var handler = this.ContentChanged; if (handler != null) { handler(this, Mock.Of <IChangeEvent>(e => e.ObjectId == this.Id && e.ChangeType == changeType && e.ChangeTime == DateTime.UtcNow)); } }
public bool TryCreateConverter( Type source, Type target, ChangeTypeProvider root, [NotNullWhen(true)] out ChangeType?converter) { Type?sourceElement = ExtendedType.Tools.GetElementType(source); Type?targetElement = ExtendedType.Tools.GetElementType(target); if (sourceElement is not null && targetElement is not null && root(sourceElement, targetElement, out ChangeType? elementConverter)) { if (target.IsArray) { converter = input => GenericArrayConverter( (ICollection?)input, targetElement, elementConverter); return(true); } if (target.IsGenericType && target.GetGenericTypeDefinition() == typeof(Dictionary <,>)) { MethodInfo converterMethod = _dictionaryConvert.MakeGenericMethod(targetElement.GetGenericArguments()); converter = source => converterMethod.Invoke( null, new[] { source, elementConverter }); return(true); } if (target.IsGenericType && target.IsInterface) { Type listType = typeof(List <>).MakeGenericType(targetElement); if (target.IsAssignableFrom(listType)) { converter = source => GenericListConverter( (ICollection?)source, listType, elementConverter); return(true); } } if (target.IsGenericType && target.IsClass && typeof(ICollection).IsAssignableFrom(target)) { converter = source => GenericListConverter( (ICollection?)source, target, elementConverter); return(true); } } converter = null; return(false); }
private FlowDocument GenerateFlowDocument(DiffPaneModel diffPaneModel) { var flowDocument = new FlowDocument(); var lineWidths = new List <double>(); var stringBuilder = new StringBuilder(); bool isFirstLine = true; ChangeType?previousLineType = null; DiffPiece previousLine = null; foreach (var line in diffPaneModel.Lines) { if (line.Type != ChangeType.Modified && isFirstLine) { stringBuilder.Append(line.Text); } else if (line.Type != ChangeType.Modified && line.Type == previousLineType) { stringBuilder.Append(Environment.NewLine + line.Text); } else if (!isFirstLine && (line.Type != previousLineType || previousLineType == ChangeType.Modified)) { Paragraph paragraph = GetParagraph(stringBuilder, previousLineType, previousLine); flowDocument.Blocks.Add(paragraph); stringBuilder.Clear(); if (line.Type != ChangeType.Modified) { stringBuilder.Append(line.Text); } } isFirstLine = false; previousLineType = line.Type; previousLine = line; lineWidths.Add(CalculateLineWidth(line.Text)); } // process last line if (previousLine != null) { Paragraph lastParagraph = GetParagraph(stringBuilder, previousLineType, previousLine); flowDocument.Blocks.Add(lastParagraph); } flowDocument.LineStackingStrategy = LineStackingStrategy.BlockLineHeight; flowDocument.PagePadding = _zeroThickness; flowDocument.PageWidth = Math.Min(lineWidths.DefaultIfEmpty(0).Max(), 1000000); // Throws an ArgumentException if value is too big. I think the maximum allowed is 1 million. return(flowDocument); }
public MockEnvironment Delete(string tfsPath, ItemType?itemType = null, ChangeType?changeType = null) { _item = new Mock <IItem>(); _item.Setup(i => i.ChangesetId).Returns(_changeset.Object.ChangesetId); _item.Setup(i => i.HashValue).Returns(new byte[] { }); _item.Setup(i => i.ItemType).Returns(itemType ?? ItemType.File); _item.Setup(i => i.ServerItem).Returns(tfsPath); _change = new Mock <IChange>(); _change.Setup(c => c.ChangeType).Returns(changeType ?? ChangeType.Delete); _change.Setup(c => c.Item).Returns(_item.Object); _changes.Add(_change.Object); return(this); }
public bool TryCreateConverter( Type source, Type target, ChangeTypeProvider root, [NotNullWhen(true)] out ChangeType?converter) { if (_source == source && _target == target) { converter = _converter; return(true); } converter = null; return(false); }
public bool TryCreateConverter( Type source, Type target, ChangeTypeProvider root, [NotNullWhen(true)] out ChangeType?converter) { Type innerFrom = GetUnderlyingNullableType(source); Type innerTo = GetUnderlyingNullableType(target); if ((innerFrom != source || innerTo != target) && root(innerFrom, innerTo, out converter)) { return(true); } converter = null; return(false); }
/// <returns> /// A nice string representation of this change set /// </returns> public override string ToString() { string ret = $"<b><size=20>{version}</size></b>\n"; ChangeType?curType = null; foreach (Change c in changes) { if (c.type != curType) { if (c.type != ChangeType.None) { ret += $"<b>{c.TypeString()}</b>\n"; } curType = c.type; } ret += c.ToString(); } return(ret); }
protected virtual Task InvalidateCacheAsync(IReadOnlyCollection <ModifiedDocument <T> > documents, ChangeType?changeType = null) { var keysToRemove = new HashSet <string>(); if (HasIdentity && changeType != ChangeType.Added) { foreach (var document in documents) { keysToRemove.Add(((IIdentity)document.Value).Id); if (((IIdentity)document.Original)?.Id != null) { keysToRemove.Add(((IIdentity)document.Original).Id); } } } if (keysToRemove.Count > 0) { return(Cache.RemoveAllAsync(keysToRemove)); } return(Task.CompletedTask); }
protected override async Task InvalidateCacheAsync(IReadOnlyCollection <ModifiedDocument <LogEvent> > documents, ChangeType?changeType = null) { await base.InvalidateCacheAsync(documents, changeType); await Cache.RemoveAllAsync(documents.Select(d => $"count:{d.Value.CompanyId}")); }
protected override Task InvalidateCacheAsync(IReadOnlyCollection <ModifiedDocument <Project> > documents, ChangeType?changeType = null) { var organizations = documents.Select(d => d.Value.OrganizationId).Distinct().Where(id => !String.IsNullOrEmpty(id)); return(Task.WhenAll(Cache.RemoveAllAsync(organizations.Select(id => $"count:Organization:{id}")), base.InvalidateCacheAsync(documents, changeType))); }
protected override Task InvalidateCacheAsync(IReadOnlyCollection <ModifiedDocument <User> > documents, ChangeType?changeType = null) { var keysToRemove = documents.UnionOriginalAndModified().Select(u => EmailCacheKey(u.EmailAddress)).Distinct(); return(Task.WhenAll(Cache.RemoveAllAsync(keysToRemove), base.InvalidateCacheAsync(documents, changeType))); }
internal static FileDiff ParseDiffChunk(IStringReader reader, ref ChangeSetDetail merge) { var diff = ParseDiffHeader(reader, merge); if (diff == null) { return(null); } // Current diff range DiffRange currentRange = null; int? leftCounter = null; int? rightCounter = null; // Parse the file diff while (!reader.Done) { int? currentLeft = null; int? currentRight = null; string line = reader.ReadLine(); if (line.Equals(@"\ No newline at end of file", StringComparison.OrdinalIgnoreCase)) { continue; } bool isDiffRange = line.StartsWith("@@", StringComparison.Ordinal); ChangeType?changeType = null; if (line.StartsWith("+", StringComparison.Ordinal)) { changeType = ChangeType.Added; currentRight = ++rightCounter; currentLeft = null; } else if (line.StartsWith("-", StringComparison.Ordinal)) { changeType = ChangeType.Deleted; currentLeft = ++leftCounter; currentRight = null; } else if (IsCommitHeader(line)) { reader.PutBack(line.Length); merge = ParseCommitAndSummary(reader); } else { if (!isDiffRange) { currentLeft = ++leftCounter; currentRight = ++rightCounter; } changeType = ChangeType.None; } if (changeType != null) { var lineDiff = new LineDiff(changeType.Value, line); if (!isDiffRange) { lineDiff.LeftLine = currentLeft; lineDiff.RightLine = currentRight; } diff.Lines.Add(lineDiff); } if (isDiffRange) { // Parse the new diff range currentRange = DiffRange.Parse(line.AsReader()); leftCounter = currentRange.LeftFrom - 1; rightCounter = currentRange.RightFrom - 1; } } return(diff); }
/// <summary> /// 根据订单的编号、(修改或变更)获取订单变更列表 /// </summary> /// <param name="OrderId">订单编号</param> /// <param name="changeType">变更或修改</param> /// <returns></returns> public IList <MTourOrderChange> GetTourOrderChangeList(string OrderId, ChangeType?changeType) { IList <MTourOrderChange> list = null; StringBuilder query = new StringBuilder(); query.Append(" SELECT "); query.Append("Id,CompanyId,TourId,RouteId,RouteName,TourSaleId,TourSale,OrderId,OrderCode"); query.Append(",ChangePerson,ChangePrice,OrderSaleId,OrderSale,Content,OperatorId"); query.Append(",Operator,IssueTime,ChangeType,IsSure,SurePersonId,SurePerson,SureTime"); query.Append(" FROM "); query.Append("tbl_TourOrderChange"); query.Append(" Where "); query.AppendFormat("OrderId='{0}'", OrderId); if (changeType.HasValue) { query.AppendFormat(" and ChangeType={0}", (int)changeType.Value); } DbCommand cmd = _db.GetSqlStringCommand(query.ToString()); using (IDataReader dr = DbHelper.ExecuteReader(cmd, _db)) { if (dr != null) { list = new List <MTourOrderChange>(); while (dr.Read()) { MTourOrderChange change = new MTourOrderChange(); change.Id = dr.GetString(dr.GetOrdinal("Id")); change.CompanyId = dr.GetString(dr.GetOrdinal("CompanyId")); change.TourId = dr.GetString(dr.GetOrdinal("TourId")); change.RouteId = !dr.IsDBNull(dr.GetOrdinal("RouteId")) ? dr.GetString(dr.GetOrdinal("RouteId")) : string.Empty; change.RouteName = !dr.IsDBNull(dr.GetOrdinal("RouteName")) ? dr["RouteName"].ToString() : string.Empty; change.TourSaleId = dr.GetString(dr.GetOrdinal("TourSaleId")); change.TourSale = !dr.IsDBNull(dr.GetOrdinal("TourSale")) ? dr["TourSale"].ToString() : string.Empty; change.OrderId = dr.GetString(dr.GetOrdinal("OrderId")); change.OrderCode = !dr.IsDBNull(dr.GetOrdinal("OrderCode")) ? dr.GetString(dr.GetOrdinal("OrderCode")) : string.Empty; change.ChangePerson = dr.GetInt32(dr.GetOrdinal("ChangePerson")); change.ChangePrice = dr.GetDecimal(dr.GetOrdinal("ChangePrice")); change.OrderSaleId = dr.GetString(dr.GetOrdinal("OrderSaleId")); change.OrderSale = !dr.IsDBNull(dr.GetOrdinal("OrderSale")) ? dr["OrderSale"].ToString() : string.Empty; change.Content = !dr.IsDBNull(dr.GetOrdinal("Content")) ? dr["Content"].ToString() : string.Empty; change.OperatorId = dr.GetString(dr.GetOrdinal("OperatorId")); change.Operator = !dr.IsDBNull(dr.GetOrdinal("Operator")) ? dr["Operator"].ToString() : string.Empty; change.IssueTime = dr.GetDateTime(dr.GetOrdinal("IssueTime")); change.ChangeType = (ChangeType)dr.GetByte(dr.GetOrdinal("ChangeType")); change.IsSure = dr.GetString(dr.GetOrdinal("IsSure")) == "1" ? true : false; change.SurePersonId = !dr.IsDBNull(dr.GetOrdinal("SurePersonId")) ? dr.GetString(dr.GetOrdinal("SurePersonId")) : string.Empty; change.SurePerson = !dr.IsDBNull(dr.GetOrdinal("SurePerson")) ? dr.GetString(dr.GetOrdinal("SurePerson")) : string.Empty;; change.SureTime = !dr.IsDBNull(dr.GetOrdinal("SureTime")) ? dr.GetDateTime(dr.GetOrdinal("SureTime")) : (DateTime?)null; list.Add(change); } } } return(list); }
/// <summary> /// 查询获取订单变更列表 分页 /// </summary> /// <param name="CompanyId">公司编号</param> /// <param name="changeType">变更 OR 修改</param> /// <param name="pageSize">每页显示的条数</param> /// <param name="pageindex">当前页</param> /// <param name="recordCount">总记录数</param> /// <param name="DetpIds">部门</param> /// <param name="isOnlySeft"></param> /// <param name="LoginUserId">当前登录员编号</param> /// <returns></returns> public IList <MTourOrderChange> GetTourOrderChangeList(string CompanyId , ChangeType?changeType , int pageSize , int pageindex , ref int recordCount , int[] DetpIds , bool isOnlySeft , string LoginUserId) { IList <MTourOrderChange> list = null; StringBuilder query = new StringBuilder(); query.AppendFormat(" CompanyId='{0}' ", CompanyId); if (changeType.HasValue) { query.AppendFormat(" and ChangeType={0}", (int)changeType.Value); } StringBuilder field = new StringBuilder(); field.Append("Id,CompanyId,TourId,RouteId,RouteName,TourSaleId"); field.Append(",TourSale,OrderId,OrderCode,ChangePerson,ChangePrice"); field.Append(",OrderSaleId,OrderSale,Content,OperatorId,Operator,IssueTime"); field.Append(",ChangeType,IsSure,SurePersonId,SurePerson,SureTime"); //权限控制 控制派团给计调时指定的计调员 if (isOnlySeft) { query.AppendFormat(" and exists(select 1 from tbl_TourPlaner where PlanerId='{0}' and TourId=tbl_TourOrderChange.TourId)", LoginUserId); } else { if (DetpIds != null) { query.AppendFormat(" and exists(select 1 from tbl_TourPlaner where DeptId in ({0}) and TourId=tbl_TourOrderChange.TourId)", GetIdsByArr(DetpIds)); } } using (IDataReader dr = DbHelper.ExecuteReader(_db, pageSize, pageindex, ref recordCount , "tbl_TourOrderChange" , "TourId" , field.ToString() , query.ToString() , "IssueTime desc")) if (dr != null) { list = new List <MTourOrderChange>(); while (dr.Read()) { MTourOrderChange change = new MTourOrderChange(); change.Id = dr.GetString(dr.GetOrdinal("Id")); change.CompanyId = dr.GetString(dr.GetOrdinal("CompanyId")); change.TourId = dr.GetString(dr.GetOrdinal("TourId")); change.RouteId = !dr.IsDBNull(dr.GetOrdinal("RouteId")) ? dr.GetString(dr.GetOrdinal("RouteId")) : string.Empty; change.RouteName = !dr.IsDBNull(dr.GetOrdinal("RouteName")) ? dr["RouteName"].ToString() : string.Empty; change.TourSaleId = dr.GetString(dr.GetOrdinal("TourSaleId")); change.TourSale = !dr.IsDBNull(dr.GetOrdinal("TourSale")) ? dr["TourSale"].ToString() : string.Empty; change.OrderId = dr.GetString(dr.GetOrdinal("OrderId")); change.OrderCode = !dr.IsDBNull(dr.GetOrdinal("OrderCode")) ? dr.GetString(dr.GetOrdinal("OrderCode")) : string.Empty; change.ChangePerson = dr.GetInt32(dr.GetOrdinal("ChangePerson")); change.ChangePrice = dr.GetDecimal(dr.GetOrdinal("ChangePrice")); change.OrderSaleId = dr.GetString(dr.GetOrdinal("OrderSaleId")); change.OrderSale = !dr.IsDBNull(dr.GetOrdinal("OrderSale")) ? dr["OrderSale"].ToString() : string.Empty; change.Content = !dr.IsDBNull(dr.GetOrdinal("Content")) ? dr["Content"].ToString() : string.Empty; change.OperatorId = dr.GetString(dr.GetOrdinal("OperatorId")); change.Operator = !dr.IsDBNull(dr.GetOrdinal("Operator")) ? dr["Operator"].ToString() : string.Empty; change.IssueTime = dr.GetDateTime(dr.GetOrdinal("IssueTime")); change.ChangeType = (ChangeType)dr.GetByte(dr.GetOrdinal("ChangeType")); change.IsSure = dr.GetString(dr.GetOrdinal("IsSure")) == "1" ? true : false; change.SurePersonId = !dr.IsDBNull(dr.GetOrdinal("SurePersonId")) ? dr.GetString(dr.GetOrdinal("SurePersonId")) : string.Empty; change.SurePerson = !dr.IsDBNull(dr.GetOrdinal("SurePerson")) ? dr.GetString(dr.GetOrdinal("SurePerson")) : string.Empty;; change.SureTime = !dr.IsDBNull(dr.GetOrdinal("SureTime")) ? dr.GetDateTime(dr.GetOrdinal("SureTime")) : (DateTime?)null; list.Add(change); } } return(list); }
internal static string ToSerializedValue(this ChangeType?value) { return(value == null ? null : ((ChangeType)value).ToSerializedValue()); }
protected override async Task InvalidateCacheAsync(IReadOnlyCollection <ModifiedDocument <WebHook> > documents, ChangeType?changeType = null) { var keysToRemove = documents.Select(d => d.Value).Select(CacheKey).Distinct(); await Cache.RemoveAllAsync(keysToRemove).AnyContext(); var pagedKeysToRemove = documents.Select(d => PagedCacheKey(d.Value.OrganizationId, d.Value.ProjectId)).Distinct(); foreach (string key in pagedKeysToRemove) { await Cache.RemoveByPrefixAsync(key).AnyContext(); } await base.InvalidateCacheAsync(documents, changeType).AnyContext(); }
protected override async Task InvalidateCacheAsync(IReadOnlyCollection <ModifiedDocument <Employee> > documents, ChangeType?changeType = null) { await base.InvalidateCacheAsync(documents, changeType); await Cache.RemoveAllAsync(documents.Where(d => !String.IsNullOrEmpty(d.Value.EmailAddress)).Select(d => $"email:{d.Value.EmailAddress.ToLowerInvariant()}")); }
public MockEnvironment Rename(string oldTfsPath, string newTfsPath, string content, ItemType itemType, ChangeType?changeType) { Change(changeType ?? ChangeType.Rename, itemType, newTfsPath, content); var mergeSource = new Mock <IMergeSource>(); mergeSource.Setup(m => m.IsRename).Returns(true); mergeSource.Setup(m => m.ServerItem).Returns(oldTfsPath); _change.Setup(c => c.Rename).Returns(mergeSource.Object); return(this); }
public MockEnvironment Edit(string tfsPath, string content, ItemType?itemType = null, ChangeType?changeType = null) { Change(changeType ?? ChangeType.Edit, itemType ?? ItemType.File, tfsPath, content); return(this); }
protected override async Task InvalidateCacheAsync(IReadOnlyCollection <ModifiedDocument <Stack> > documents, ChangeType?changeType = null) { var keys = documents.UnionOriginalAndModified().Select(GetStackSignatureCacheKey).Distinct(); await Cache.RemoveAllAsync(keys).AnyContext(); await base.InvalidateCacheAsync(documents, changeType).AnyContext(); }
private Paragraph GetParagraph(StringBuilder stringBuilder, ChangeType?lineType, DiffPiece line) { Run run; Paragraph paragraph = null; switch (lineType) { case ChangeType.Unchanged: run = new Run { Text = stringBuilder.ToString() }; paragraph = new Paragraph(run); break; case ChangeType.Modified: paragraph = RenderDiffWords(line); paragraph.Background = _modifiedFillColor; break; case ChangeType.Deleted: run = new Run { Text = stringBuilder.ToString() }; paragraph = new Paragraph(run) { Background = _deletedFillColor }; break; case ChangeType.Inserted: run = new Run { Text = stringBuilder.ToString() }; paragraph = new Paragraph(run) { Background = _insertedFillColor }; break; case ChangeType.Imaginary: run = new Run { Text = stringBuilder.ToString() }; paragraph = new Paragraph(run) { Background = _imaginaryFillColor }; break; } if (paragraph != null) { paragraph.FontFamily = _fontFamily; paragraph.FontSize = FontSize; paragraph.Margin = _zeroThickness; paragraph.LineHeight = _lineHeight; } return(paragraph); }