| /******************************************************************************* |
| * Copyright (c) 2001, 2004 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.dtd.core.internal.emf.util; |
| |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import org.eclipse.wst.dtd.core.internal.emf.DTDAttribute; |
| import org.eclipse.wst.dtd.core.internal.emf.DTDElement; |
| import org.eclipse.wst.dtd.core.internal.emf.DTDEntity; |
| import org.eclipse.wst.dtd.core.internal.emf.DTDFile; |
| import org.eclipse.wst.dtd.core.internal.emf.DTDNotation; |
| |
| |
| |
| public class DTDUniqueNameHelper { |
| public DTDUniqueNameHelper() { |
| |
| } |
| |
| static public String getUniqueElementName(DTDFile dtdFile) { |
| List elements = dtdFile.listDTDElement(); |
| return getUniqueName(elements, "NewElement"); //$NON-NLS-1$ |
| } |
| |
| static public String getUniqueEntityName(DTDFile dtdFile) { |
| List entities = dtdFile.listDTDEntity(); |
| return getUniqueName(entities, "NewEntity"); //$NON-NLS-1$ |
| } |
| |
| static public String getUniqueNotationName(DTDFile dtdFile) { |
| List notations = dtdFile.listDTDNotation(); |
| return getUniqueName(notations, "NewNotation"); //$NON-NLS-1$ |
| } |
| |
| static public String getUniqueAttributeName(DTDElement element) { |
| List attrs = element.getDTDAttribute(); |
| return getUniqueName(attrs, "NewAttribute"); //$NON-NLS-1$ |
| } |
| |
| static public String getUniqueName(List objs, String token) { |
| int counter = 1; |
| |
| boolean uniqueName = false; |
| while (!uniqueName) { |
| String newName = token + new Integer(counter++); |
| uniqueName = true; |
| Iterator iter = objs.iterator(); |
| while (iter.hasNext()) { |
| Object obj = iter.next(); |
| String objName = getName(obj); |
| if (objName.equals(newName)) { |
| uniqueName = false; |
| break; |
| } |
| } |
| if (uniqueName) { |
| return newName; |
| } |
| } |
| // we shouldn't get here |
| return "No Name found"; //$NON-NLS-1$ |
| } |
| |
| static public String getName(Object obj) { |
| if (obj instanceof DTDElement) { |
| return ((DTDElement) obj).getName(); |
| } |
| else if (obj instanceof DTDEntity) { |
| return ((DTDEntity) obj).getName(); |
| } |
| else if (obj instanceof DTDNotation) { |
| return ((DTDNotation) obj).getName(); |
| } |
| else if (obj instanceof DTDAttribute) { |
| return ((DTDAttribute) obj).getName(); |
| } |
| return ""; //$NON-NLS-1$ |
| } |
| |
| |
| /** |
| * @generated |
| */ |
| protected static String getUniqueElementNameGen(DTDFile dtdFile) { |
| |
| List elements = dtdFile.listDTDElement(); |
| return getUniqueName(elements, "NewElement"); //$NON-NLS-1$ |
| } |
| |
| /** |
| * @generated |
| */ |
| protected static String getUniqueEntityNameGen(DTDFile dtdFile) { |
| |
| List entities = dtdFile.listDTDEntity(); |
| return getUniqueName(entities, "NewEntity"); //$NON-NLS-1$ |
| } |
| |
| /** |
| * @generated |
| */ |
| protected static String getUniqueNotationNameGen(DTDFile dtdFile) { |
| |
| List notations = dtdFile.listDTDNotation(); |
| return getUniqueName(notations, "NewNotation"); //$NON-NLS-1$ |
| } |
| |
| /** |
| * @generated |
| */ |
| protected static String getUniqueAttributeNameGen(DTDElement element) { |
| |
| List attrs = element.getDTDAttribute(); |
| return getUniqueName(attrs, "NewAttribute"); //$NON-NLS-1$ |
| } |
| |
| /** |
| * @generated |
| */ |
| protected static String getUniqueNameGen(List objs, String token) { |
| |
| int counter = 1; |
| |
| boolean uniqueName = false; |
| while (!uniqueName) { |
| String newName = token + new Integer(counter++); |
| uniqueName = true; |
| Iterator iter = objs.iterator(); |
| while (iter.hasNext()) { |
| Object obj = iter.next(); |
| String objName = getName(obj); |
| if (objName.equals(newName)) { |
| uniqueName = false; |
| break; |
| } |
| } |
| if (uniqueName) { |
| return newName; |
| } |
| } |
| // we shouldn't get here |
| return "No Name found"; //$NON-NLS-1$ |
| } |
| |
| /** |
| * @generated |
| */ |
| protected static String getNameGen(Object obj) { |
| |
| if (obj instanceof DTDElement) { |
| return ((DTDElement) obj).getName(); |
| } |
| else if (obj instanceof DTDEntity) { |
| return ((DTDEntity) obj).getName(); |
| } |
| else if (obj instanceof DTDNotation) { |
| return ((DTDNotation) obj).getName(); |
| } |
| else if (obj instanceof DTDAttribute) { |
| return ((DTDAttribute) obj).getName(); |
| } |
| return ""; //$NON-NLS-1$ |
| } |
| }// DTDUniqueNameHelper |