All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.bluejoe.xmlbeans.node.PropertyNode Maven / Gradle / Ivy

package cn.bluejoe.xmlbeans.node;

import org.dom4j.Element;

import cn.bluejoe.xmlbeans.node.value.AbstractXmlNode;
import cn.bluejoe.xmlbeans.node.value.BeanRefNode;
import cn.bluejoe.xmlbeans.node.value.StringValueNode;
import cn.bluejoe.xmlbeans.node.value.ValueNode;
import cn.bluejoe.xmlbeans.node.value.ValueNodeDelegate;

/**
 * @author [email protected]
 */

public class PropertyNode extends AbstractXmlNode implements XmlSerializableNode
{
	String _name;

	ValueNode _valueNode;

	public PropertyNode(String name)
	{
		_name = name;
	}

	public void setValueNode(ValueNode valueNode)
	{
		_valueNode = valueNode;
	}

	public void writeTo(Element parentElement)
	{
		Element propertyElement = parentElement.addElement("property");
		propertyElement.addAttribute("name", _name);
		writeValue(propertyElement, _valueNode);
	}

	private void writeValue(Element propertyElement, ValueNode valueNode)
	{
		if (valueNode instanceof StringValueNode)
		{
			propertyElement.addAttribute("value", ((StringValueNode) valueNode).getValue());

			return;
		}

		if (valueNode instanceof ValueNodeDelegate)
		{
			ValueNodeDelegate dvn = (ValueNodeDelegate) valueNode;
			ValueNode vn = dvn.getDelegatedValueNode();

			if (vn instanceof BeanRefNode)
			{
				propertyElement.addAttribute("ref", ((BeanRefNode) vn).getNodeId());

				return;
			}
		}

		_valueNode.writeTo(propertyElement);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy