import java.util.Set;
import org.argeo.api.gcr.Content;
-import org.argeo.api.gcr.ContentSystemProvider;
+import org.argeo.api.gcr.ContentName;
import org.argeo.api.gcr.spi.AbstractContent;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
public class DomContent extends AbstractContent implements Content {
- private final DomContentSession contentSession;
+ private final DomContentProvider contentProvider;
private final Element element;
// private String text = null;
private Boolean hasText = null;
- public DomContent(DomContentSession contentSession, Element element) {
- this.contentSession = contentSession;
+ public DomContent(DomContentProvider contentProvider, Element element) {
+ this.contentProvider = contentProvider;
this.element = element;
}
@Override
public Iterator<Content> iterator() {
NodeList nodeList = element.getChildNodes();
- return new ElementIterator(contentSession, nodeList);
+ return new ElementIterator(contentProvider, nodeList);
}
@Override
return null;
}
-
@Override
public boolean hasText() {
// return element instanceof Text;
nodes: for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node instanceof Text) {
- Text text =(Text) node;
+ Text text = (Text) node;
if (!text.isElementContentWhitespace()) {
hasText = true;
break nodes;
return null;
}
+ @Override
+ public Content getParent() {
+ Node parent = element.getParentNode();
+ if (parent == null)
+ return null;
+ if (!(parent instanceof Element))
+ throw new IllegalStateException("Parent is not an element");
+ return new DomContent(contentProvider, (Element) parent);
+ }
+
+ @Override
+ public Content add(String name, ContentName... classes) {
+ // TODO consider classes
+ Element child = contentProvider.createElement(name);
+ return new DomContent(contentProvider, child);
+ }
+
+ @Override
+ public void remove() {
+ // TODO make it more robust
+ element.getParentNode().removeChild(element);
+
+ }
+
+ @Override
+ protected void removeAttr(String key) {
+ element.removeAttribute(key);
+
+ }
+
}