@Override public boolean visitMember(IMemberDescriptor referencedMember) { IReferenceTypeDescriptor desc = getEnclosingDescriptor(referencedMember); if (desc == null) { return false; } this.currenttype = this.keys.get(desc); if (this.currenttype == null) { this.currenttype = new Type(desc); this.keys.put(desc, this.currenttype); } TreeMap<IMemberDescriptor, Member> map = this.currentreport.children.get(this.currenttype); if (map == null) { map = new TreeMap<>(compare); this.currentreport.children.put(this.currenttype, map); } this.currentmember = map.get(referencedMember); if (this.currentmember == null) { this.currentmember = new Member(referencedMember); map.put(referencedMember, this.currentmember); } return true; }
@Override public void visitReference(IReferenceDescriptor reference) { IMemberDescriptor fromMember = reference.getMember(); if (!acceptReference(reference.getReferencedMember(), topatterns) || !acceptReference(fromMember, frompatterns)) { return; this.currentmember.children.put(refname, refs); refs.add(new Reference(fromMember, lineNumber, visibility, formatMessages(reference.getProblemMessages()))); switch (fromMember.getElementType()) { case IElementDescriptor.TYPE: {
@Override public void endVisitMember(IMemberDescriptor referencedMember) { if (this.currentmember.children.isEmpty()) { TreeMap<IMemberDescriptor, Member> map = this.currentreport.children.get(this.currenttype); map.remove(referencedMember); } if (this.currenttype.counts.getTotalRefCount() == 0) { IReferenceTypeDescriptor desc = getEnclosingDescriptor(referencedMember); if (desc != null) { this.keys.remove(desc); this.currentreport.children.remove(this.currenttype); } } }
protected List<?> parse(IProgressMonitor monitor) throws Exception { UseScanParser lparser = new UseScanParser(); Visitor convertor = new Visitor(); lparser.parse(getXmlLocation(), monitor, convertor); return convertor.reports; }