X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fgcr%2Fxml%2FDomContent.java;h=30d590df4f48720768ea011cb55a3cf5c50f5452;hb=51efb630db7314b67654a03d1bd983b45aa2f1ed;hp=b42e0cf0dd8c6f76f33c424c47b0ea996082e9a9;hpb=62f4b67f846f67cdfd96340684e9fcf73bbd14ef;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/gcr/xml/DomContent.java b/org.argeo.cms/src/org/argeo/cms/gcr/xml/DomContent.java index b42e0cf0d..30d590df4 100644 --- a/org.argeo.cms/src/org/argeo/cms/gcr/xml/DomContent.java +++ b/org.argeo.cms/src/org/argeo/cms/gcr/xml/DomContent.java @@ -5,7 +5,7 @@ import java.util.Iterator; 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; @@ -16,21 +16,21 @@ import org.w3c.dom.Text; 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 iterator() { NodeList nodeList = element.getChildNodes(); - return new ElementIterator(contentSession, nodeList); + return new ElementIterator(contentProvider, nodeList); } @Override @@ -63,7 +63,6 @@ public class DomContent extends AbstractContent implements Content { return null; } - @Override public boolean hasText() { // return element instanceof Text; @@ -77,7 +76,7 @@ public class DomContent extends AbstractContent implements Content { 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; @@ -101,4 +100,34 @@ public class DomContent extends AbstractContent implements Content { 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); + + } + }