Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
blob: d140a8c9e5b1d7d0063505dd770a8e0b37b84369 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*******************************************************************************
 * Copyright (c) 2005, 2006 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     
 *******************************************************************************/
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;
			
		}
		
	
}

Back to the top