/*
* @(#)DOMInput.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.xml;
import edu.umd.cs.findbugs.annotations.Nullable;
import java.io.IOException;
/**
* DOMInput.
* <p>
* <hr>
* <b>Design Patterns</b>
*
* <p><em>Abstract Factory</em><br>
* {@code DOMFactory} is used by {@code DOMInput} and {@code DOMOutput} for
* creating Java objects and DOM elements.
* Abstract Factory: {@link DOMFactory}<br>
* Client: {@link DOMInput}, {@link DOMOutput}.
*
* <p><em>Strategy</em><br>
* {@code DOMFactory} is used by {@code DOMInput} and {@code DOMOutput} for
* reading and writing objects.
* Client: {@link DOMInput}, {@link DOMOutput}.<br>
* Strategy: {@link DOMFactory}.<br>
*
* @author Werner Randelshofer
* @version $Id$
*/
public interface DOMInput {
/**
* Returns the tag name of the current element.
*/
public String getTagName();
/**
* Gets an attribute of the current element of the DOM Document.
*/
@Nullable public String getAttribute(String name, @Nullable String defaultValue);
/**
* Gets the text of the current element of the DOM Document.
*/
@Nullable public String getText();
/**
* Gets the text of the current element of the DOM Document.
*/
@Nullable public String getText(@Nullable String defaultValue);
/**
* Gets an attribute of the current element of the DOM Document.
*/
public int getAttribute(String name, int defaultValue);
/**
* Gets an attribute of the current element of the DOM Document.
*/
public double getAttribute(String name, double defaultValue);
/**
* Gets an attribute of the current element of the DOM Document.
*/
public boolean getAttribute(String name, boolean defaultValue);
/**
* Gets an attribute of the current element of the DOM Document and of
* all parent DOM elements.
*/
public java.util.List<String> getInheritedAttribute(String name);
/**
* Returns the number of child elements of the current element.
*/
public int getElementCount();
/**
* Returns the number of child elements with the specified tag name
* of the current element.
*/
public int getElementCount(String tagName);
/**
* Opens the element with the specified index and makes it the current node.
*/
public void openElement(int index) throws IOException;
/**
* Opens the last element with the specified name and makes it the current node.
*/
public void openElement(String tagName) throws IOException;
/**
* Opens the element with the specified name and index and makes it the
* current node.
*/
public void openElement(String tagName, int index) throws IOException;
/**
* Closes the current element of the DOM Document.
* The parent of the current element becomes the current element.
* @exception IllegalArgumentException if the provided tagName does
* not match the tag name of the element.
*/
public void closeElement();
/**
* Reads an object from the current element.
*/
public Object readObject() throws IOException;
/**
* Reads an object from the current element.
*/
public Object readObject(int index) throws IOException ;
}