| /******************************************************************************* |
| * Copyright (c) 2002, 2013 Object Factory Inc. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Object Factory Inc. - Initial implementation |
| *******************************************************************************/ |
| package org.eclipse.ant.internal.ui.dtd.schema; |
| |
| import java.util.HashMap; |
| |
| import org.eclipse.ant.internal.ui.dtd.IElement; |
| import org.eclipse.ant.internal.ui.dtd.ISchema; |
| |
| /** |
| * This is a very simple schema suitable for DTDs. Once constructed, a schema is immutable and could be used by multiple threads. However, since in |
| * general the schema will reflect the internal DTD subset, re-use for multiple documents is problematic. |
| * |
| * @author Bob Foster |
| */ |
| public class Schema implements ISchema { |
| private HashMap<String, IElement> fElementMap = new HashMap<>(); |
| private Exception fErrorException; |
| |
| /** |
| * @see org.eclipse.ant.internal.ui.dtd.ISchema#getElement(java.lang.String) |
| */ |
| @Override |
| public IElement getElement(String qname) { |
| return fElementMap.get(qname); |
| } |
| |
| /** |
| * @see org.eclipse.ant.internal.ui.dtd.ISchema#getElements() |
| */ |
| @Override |
| public IElement[] getElements() { |
| return fElementMap.entrySet().toArray(new IElement[fElementMap.entrySet().size()]); |
| } |
| |
| /** |
| * Add a visible element to the schema. |
| * |
| * @param element |
| * Element to add. |
| */ |
| public void addElement(IElement element) { |
| fElementMap.put(element.getName(), element); |
| } |
| |
| /** |
| * Sets the exception thrown by then parser when the schema was built. Note that the exception does not necessarily mean the schema is incomplete. |
| * |
| * @param e |
| * the Exception |
| */ |
| public void setErrorException(Exception e) { |
| fErrorException = e; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ant.internal.ui.dtd.ISchema#getErrorException() |
| */ |
| @Override |
| public Exception getErrorException() { |
| return fErrorException; |
| } |
| } |