Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
                                                     });
        }
Esempio n. 3
0
        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))));

                }

            }
        }