[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model/brunata/io XMLDocument.java, NONE,
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2010-02-12 11:44:36
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/brunata/io In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv28029/src/net/sourceforge/bprocessor/model/brunata/io Added Files: XMLDocument.java Atom.java DocumentParser.java Element.java BPersistence.java Property.java Data.java Properties.java Log Message: --- NEW FILE: DocumentParser.java --- //--------------------------------------------------------------------------------- // $Id: DocumentParser.java,v 1.1 2010/02/12 11:44:28 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.model.brunata.io; import java.io.IOException; import java.io.InputStream; import java.util.LinkedList; import java.util.List; import java.util.Stack; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.XMLReaderFactory; public class DocumentParser { public XMLDocument parse(InputStream input) throws SAXException, IOException { XMLReader reader = XMLReaderFactory.createXMLReader(); DocumentHandler handler = new DocumentHandler(); reader.setContentHandler(handler); reader.setErrorHandler(handler); InputSource source = new InputSource(input); source.setEncoding("UTF8"); reader.parse(source); return document; } XMLDocument document; private class DocumentHandler extends DefaultHandler { Stack<Element> stack; Element root; private Properties asProperties(Attributes attributes) { List<Property> content = new LinkedList(); for (int i = 0; i < attributes.getLength(); i++) { String name = attributes.getLocalName(i); String value = attributes.getValue(i); Property property = new Property(name, value); content.add(property); } Properties properties = new Properties(content); return properties; } public void startDocument() { stack = new Stack(); } public void endDocument() { document = new XMLDocument(root); } public void startElement(String uri, String name, String cue, Attributes attributes) { Properties properties = asProperties(attributes); Element element = new Element(name, properties); stack.push(element); } public void endElement(String uri, String name, String cue) { Element element = stack.pop(); if (!stack.isEmpty()) { Element top = stack.peek(); top.add(element); } else { root = element; } } } } --- NEW FILE: Properties.java --- //--------------------------------------------------------------------------------- // $Id: Properties.java,v 1.1 2010/02/12 11:44:28 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.model.brunata.io; import java.util.List; public class Properties { List<Property> content; public Properties(List<Property> content) { this.content = content; } public String getValue(String key) { for (Property current : content) { if (current.key.equals(key)) { return current.value; } } return null; } public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append(" | "); for (Property current : content) { buffer.append(current.key + "=" + "\"" + current.value + "\""); buffer.append(" "); } return buffer.toString(); } } --- NEW FILE: XMLDocument.java --- //--------------------------------------------------------------------------------- // $Id: XMLDocument.java,v 1.1 2010/02/12 11:44:28 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.model.brunata.io; import java.io.PrintStream; public class XMLDocument { Element root; public XMLDocument(Element root) { this.root = root; } public Element getRoot() { return root; } public void display(PrintStream out) { root.display(out, 0); } } --- NEW FILE: Data.java --- //--------------------------------------------------------------------------------- // $Id: Data.java,v 1.1 2010/02/12 11:44:28 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.model.brunata.io; public class Data extends Atom { String value; public Data(String value) { this.value = value; } } --- NEW FILE: BPersistence.java --- //--------------------------------------------------------------------------------- // $Id: BPersistence.java,v 1.1 2010/02/12 11:44:28 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.model.brunata.io; import java.util.LinkedList; import java.util.List; public class BPersistence { private class Internalizer { private XMLDocument document; public Internalizer(XMLDocument document) { this.document = document; } public List<Serie> internalize() { return internalizeDataseries(document.getRoot()); } public List<Serie> internalizeDataseries(Element xml) { List<Serie> series = new LinkedList(); for (Atom atom : xml.getChildren()) { if (atom instanceof Element) { Element element = (Element) atom; series.add(internalizeDataserie(element)); } } return series; } private Serie internalizeDataserie(Element xml) { Serie serie = new Serie(xml.getValue("regType")); for (Atom atom : xml.getChildren()) { if (atom instanceof Element) { Element element = (Element) atom; serie.add(internalizeDataitem(element)); } } return serie; } private DataItem internalizeDataitem(Element xml) { DataItem item = new DataItem(); item.timestamp = Long.valueOf(xml.getValue("timestamp")); item.value = Double.valueOf(xml.getValue("value")); return item; } } public class Serie { String type; List<DataItem> items; public Serie(String t) { type = t; items = new LinkedList(); } public void add(DataItem item) { items.add(item); } public List<DataItem> items() { return items; } public int size() { return items.size(); } public String getType() { return type; } } public class DataItem { public double value; public long timestamp; } public List<Serie> internalize(XMLDocument document) { Internalizer internalizer = new Internalizer(document); return internalizer.internalize(); } } --- NEW FILE: Property.java --- //--------------------------------------------------------------------------------- // $Id: Property.java,v 1.1 2010/02/12 11:44:28 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.model.brunata.io; public class Property { String key; String value; public Property(String key, String value) { this.key = key; this.value = value; } } --- NEW FILE: Element.java --- //--------------------------------------------------------------------------------- // $Id: Element.java,v 1.1 2010/02/12 11:44:28 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.model.brunata.io; import java.io.PrintStream; import java.util.LinkedList; import java.util.List; public class Element extends Atom { String tag; List<Atom> children; Properties properties; public Element(String tag, Properties properties) { this.tag = tag; this.properties = properties; } public void add(Element element) { if (children == null) { children = new LinkedList(); } children.add(element); } public String getTag() { return tag; } public List<Atom> getChildren() { return children; } public String getValue(String key) { return properties.getValue(key); } public void display(PrintStream out, int level) { for (int i = 0; i < level; i++) { System.out.print(" "); } out.print(tag); out.println(properties); if (children != null) { for (Atom current : children) { current.display(out, level + 1); } } } } --- NEW FILE: Atom.java --- //--------------------------------------------------------------------------------- // $Id: Atom.java,v 1.1 2010/02/12 11:44:28 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.model.brunata.io; import java.io.PrintStream; public class Atom { public void display(PrintStream out, int i) { // nothing } } |