001    package railo.runtime.text.xml.struct;
002    
003    import org.w3c.dom.Attr;
004    import org.w3c.dom.CDATASection;
005    import org.w3c.dom.Document;
006    import org.w3c.dom.Element;
007    import org.w3c.dom.Node;
008    import org.w3c.dom.Text;
009    
010    
011    /**
012     * 
013     */
014    public final class XMLStructFactory {
015            /**
016             * @param node
017             * @param caseSensitive
018             * @return XMLStruct instance
019             */
020            public static XMLStruct newInstance(Node node, boolean caseSensitive) {
021                    // TODO set Case Sensitive
022                    if(node instanceof XMLStruct) return ((XMLStruct)node);
023                    
024                    if(node instanceof Document) return new XMLDocumentStruct((Document)node,caseSensitive);
025            else if(node instanceof Text) return new XMLTextStruct((Text)node,caseSensitive);
026            else if(node instanceof CDATASection) return new XMLCDATASectionStruct((CDATASection)node,caseSensitive);
027            else if(node instanceof Element) return new XMLElementStruct((Element)node,caseSensitive);
028            else if(node instanceof Attr) return new XMLAttrStruct((Attr)node,caseSensitive);
029            
030            else return new XMLNodeStruct(node,caseSensitive);
031            }
032    }