blob: 25179e78e9d503d87d9a56d735e2ca7aa8020fd6 [file] [log] [blame]
package org.eclipse.wst.xsd.ui.internal.refactor.rename;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.wst.common.core.search.SearchMatch;
import org.eclipse.wst.common.core.search.SearchRequestor;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class SortingSearchRequestor extends SearchRequestor {
public static String NONAMESPACE = "nonamespace";
private Map fFound;
public SortingSearchRequestor() {
fFound= new HashMap();
}
/**
* @return a List of {@link SearchMatch}es (sorted by namespace)
*/
public Map/* namespace - <SearchMatch>*/ getResults() {
return fFound;
}
/* (non-Javadoc)
* @see org.eclipse.wst.common.core.search.internal.provisional.SearchRequestor#acceptSearchMatch(org.eclipse.wst.common.search.internal.provisional.SearchMatch)
*/
public void acceptSearchMatch(SearchMatch match) throws CoreException {
if(match != null && match.getObject() instanceof Node){
Node node = (Node)match.getObject();
Element domElement = null;
switch (node.getNodeType()) {
case Node.ATTRIBUTE_NODE:
domElement = ((Attr)node).getOwnerElement();
break;
case Node.ELEMENT_NODE:
domElement = ((Element)node);
break;
default:
break;
}
String namespace = domElement.getNamespaceURI();
if(namespace == null || namespace.equals("")){
namespace = NONAMESPACE;
}
List matches = getMatches(namespace);
matches.add(match);
}
}
private List getMatches(String namespace){
Object matches = fFound.get(namespace);
if(!(matches instanceof List)){
matches = new ArrayList();
fFound.put(namespace, matches);
}
return (List)matches;
}
}