1 19 20 29 30 package org.netbeans.modules.xml.xdm.visitor; 31 32 import java.util.List ; 33 import org.netbeans.modules.xml.xdm.nodes.Attribute; 34 import org.netbeans.modules.xml.xdm.nodes.Document; 35 import org.netbeans.modules.xml.xdm.nodes.Element; 36 import org.netbeans.modules.xml.xdm.nodes.Node; 37 import org.netbeans.modules.xml.xdm.nodes.Text; 38 import org.netbeans.modules.xml.xdm.nodes.Token; 39 40 47 public class CompareVisitor implements XMLNodeVisitor { 48 49 50 public CompareVisitor() { 51 } 52 53 public boolean compare(Node n1, Node n2) { 54 target = n2; 55 n1.accept(this); 56 return result; 57 } 58 59 public void visit(Attribute attr) { 60 result = false; 61 if (target instanceof Attribute) { 62 if (attr.getName().equals(((Attribute)target).getName()) && 63 attr.getValue().equals(((Attribute)target).getValue())) 64 result = true; 65 if (result) 66 tokenCompare(attr.getTokens(), ((Attribute)target).getTokens()); 67 } 68 } 69 70 public void visit(Document doc) { 71 if (target instanceof Document) 72 result = true; 73 } 74 75 public void visit(Element e) { 76 result = false; 77 if (target instanceof Element) { 78 if (e.getLocalName().equals(((Element)target).getLocalName())) 79 result = true; 80 } 81 if (result) 82 tokenCompare(e.getTokens(), ((Element)target).getTokens()); 83 } 84 85 public void visit(Text txt) { 86 result = false; 87 if (target instanceof Text) { 88 if (txt.getText().equals(((Text)target).getText())) 89 result = true; 90 } 91 if (result) 92 tokenCompare(txt.getTokens(), ((Text)target).getTokens()); 93 } 94 95 private void tokenCompare(List <Token> oldtokens, List <Token> newtokens) { 96 assert oldtokens != null && newtokens != null; 97 if (oldtokens.size() != newtokens.size()) 98 result = false; 99 else { 100 int i = 0; 101 for (Token t : oldtokens) { 102 if (t.getType() != newtokens.get(i).getType() || 103 !t.getValue().equals(newtokens.get(i).getValue())) 104 result = false; 105 i++; 106 } 107 } 108 } 109 110 private Node target; 111 boolean result = false; 112 } 113 | Popular Tags |