XMLStreamNode.java

Go to the documentation of this file.
00001 
00002 //
00003 // XML storage classes version 1.5
00004 //
00005 // XMLStreamNode.java
00006 //
00007 // Copyright (c) 2008, 2010 Martin Fuchs <martin-fuchs@gmx.net>
00008 //
00009 
00010 
00011 /*
00012 
00013  All rights reserved.
00014 
00015  Redistribution and use in source and binary forms, with or without
00016  modification, are permitted provided that the following conditions are met:
00017 
00018  * Redistributions of source code must retain the above copyright
00019     notice, this list of conditions and the following disclaimer.
00020  * Redistributions in binary form must reproduce the above copyright
00021     notice, this list of conditions and the following disclaimer in
00022     the documentation and/or other materials provided with the
00023     distribution.
00024 
00025  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00026  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00028  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00029  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00030  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00031  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00032  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00033  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00034  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00035  POSSIBILITY OF SUCH DAMAGE.
00036 
00037 */
00038 
00039 package de.mfuchs.xmlstorage.stream;
00040 
00041 import java.util.TreeMap;
00042 
00043 import de.mfuchs.xmlstorage.AbstractXMLNode;
00044 import de.mfuchs.xmlstorage.XMLHelper;
00045 
00046 
00047 /**
00048  * XMLStreamNode is used to hold the data of the current XML Node in XMLStreamReader.
00049  */
00050 public final class XMLStreamNode extends AbstractXMLNode
00051 {
00052     private String _name = "";
00053     private String _content = "";
00054     private TreeMap<String, String> _attributes = new TreeMap<String, String>();
00055 
00056     /**
00057      * Empty XMLStreamNode default constructor.
00058      */
00059     public XMLStreamNode()
00060     {
00061     }
00062 
00063     public String getName()
00064     {
00065         return _name;
00066     }
00067 
00068     public String toString()
00069     {
00070         return _name;
00071     }
00072 
00073     protected void assign(String name)
00074     {
00075         _name = name;
00076         _content = "";
00077         _attributes.clear();
00078     }
00079 
00080     protected void setContent(String content)
00081     {
00082         _content = content;
00083     }
00084 
00085     protected void setAttributes(javax.xml.stream.XMLStreamReader reader)
00086     {
00087         int attributes = reader.getAttributeCount();
00088 
00089         for(int n=0; n<attributes; ++n) {
00090             final String attrNS = reader.getAttributeNamespace(n);
00091             final String attrName = reader.getAttributeLocalName(n);
00092             final String attrValue = reader.getAttributeValue(n);
00093 
00094             if (attrNS != null)
00095                 _attributes.put(attrNS+":"+attrName, attrValue);
00096             else
00097                 _attributes.put(attrName, attrValue);
00098         }
00099     }
00100 
00101      /// read only access to an attribute
00102     public String get(final String attrName)
00103     {
00104         String found = _attributes.get(attrName);
00105 
00106         if (found != null)
00107             return found;
00108         else
00109             return "";
00110     }
00111 
00112      /// read only access to an attribute with default value
00113     public String get(final String attrName, final String def)
00114     {
00115         String found = _attributes.get(attrName);
00116 
00117         if (found != null)
00118             return found;
00119         else
00120             return def;
00121     }
00122 
00123     /**
00124      * Return content data.
00125      */
00126     public String getContent()
00127     {
00128         return XMLHelper.decodeXMLString(_content);
00129     }
00130 }