xform.java

来自「j2me mobile application for upload file 」· Java 代码 · 共 183 行

JAVA
183
字号
package org.celllife.clforms.api;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Vector;

import minixpath.XPathExpression;

import org.kxml2.io.KXmlSerializer;
import org.kxml2.kdom.Document;
import org.kxml2.kdom.Element;
import org.kxml2.kdom.Node;

import de.enough.polish.util.HashMap;
import de.enough.polish.util.Locale;

public class XForm {

	private String name;
	private Vector elements;
	private Document xmlModel;
	private HashMap bindings;
	private String url;

	public String getUrl() {
		return this.url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public XForm() {
		super();
		this.elements = new Vector();
		this.bindings = new HashMap();
	}

	public XForm(String name, Vector elements, Document model) {
		super();
		this.name = name;
		this.elements = elements;
		this.bindings = new HashMap();
		this.xmlModel = model;
	}

	public void addElement(XFElement newElement) {
		// TODO: why cast to Object?
		elements.addElement((Object) newElement);
	}

	public XFElement getElement(int elementId) {
		return (XFElement) elements.elementAt(elementId);
	}

	public Vector getElements() {
		return elements;
	}

	public void setElements(Vector elements) {
		this.elements = elements;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Document getXmlModel() {
		return xmlModel;
	}

	public void setXmlModel(Document model) {
		this.xmlModel = model;
	}

	public int getElementCount() {
		return elements.size();
	}

	/**
	 * Returns a Vector containing all the elements of the specified type.
	 * 
	 * @param type
	 * @return
	 */
	public Vector getElementsByType(int type) {
		Vector typeElements = new Vector();
		Enumeration e = elements.elements();
		while (e.hasMoreElements()) {
			XFElement elem = (XFElement) e.nextElement();
			if (elem.getDataType() == type)
				typeElements.addElement(elem);
		}

		return typeElements;
	}

	public HashMap getBindings() {
		return this.bindings;
	}

	public void setBindings(HashMap bindings) {
		this.bindings = bindings;
	}

	/**
	 * @param b
	 */
	public void addBinding(Binding b) {
		bindings.put(b.getId(), b);
	}

	/**
	 * Populates the xmlModel with the data contained in the XFElements
	 */
	public void populateModel() {
		Enumeration e = elements.elements();
		while (e.hasMoreElements()) {
			XFElement elem = (XFElement) e.nextElement();
			if (elem.getValue() != null)
				updateModel(elem);
		}
	}

	/**
	 * Updates the xmlModel with the data in a particular element.
	 * 
	 * @param elem
	 */
	private void updateModel(XFElement elem) {
		String xpath = elem.getXpathBinding();
		String value = elem.getStringValue();
		
		if (value != null) {
			
			//#debug debug
			System.out.println(value.toString());
			
			XPathExpression xpls = new XPathExpression(xmlModel, xpath);
			Vector result = xpls.getResult();
			for (Enumeration e = result.elements(); e.hasMoreElements();) {
				Object obj = e.nextElement();
				if (obj instanceof Element)
					((Element) obj).addChild(Node.TEXT, value);
			}
		}

	}

	/**
	 * Evaluates an Xpath expression on the xmlModel and returns a Vector result
	 * set.
	 * 
	 * @param string
	 * @return Vector result set
	 */
	public Vector evaluateXpath(String xpath) {
		XPathExpression xpls = new XPathExpression(xmlModel, xpath);
		return xpls.getResult();
	}

	/**
	 * 
	 */
	public void writeModel(OutputStream stream) {
		try {
			KXmlSerializer serializer = new KXmlSerializer();
			serializer.setOutput(stream, null);
			xmlModel.write(serializer);
			serializer.flush();
		} catch (IOException e) {
			throw new RuntimeException(Locale.get("error.model.write")); //$NON-NLS-1$
		}

	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?