1 /*******************************************************************************
2 * Copyright (c) 2000, 2011 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.jdt.internal.corext.refactoring.util;
13 import java.util.Arrays;
14 import java.util.Collection;
15 import java.util.HashMap;
16 import java.util.Iterator;
17 import java.util.List;
21 import org.eclipse.core.resources.IFile;
23 import org.eclipse.ltk.core.refactoring.Change;
24 import org.eclipse.ltk.core.refactoring.CompositeChange;
25 import org.eclipse.ltk.core.refactoring.TextChange;
26 import org.eclipse.ltk.core.refactoring.TextFileChange;
28 import org.eclipse.jdt.internal.corext.refactoring.RefactoringCoreMessages;
30 public class QualifiedNameSearchResult {
32 private Map<IFile, TextChange> fChanges;
34 public QualifiedNameSearchResult() {
35 fChanges= new HashMap<IFile, TextChange>();
38 public TextChange getChange(IFile file) {
39 TextChange result= fChanges.get(file);
41 result= new TextFileChange(file.getName(), file);
42 fChanges.put(file, result);
47 public TextChange[] getAllChanges() {
48 Collection<TextChange> values= fChanges.values();
49 return values.toArray(new TextChange[values.size()]);
52 public IFile[] getAllFiles() {
53 Set<IFile> keys= fChanges.keySet();
54 return keys.toArray(new IFile[keys.size()]);
57 public Change getSingleChange(IFile[] alreadyTouchedFiles) {
58 Collection<TextChange> values= fChanges.values();
59 if (values.size() == 0)
62 CompositeChange result= new CompositeChange(RefactoringCoreMessages.QualifiedNameSearchResult_change_name);
63 result.markAsSynthetic();
64 List<IFile> files= Arrays.asList(alreadyTouchedFiles);
65 for (Iterator<TextChange> iter= values.iterator(); iter.hasNext();) {
66 TextFileChange change= (TextFileChange)iter.next();
67 if (!files.contains(change.getFile())) {