summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/libvirt/domain/device/Serial.java
blob: 54be26e60507798ce1ef58860208c8cfdf62c700 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package org.openslx.libvirt.domain.device;

import org.openslx.libvirt.xml.LibvirtXmlNode;

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

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

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

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

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

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

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

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

	/**
	 * Type of serial 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 serial port device type.
		 */
		private String type;

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

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

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

			return null;
		}
	}
}