package jp.gr.java_conf.abagames.bulletml;
import org.w3c.dom.*;
import org.xml.sax.*;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.parsers.*;
/**
* <b>Vertical</b> is generated by Relaxer based on bulletml.rlx.
* This class is derived from:
*
* <!-- for programmer
* <elementRule role="vertical" type="string"/>
*
* <tag name="vertical">
* <attribute name="type" type="string">
* <enumeration value="absolute"/>
* <enumeration value="relative"/>
* <enumeration value="sequence"/>
* </attribute>
* </tag>
* -->
* <!-- for javadoc -->
* <pre> <elementRule role="vertical" type="string"/>
* <tag name="vertical">
* <attribute name="type" type="string">
* <enumeration value="absolute"/>
* <enumeration value="relative"/>
* <enumeration value="sequence"/>
* </attribute>
* </tag>
* </pre>
*
* @version bulletml.rlx 0.21 (Sun Jun 03 09:44:34 JST 2001)
* @author Relaxer 0.13 (http://www.relaxer.org)
*/
public class Vertical implements java.io.Serializable, IRNSContainer, IRNode
{
private RNSContext rNSContext_ = new RNSContext(this);
private String content_;
private String type_;
private IRNode parentRNode_;
/**
* Creates a <code>Vertical</code>.
*
*/
public Vertical()
{
}
/**
* Creates a <code>Vertical</code> by the Stack <code>stack</code>
* that contains Elements.
* This constructor is supposed to be used internally
* by the Relaxer system.
*
* @param stack
*/
public Vertical(RStack stack)
{
setup(stack);
}
/**
* Creates a <code>Vertical</code> by the Document <code>doc</code>.
*
* @param doc
*/
public Vertical(Document doc)
{
setup(doc.getDocumentElement());
}
/**
* Creates a <code>Vertical</code> by the Element <code>element</code>.
*
* @param element
*/
public Vertical(Element element)
{
setup(element);
}
/**
* Creates a <code>Vertical</code> by the File <code>file</code>.
*
* @param file
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public Vertical(File file) throws IOException, SAXException, ParserConfigurationException
{
setup(file);
}
/**
* Creates a <code>Vertical</code>
* by the String representation of URI <code>uri</code>.
*
* @param uri
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public Vertical(String uri) throws IOException, SAXException, ParserConfigurationException
{
setup(uri);
}
/**
* Creates a <code>Vertical</code> by the URL <code>url</code>.
*
* @param url
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public Vertical(URL url) throws IOException, SAXException, ParserConfigurationException
{
setup(url);
}
/**
* Creates a <code>Vertical</code> by the InputStream <code>in</code>.
*
* @param in
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public Vertical(InputStream in) throws IOException, SAXException, ParserConfigurationException
{
setup(in);
}
/**
* Creates a <code>Vertical</code> by the InputSource <code>is</code>.
*
* @param is
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public Vertical(InputSource is) throws IOException, SAXException, ParserConfigurationException
{
setup(is);
}
/**
* Creates a <code>Vertical</code> by the Reader <code>reader</code>.
*
* @param reader
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public Vertical(Reader reader) throws IOException, SAXException, ParserConfigurationException
{
setup(reader);
}
/**
* Initializes the <code>Vertical</code> by the Document <code>doc</code>.
*
* @param doc
*/
public void setup(Document doc)
{
setup(doc.getDocumentElement());
}
/**
* Initializes the <code>Vertical</code> by the Element <code>element</code>.
*
* @param element
*/
public void setup(Element element)
{
init(element);
}
/**
* Initializes the <code>Vertical</code> by the Stack <code>stack</code>
* that contains Elements.
* This constructor is supposed to be used internally
* by the Relaxer system.
*
* @param stack
*/
public void setup(RStack stack)
{
setup(stack.popElement());
}
/**
* @param element
*/
private void init(Element element)
{
RStack stack = new RStack(element);
rNSContext_.declareNamespace(element);
content_ = URelaxer.getElementPropertyAsString(element);
type_ = URelaxer.getAttributePropertyAsString(element, "type");
}
/**
* Creates a DOM representation of the object.
* Result is appended to the Node <code>parent</code>.
*
* @param parent
*/
public void makeElement(Node parent)
{
Document doc;
if (parent instanceof Document)
{
doc = (Document) parent;
}
else
{
doc = parent.getOwnerDocument();
}
Element element = doc.createElementNS("http://www.asahi-net.or.jp/~cs8k-cyu/bulletml", "vertical");
rNSContext_.setupNamespace(element);
URelaxer.setElementPropertyByString(element, this.content_);
int size;
if (this.type_ != null)
{
URelaxer.setAttributePropertyByString(element, "type", this.type_);
}
parent.appendChild(element);
}
/**
* Initializes the <code>Vertical</code> by the File <code>file</code>.
*
* @param file
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public void setup(File file) throws IOException, SAXException, ParserConfigurationException
{
setup(file.toURL());
}
/**
* Initializes the <code>Vertical</code>
* by the String representation of URI <code>uri</code>.
*
* @param uri
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public void setup(String uri) throws IOException, SAXException, ParserConfigurationException
{
setup(UJAXP.getValidDocument(uri));
}
/**
* Initializes the <code>Vertical</code> by the URL <code>url</code>.
*
* @param url
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public void setup(URL url) throws IOException, SAXException, ParserConfigurationException
{
setup(UJAXP.getValidDocument(url));
}
/**
* Initializes the <code>Vertical</code> by the InputStream <code>in</code>.
*
* @param in
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public void setup(InputStream in) throws IOException, SAXException, ParserConfigurationException
{
setup(UJAXP.getValidDocument(in));
}
/**
* Initializes the <code>Vertical</code> by the InputSource <code>is</code>.
*
* @param is
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public void setup(InputSource is) throws IOException, SAXException, ParserConfigurationException
{
setup(UJAXP.getValidDocument(is));
}
/**
* Initializes the <code>Vertical</code> by the Reader <code>reader</code>.
*
* @param reader
* @exception IOException
* @exception SAXException
* @exception ParserConfigurationException
*/
public void setup(Reader reader) throws IOException, SAXException, ParserConfigurationException
{
setup(UJAXP.getValidDocument(reader));
}
/**
* Creates a DOM document representation of the object.
*
* @exception ParserConfigurationException
* @return Document
*/
public Document makeDocument() throws ParserConfigurationException
{
Document doc = UJAXP.makeDocument();
makeElement(doc);
return (doc);
}
/**
* Gets the RNSContext property <b>rNSContext</b>.
*
* @return RNSContext
*/
public final RNSContext getRNSContext()
{
return (rNSContext_);
}
/**
* Sets the RNSContext property <b>rNSContext</b>.
*
* @param rNSContext
*/
public final void setRNSContext(RNSContext rNSContext)
{
this.rNSContext_ = rNSContext;
}
/**
* Gets the String property <b>content</b>.
*
* @return String
*/
public final String getContent()
{
return (content_);
}
/**
* Sets the String property <b>content</b>.
*
* @param content
*/
public final void setContent(String content)
{
this.content_ = content;
}
/**
* Gets the String property <b>type</b>.
*
* @return String
*/
public final String getType()
{
return (type_);
}
/**
* Sets the String property <b>type</b>.
*
* @param type
*/
public final void setType(String type)
{
this.type_ = type;
}
/**
* Makes a XML text representation.
*
* @return String
*/
public String makeTextDocument()
{
StringBuffer buffer = new StringBuffer();
makeTextElement(buffer);
return (new String(buffer));
}
/**
* Makes a XML text representation.
*
* @param buffer
*/
public void makeTextElement(StringBuffer buffer)
{
int size;
String prefix = rNSContext_.getPrefixByUri("http://www.asahi-net.or.jp/~cs8k-cyu/bulletml");
buffer.append("<");
URelaxer.makeQName(prefix, "vertical", buffer);
rNSContext_.makeNSMappings(buffer);
if (type_ != null)
{
buffer.append(" ");
buffer.append("type");
buffer.append("=\"");
buffer.append(URelaxer.escapeAttrQuot(getType()));
buffer.append("\"");
}
buffer.append(">");
buffer.append("</");
URelaxer.makeQName(prefix, "vertical", buffer);
buffer.append(">");
}
/**
* Makes a XML text representation.
*
* @param buffer
*/
public void makeTextElement(PrintWriter buffer)
{
int size;
String prefix = rNSContext_.getPrefixByUri("http://www.asahi-net.or.jp/~cs8k-cyu/bulletml");
buffer.print("<");
URelaxer.makeQName(prefix, "vertical", buffer);
rNSContext_.makeNSMappings(buffer);
if (type_ != null)
{
buffer.print(" ");
buffer.print("type");
buffer.print("=\"");
buffer.print(URelaxer.escapeAttrQuot(getType()));
buffer.print("\"");
}
buffer.print(">");
buffer.print("</");
URelaxer.makeQName(prefix, "vertical", buffer);
buffer.print(">");
}
/**
* Gets the IRNode property <b>parentRNode</b>.
*
* @return IRNode
*/
public final IRNode getParentRNode()
{
return (parentRNode_);
}
/**
* Sets the IRNode property <b>parentRNode</b>.
*
* @param parentRNode
*/
public final void setParentRNode(IRNode parentRNode)
{
this.parentRNode_ = parentRNode;
}
/**
* Gets child RNodes.
*
* @return IRNode[]
*/
public IRNode[] getRNodes()
{
java.util.List classNodes = new java.util.ArrayList();
IRNode[] nodes = new IRNode[classNodes.size()];
return ((IRNode[]) classNodes.toArray(nodes));
}
/**
* Tests if a Element <code>element</code> is valid
* for the <code>Vertical</code>.
*
* @param element
* @return boolean
*/
public static boolean isMatch(Element element)
{
if (!URelaxer2.isTargetElement(element, "http://www.asahi-net.or.jp/~cs8k-cyu/bulletml", "vertical"))
{
return (false);
}
RStack target = new RStack(element);
Element child;
if (!target.isEmptyElement())
{
return (false);
}
return (true);
}
/**
* Tests if elements contained in a Stack <code>stack</code>
* is valid for the <code>Vertical</code>.
* This mehtod is supposed to be used internally
* by the Relaxer system.
*
* @param stack
* @return boolean
*/
public static boolean isMatch(RStack stack)
{
Element element = stack.peekElement();
if (element == null)
{
return (false);
}
return (isMatch(element));
}
/**
* Tests if elements contained in a Stack <code>stack</code>
* is valid for the <code>Vertical</code>.
* This method consumes the stack contents during matching operation.
* This mehtod is supposed to be used internally
* by the Relaxer system.
*
* @param stack
* @return boolean
*/
public static boolean isMatchHungry(RStack stack)
{
Element element = stack.peekElement();
if (element == null)
{
return (false);
}
if (isMatch(element))
{
stack.popElement();
return (true);
}
else
{
return (false);
}
}
}