private void AddAttributeValue(DuplicatesSearcher duplicatesSearcher, IXmlAttribute attribute) { if(attribute == null) return; if(attribute.Value == null) return; if (string.IsNullOrEmpty(attribute.Value.UnquotedValue) || attribute.Value.UnquotedValue.Trim() == string.Empty) return; TextRange valueRange = attribute.Value.GetDocumentRange().TextRange; attribute.Value.GetText().StartsWith("\""); valueRange = valueRange.TrimLeft(1); attribute.Value.GetText().EndsWith("\""); valueRange = valueRange.TrimRight(1); duplicatesSearcher.Add(attribute.Value.UnquotedValue, attribute.Value.GetContainingFile().GetDocumentRange(valueRange)); }
public void ProcessAfterInterior(IElement element) { IClassElement classElement = element as IClassElement; if(classElement == null) return; DuplicatesSearcher propertiesSearcher = new DuplicatesSearcher(); DuplicatesSearcher columnsSearcher = new DuplicatesSearcher(); // TODO create visitors // TODO visit other elements foreach (IPropertyElement property in classElement.Properties) { #region property name AddAttributeValue(propertiesSearcher, property.NameAttribute); #endregion #region Column if(property.ColumnAttribute == null) { if(property.Column != null && property.Column.NameAttribute != null) AddAttributeValue(columnsSearcher, property.Column.NameAttribute); else AddAttributeValue(columnsSearcher, property.NameAttribute); } else { AddAttributeValue(columnsSearcher, property.ColumnAttribute); } #endregion } HighlightDuplicates(propertiesSearcher, delegate(IComparable source) { return string.Format("Member {0} already mapped", source); }); HighlightDuplicates(columnsSearcher, delegate(IComparable source) { return string.Format("Column {0} already mapped", source); }); }
private void HighlightDuplicates(DuplicatesSearcher duplicatesSearcher, Transformer<IComparable,string> keyTransformer) { List<List<DuplicatesSearcher.DuplicatesSearcherItem>> duplicates = duplicatesSearcher.GetDuplicates(); foreach (List<DuplicatesSearcher.DuplicatesSearcherItem> list in duplicates) { Assert.Check(list.Count > 1); bool skippedFirst = false; foreach (DuplicatesSearcher.DuplicatesSearcherItem item in list) { if(!skippedFirst) { skippedFirst = true; continue; } highlightings.Add( new HighlightingInfo(item.Range, new DuplicateMappingHighlighting(keyTransformer(item.Key)))); } } }