summaryrefslogblamecommitdiffstats
path: root/src/main/java/org/openslx/libvirt/domain/device/Parallel.java
blob: 7db60ca79b2f1d8d9b87aa447841441fa766bcde (plain) (tree)





























































































































































                                                                                                            
package org.openslx.libvirt.domain.device;

import org.openslx.libvirt.xml.LibvirtXmlNode;

/**
 * A parallel port device node in a Libvirt domain XML document.
 * 
 * @author Manuel Bentele
 * @version 1.0
 */
public class Parallel extends Device
{
	/**
	 * Creates an empty parallel port device.
	 */
	public Parallel()
	{
		super();
	}

	/**
	 * Creates a parallel port device representing an existing Libvirt XML parallel port device
	 * element.
	 * 
	 * @param xmlNode existing Libvirt XML parallel port device element.
	 */
	public Parallel( LibvirtXmlNode xmlNode )
	{
		super( xmlNode );
	}

	/**
	 * Returns the type of the parallel port device.
	 * 
	 * @return type of the parallel port device.
	 */
	public Type getType()
	{
		final String type = this.getXmlElementAttributeValue( "type" );
		return Type.fromString( type );
	}

	/**
	 * Sets the type for the parallel port device.
	 * 
	 * @param type type for the parallel port device.
	 */
	public void setType( Type type )
	{
		this.setXmlElementAttributeValue( "type", type.toString() );
	}

	/**
	 * Returns the source of the parallel port device.
	 * 
	 * @return source of the parallel port device.
	 */
	public String getSource()
	{
		return this.getXmlElementAttributeValue( "source", "path" );
	}

	/**
	 * Sets the source for the parallel port device.
	 * 
	 * @param source source for the parallel port device.
	 */
	public void setSource( String source )
	{
		this.setXmlElementAttributeValue( "source", "path", source );
	}

	/**
	 * Creates a non-existent parallel port device as Libvirt XML parallel port device element.
	 * 
	 * @param xmlNode Libvirt XML node of the Libvirt XML parallel port device that is created.
	 * @return created parallel port device instance.
	 */
	public static Parallel createInstance( LibvirtXmlNode xmlNode )
	{
		return Parallel.newInstance( xmlNode );
	}

	/**
	 * Creates a parallel port device representing an existing Libvirt XML parallel port device
	 * element.
	 * 
	 * @param xmlNode existing Libvirt XML parallel port device element.
	 * @return parallel port device instance.
	 */
	public static Parallel newInstance( LibvirtXmlNode xmlNode )
	{
		return new Parallel( xmlNode );
	}

	/**
	 * Type of parallel port device.
	 * 
	 * @author Manuel Bentele
	 * @version 1.0
	 */
	public enum Type
	{
		// @formatter:off
		DEV      ( "dev" ),
		FILE     ( "file" ),
		PIPE     ( "pipe" ),
		UNIX     ( "unix" ),
		TCP      ( "tcp" ),
		UDP      ( "udp" ),
		NULL     ( "null" ),
		STDIO    ( "stdio" ),
		VC       ( "vc" ),
		PTY      ( "pty" ),
		SPICEVMC ( "spicevmc" ),
		SPICEPORT( "spiceport" ),
		NMDM     ( "nmdm" );
		// @formatter:on

		/**
		 * Name of the parallel port device type.
		 */
		private String type;

		/**
		 * Creates parallel port device type.
		 * 
		 * @param type valid name of the parallel port device type in a Libvirt domain XML document.
		 */
		Type( String type )
		{
			this.type = type;
		}

		@Override
		public String toString()
		{
			return this.type;
		}

		/**
		 * Creates parallel port device type from its name with error check.
		 * 
		 * @param type name of the parallel port device type in a Libvirt domain XML document.
		 * @return valid parallel port device type.
		 */
		public static Type fromString( String type )
		{
			for ( Type t : Type.values() ) {
				if ( t.type.equalsIgnoreCase( type ) ) {
					return t;
				}
			}

			return null;
		}
	}
}