package railo.runtime.text.xml.struct;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
import railo.runtime.text.xml.XMLCaster;
import railo.runtime.text.xml.XMLUtil;
import railo.runtime.type.Collection;
/**
*
*/
public final class XMLTextStruct extends XMLNodeStruct implements Text {
private Text text;
/**
* @param text
* @param caseSensitive
*/
public XMLTextStruct(Text text, boolean caseSensitive) {
super(text,caseSensitive);
this.text=text;
}
@Override
public Text splitText(int offset) throws DOMException {
return text.splitText(offset);
}
@Override
public int getLength() {
return text.getLength();
}
@Override
public void deleteData(int offset, int count) throws DOMException {
text.deleteData(offset,count);
}
@Override
public String getData() throws DOMException {
return text.getData();
}
@Override
public String substringData(int offset, int count) throws DOMException {
return text.substringData(offset,count);
}
@Override
public void replaceData(int offset, int count, String arg)
throws DOMException {
text.replaceData(offset,count,arg);
}
@Override
public void insertData(int offset, String arg) throws DOMException {
text.insertData(offset,arg);
}
@Override
public void appendData(String arg) throws DOMException {
text.appendData(arg);
}
@Override
public void setData(String data) throws DOMException {
text.setData(data);
}
public boolean isElementContentWhitespace() {
return text.getNodeValue().trim().length()==0;
}
public String getWholeText() {
return text.getNodeValue();
}
public Text replaceWholeText(String content) throws DOMException {
Text oldText = text;
Document doc = XMLUtil.getDocument(text);
Text newText = doc.createTextNode(content);
Node parent = oldText.getParentNode();
parent.replaceChild(XMLCaster.toRawNode(newText),XMLCaster.toRawNode(oldText));
return oldText;
}
@Override
public Collection duplicate(boolean deepCopy) {
return new XMLTextStruct((Text)text.cloneNode(deepCopy),caseSensitive);
}
@Override
public Node cloneNode(boolean deep) {
return new XMLTextStruct((Text)text.cloneNode(deep),caseSensitive);
}
}