| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2007 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 implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.library.edit.validation; |
| |
| import java.util.Collection; |
| import java.util.HashSet; |
| import java.util.Iterator; |
| import java.util.Set; |
| |
| import org.eclipse.epf.uma.DescribableElement; |
| import org.eclipse.epf.uma.MethodElement; |
| |
| |
| /** |
| * This class is a helper class for method element unique name handling |
| * |
| * @author Weiping Lu |
| * @since 1.2 |
| */ |
| public class UniqueNameHandler { |
| private Set<String> names = new HashSet<String>(); |
| |
| /** |
| * Empty constructor |
| */ |
| public UniqueNameHandler() { |
| } |
| |
| /** |
| * @param elements |
| */ |
| public void registerNames(Collection<? extends MethodElement> elements) { |
| if (elements == null) { |
| return; |
| } |
| for (Iterator<? extends MethodElement> it = elements.iterator(); it.hasNext();) { |
| MethodElement element = it.next(); |
| register(element.getName()); |
| } |
| } |
| |
| /** |
| * @param elements |
| */ |
| public void registerPresentationNames(Collection<? extends MethodElement> elements) { |
| if (elements == null) { |
| return; |
| } |
| for (Iterator<? extends MethodElement> it = elements.iterator(); it.hasNext();) { |
| MethodElement element = it.next(); |
| register(element.getPresentationName()); |
| } |
| } |
| |
| /** |
| * @param element |
| */ |
| public void register(String name) { |
| names.add(name.toUpperCase()); |
| } |
| |
| /** |
| * @param element |
| */ |
| public String getUniqueName(String oldName) { |
| String name = oldName; |
| int i = 0; |
| while(names.contains(name.toUpperCase())) { |
| i++; |
| name = oldName + "_" + i; //$NON-NLS-1$ |
| } |
| return name; |
| } |
| |
| public void ensureUnique(MethodElement element) { |
| String name = getUniqueName(element.getName()); |
| if (! name.equals(element.getName())) { |
| element.setName(name); |
| } |
| register(name); |
| } |
| |
| |
| } |