1 /******************************************************************************* 2 * Copyright (c) 2006, 2008 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.jdt.internal.corext.refactoring.reorg; 15 16 import org.eclipse.core.resources.IResource; 17 18 import org.eclipse.ltk.core.refactoring.participants.ReorgExecutionLog; 19 20 import org.eclipse.jdt.core.ICompilationUnit; 21 import org.eclipse.jdt.core.IPackageFragment; 22 import org.eclipse.jdt.core.IPackageFragmentRoot; 23 24 /** 25 * Logged implementation of new name queries. 26 * 27 * @since 3.3 28 */ 29 public final class LoggedNewNameQueries implements INewNameQueries { 30 31 /** Default implementation of a new name query */ 32 private final class NewNameQuery implements INewNameQuery { 33 34 /** The name */ 35 private final String fName; 36 37 /** The object */ 38 private final Object fObject; 39 40 /** 41 * Creates a new new name query. 42 * 43 * @param object 44 * the object 45 * @param name 46 * the initial suggested name 47 */ NewNameQuery(final Object object, String name)48 public NewNameQuery(final Object object, String name) { 49 fObject= object; 50 fName= name; 51 } 52 53 /** 54 * Returns the new name of the compilation unit, without any extension. 55 * 56 * @return the new name, or <code>null</code> 57 */ getCompilationUnitName()58 private String getCompilationUnitName() { 59 String name= fLog.getNewName(fObject); 60 if (name != null) { 61 int index= name.lastIndexOf('.'); 62 if (index > 0) 63 name= name.substring(0, index); 64 } 65 return name; 66 } 67 68 @Override getNewName()69 public String getNewName() { 70 String name= null; 71 if (fObject instanceof ICompilationUnit) 72 name= getCompilationUnitName(); 73 else 74 name= fLog.getNewName(fObject); 75 if (name == null) 76 name= fName; 77 return fName; 78 } 79 } 80 81 /** The reorg execution log */ 82 private final ReorgExecutionLog fLog; 83 84 /** 85 * Creates a new logged new name queries. 86 * 87 * @param log 88 * the reorg execution log 89 */ LoggedNewNameQueries(final ReorgExecutionLog log)90 public LoggedNewNameQueries(final ReorgExecutionLog log) { 91 fLog= log; 92 } 93 94 @Override createNewCompilationUnitNameQuery(final ICompilationUnit unit, final String initialSuggestedName)95 public INewNameQuery createNewCompilationUnitNameQuery(final ICompilationUnit unit, final String initialSuggestedName) { 96 return new NewNameQuery(unit, initialSuggestedName); 97 } 98 99 @Override createNewPackageFragmentRootNameQuery(final IPackageFragmentRoot root, final String initialSuggestedName)100 public INewNameQuery createNewPackageFragmentRootNameQuery(final IPackageFragmentRoot root, final String initialSuggestedName) { 101 return new NewNameQuery(root, initialSuggestedName); 102 } 103 104 @Override createNewPackageNameQuery(final IPackageFragment fragment, final String initialSuggestedName)105 public INewNameQuery createNewPackageNameQuery(final IPackageFragment fragment, final String initialSuggestedName) { 106 return new NewNameQuery(fragment, initialSuggestedName); 107 } 108 109 @Override createNewResourceNameQuery(final IResource resource, final String initialSuggestedName)110 public INewNameQuery createNewResourceNameQuery(final IResource resource, final String initialSuggestedName) { 111 return new NewNameQuery(resource, initialSuggestedName); 112 } 113 114 @Override createNullQuery()115 public INewNameQuery createNullQuery() { 116 return createStaticQuery(null); 117 } 118 119 @Override createStaticQuery(final String name)120 public INewNameQuery createStaticQuery(final String name) { 121 return () -> name; 122 } 123 } 124