summaryrefslogblamecommitdiffstats
path: root/src/main/java/org/openslx/libvirt/domain/device/ControllerIde.java
blob: 062b67da30d4197dc919bbcee0cbc580cecf66ef (plain) (tree)































































































































                                                                                                              
package org.openslx.libvirt.domain.device;

import org.openslx.libvirt.xml.LibvirtXmlNode;

/**
 * An IDE controller device node in a Libvirt domain XML document.
 * 
 * @author Manuel Bentele
 * @version 1.0
 */
public class ControllerIde extends Controller
{
	/**
	 * Creates an empty IDE controller device.
	 */
	public ControllerIde()
	{
		super();
	}

	/**
	 * Creates an IDE controller device representing an existing Libvirt XML IDE controller device
	 * element.
	 * 
	 * @param xmlNode existing Libvirt XML IDE controller device element.
	 */
	public ControllerIde( LibvirtXmlNode xmlNode )
	{
		super( xmlNode );
	}

	/**
	 * Returns emulated hardware model of the IDE controller.
	 * 
	 * @return hardware model of the IDE controller.
	 */
	public Model getModel()
	{
		String model = this.getXmlElementAttributeValue( "model" );
		return Model.fromString( model );
	}

	/**
	 * Sets hardware model for the IDE controller.
	 * 
	 * @param model hardware model for the IDE controller.
	 */
	public void setModel( Model model )
	{
		this.setXmlElementAttributeValue( "model", model.toString() );
	}

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

	/**
	 * Creates an IDE controller device representing an existing Libvirt XML IDE controller device
	 * element.
	 * 
	 * @param xmlNode existing Libvirt XML IDE controller device element.
	 * @return IDE controller device instance.
	 */
	public static ControllerIde newInstance( LibvirtXmlNode xmlNode )
	{
		return new ControllerIde( xmlNode );
	}

	/**
	 * Model of IDE controller device.
	 * 
	 * @author Manuel Bentele
	 * @version 1.0
	 */
	enum Model
	{
		// @formatter:off
		PIIX3( "piix3" ),
		PIIX4( "pixx4" ),
		ICH6 ( "ich6" );
		// @formatter:on

		/**
		 * Name of the IDE controller device model.
		 */
		private String model = null;

		/**
		 * Creates IDE controller device model.
		 * 
		 * @param type valid name of the IDE controller device model in a Libvirt domain XML document.
		 */
		Model( String model )
		{
			this.model = model;
		}

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

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

			return null;
		}
	}
}