summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/LangHelper.java
diff options
context:
space:
mode:
authorDavid A. Madore <david@procyon.(none)>2010-04-18 18:37:48 +0200
committerDavid A. Madore <david@procyon.(none)>2010-04-18 18:37:48 +0200
commit72c90e8bef113bbbfa944f8a8ce6601d8d44ecfc (patch)
tree27f56b1f2689b13a3ab0b0c98f5f2339133f50e3 /org/madore/damlengine/LangHelper.java
parent98f35c3443d6df4db5a73916d9a4cd80c482f4c5 (diff)
downloaddamlengine-72c90e8bef113bbbfa944f8a8ce6601d8d44ecfc.tar.gz
damlengine-72c90e8bef113bbbfa944f8a8ce6601d8d44ecfc.tar.bz2
damlengine-72c90e8bef113bbbfa944f8a8ce6601d8d44ecfc.zip
Helper class for xml:lang handling.
Diffstat (limited to 'org/madore/damlengine/LangHelper.java')
-rw-r--r--org/madore/damlengine/LangHelper.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/org/madore/damlengine/LangHelper.java b/org/madore/damlengine/LangHelper.java
new file mode 100644
index 0000000..280e5ca
--- /dev/null
+++ b/org/madore/damlengine/LangHelper.java
@@ -0,0 +1,49 @@
+package org.madore.damlengine;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.Element;
+
+public class LangHelper {
+
+ public static final String LANG = "lang";
+
+ public static String getLangNorec(Node node) {
+ if ( node instanceof Element )
+ return ((Element)node).getAttributeNS(DamlEngine.XML_NS, LANG);
+ else
+ return null;
+ }
+
+ public static void setLangNorec(Element node, String lang) {
+ if ( lang == null )
+ throw new Error("lang is null in setLangNorec");
+ node.setAttributeNS(DamlEngine.XML_NS, LANG, lang);
+ }
+
+ public static void unsetLangNorec(Element node) {
+ node.removeAttributeNS(DamlEngine.XML_NS, LANG);
+ }
+
+ public static String getLangRec(Node node) {
+ // node may be null (in which case, return null)
+ while ( node != null ) {
+ String lang = getLangNorec(node);
+ if ( lang != null )
+ return lang;
+ node = node.getParentNode();
+ }
+ return null;
+ }
+
+ public static void setLangRec(Element node, String lang) {
+ if ( lang == null )
+ throw new Error("lang is null in setLangRec");
+ Node parentNode = node.getParentNode();
+ String parentLang = (parentNode!=null)?getLangNorec(parentNode):null;
+ if ( parentLang != null && lang.equals(parentLang) )
+ unsetLangNorec(node);
+ else
+ setLangNorec(node,lang);
+ }
+
+}