summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/TodoWeblogSelectElement.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2011-08-28 19:52:02 +0200
committerDavid A. Madore <david+git@madore.org>2011-08-28 19:52:02 +0200
commit3b1023c45a919f25ef38c080f2ac2c0dc5d5e7ca (patch)
tree109f659090d4f08bc11f8da0f16fbff364dbbf9a /org/madore/damlengine/TodoWeblogSelectElement.java
parent9c54e57c4a2e7029d8dbcd65ae63353135a18401 (diff)
downloaddamlengine-3b1023c45a919f25ef38c080f2ac2c0dc5d5e7ca.tar.gz
damlengine-3b1023c45a919f25ef38c080f2ac2c0dc5d5e7ca.tar.bz2
damlengine-3b1023c45a919f25ef38c080f2ac2c0dc5d5e7ca.zip
(Preliminary) handling of weblog entry selection and summary.
Diffstat (limited to 'org/madore/damlengine/TodoWeblogSelectElement.java')
-rw-r--r--org/madore/damlengine/TodoWeblogSelectElement.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/org/madore/damlengine/TodoWeblogSelectElement.java b/org/madore/damlengine/TodoWeblogSelectElement.java
new file mode 100644
index 0000000..145b938
--- /dev/null
+++ b/org/madore/damlengine/TodoWeblogSelectElement.java
@@ -0,0 +1,54 @@
+package org.madore.damlengine;
+
+import java.util.ArrayList;
+import org.w3c.dom.*;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSParser;
+import org.w3c.dom.ls.LSInput;
+
+public final class TodoWeblogSelectElement extends TodoDefaultElement {
+
+ public static class Factory extends TodoElement.Factory {
+ @Override
+ public TodoWeblogSelectElement newItem(Element node,
+ Context ctx,
+ TodoItem caller) {
+ return new TodoWeblogSelectElement(node, ctx, caller);
+ }
+ }
+
+ public TodoWeblogSelectElement(Element node,
+ Context ctx,
+ TodoItem caller) {
+ super(node, ctx, caller);
+ }
+
+ @Override
+ public void handleNodeOnly() {
+ if ( ctx.wsc == null ) {
+ throw new IllegalStateException("weblog-select element encountered with no weblog selection state");
+ }
+ final DOMImplementationLS domi
+ = (DOMImplementationLS)ctx.doc.getImplementation();
+ LSParser par = domi.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null);
+ ArrayList<TodoElement> toProcess
+ = new ArrayList<TodoElement>(ctx.wsc.xmlData.size());
+ for ( String str : ctx.wsc.xmlData ) {
+ LSInput input = domi.createLSInput();
+ input.setStringData(str);
+ // Xerces2 does not implement parseWithContext() :-(
+ // Node newNode = par.parseWithContext(input, node,
+ // LSParser.ACTION_INSERT_BEFORE);
+ Document temp = par.parse(input);
+ Node newNode = ctx.doc.adoptNode(temp.getDocumentElement());
+ node.getParentNode().insertBefore(newNode, node);
+ TodoElement it
+ = TodoElement.getTodoElement((Element)newNode,
+ this.ctx, this);
+ toProcess.add(it);
+ }
+ node.getParentNode().removeChild(node);
+ this.ownerDeque.registerAtStart(toProcess);
+ }
+
+}