From: <ri...@us...> - 2007-03-01 07:46:51
|
Revision: 88 http://techne-dev.svn.sourceforge.net/techne-dev/?rev=88&view=rev Author: rickles Date: 2007-02-28 23:46:51 -0800 (Wed, 28 Feb 2007) Log Message: ----------- Utility for XML parsing. Added Paths: ----------- sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/ sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/ConfigHandler.java sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/SimpleElement.java sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/bundle.java sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/container.java sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/containertype.java Added: sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/ConfigHandler.java =================================================================== --- sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/ConfigHandler.java (rev 0) +++ sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/ConfigHandler.java 2007-03-01 07:46:51 UTC (rev 88) @@ -0,0 +1,81 @@ +package org.digivitality.techne.core.util; + +import org.xml.sax.*; +import org.xml.sax.helpers.*; +import java.util.*; +import java.lang.reflect.*; + +public class ConfigHandler extends DefaultHandler { + Stack stack = new Stack(); + SimpleElement element; + + public void startElement(String namespace, String localname, String qname, Attributes atts) + throws SAXException { + + SimpleElement element = null; + String key = null; + try { + element = (SimpleElement)Class.forName("org.digivitality.techne.core.util." + qname).newInstance(); + } catch (Exception e) {/*No class for element*/} + + for(int i=0; i<atts.getLength(); i++) { + element.setAttributeValue(atts.getQName(i), atts.getValue(i)); + } + + stack.push(element); + } + + public void endElement(String namespace, String localname, String qname) + throws SAXException { + + element = (SimpleElement)stack.pop(); + + if (!stack.empty()) { + try { + //System.out.println("qname: " + qname); + //System.out.println("stack object: " + stack.peek()); + //System.out.println("element: " + element); + setProperty(qname, stack.peek(), element ); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public void characters(char[] ch, int start, int len) { + String text = new String(ch, start, len); + ((SimpleElement)(stack.peek())).addText(text); + } + + void setProperty(String name, Object target, Object value) throws SAXException { + //System.out.println("property: " + name); + //System.out.println("target: " + target.getClass()); + //System.out.println("value: " + value.getClass()); + Method method = null; + try { + method = target.getClass().getMethod( + "add" + name, new Class[] { value.getClass() } ); + // invoke the method + //System.out.println("Method to execute: " + method.toString()); + method.invoke(target, new Object[]{value}); + } catch (Exception e) {throw new SAXException(e.toString()); } + /* + if (method == null) { + try { + method = target.getClass().getMethod( + "set" + name, new Class[] { value.getClass()} ); + method.invoke(target.getClass().newInstance(), new Object[]{value}); + } catch (Exception e) {throw new SAXException(e.toString()); } + } + */ + if (method == null) { + throw new SAXException("No add method detected for " + target.getClass()); + } + + this.element = (SimpleElement)target; + } + + public SimpleElement getModel() { + return element; + } +} Added: sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/SimpleElement.java =================================================================== --- sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/SimpleElement.java (rev 0) +++ sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/SimpleElement.java 2007-03-01 07:46:51 UTC (rev 88) @@ -0,0 +1,26 @@ +package org.digivitality.techne.core.util; + +import java.util.HashMap; +import java.util.Map; + +public class SimpleElement { + + StringBuffer text = new StringBuffer(); + Map properties = new HashMap(); + + public void addText(String s) { + text.append(s); + } + + public String getText() { + return text.toString(); + } + + public void setAttributeValue(String key, String value) { + properties.put(key, value); + } + + public Map getProperties() { + return properties; + } +} Added: sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/bundle.java =================================================================== --- sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/bundle.java (rev 0) +++ sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/bundle.java 2007-03-01 07:46:51 UTC (rev 88) @@ -0,0 +1,14 @@ +package org.digivitality.techne.core.util; + +public class bundle extends SimpleElement { + + String url; + + public void seturl(String url) { + this.url = url; + } + + public String getusr() { + return url; + } +} Added: sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/container.java =================================================================== --- sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/container.java (rev 0) +++ sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/container.java 2007-03-01 07:46:51 UTC (rev 88) @@ -0,0 +1,18 @@ +package org.digivitality.techne.core.util; + +import java.util.ArrayList; +import java.util.List; + +public class container extends SimpleElement { + + List containerTypes = new ArrayList(); + + public void addcontainertype(containertype ct) { + //System.out.println("Adding containertype " + ct); + containerTypes.add(ct); + } + + public List getContainerTypes() { + return containerTypes; + } +} Added: sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/containertype.java =================================================================== --- sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/containertype.java (rev 0) +++ sandbox/rickles/org.digivitality.techne.core/src/org/digivitality/techne/core/util/containertype.java 2007-03-01 07:46:51 UTC (rev 88) @@ -0,0 +1,38 @@ +package org.digivitality.techne.core.util; + +import java.util.ArrayList; +import java.util.List; + +public class containertype extends SimpleElement { + + List bundles = new ArrayList(); + String value; + String base; + + public void addbundle(bundle b) { + bundles.add(b); + } + public List getBundles() { + return bundles; + } + + public void setbundles(List bundles) { + this.bundles = bundles; + } + + public void setvalue(String value) { + this.value = value; + } + + public String getvalue() { + return value; + } + + public void setbase(String base) { + this.base = base; + } + + public String getbase() { + return base; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |