summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/util/vm/OvfConfig.java
blob: 4bb597cdeab1367f8859e013b620964aa282b6b5 (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
package org.openslx.util.vm;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;

import javax.xml.xpath.XPathExpressionException;

import org.apache.log4j.Logger;
import org.openslx.util.Util;
import org.openslx.util.XmlHelper;
import org.openslx.util.vm.VmMetaData.HardDisk;
import org.w3c.dom.Document;

/**
 * Class handling the parsing of a .ovf machine description file For now only a
 * dummy for conversion and will be replaced in the image upload flow after
 * converting the ovf to vmx.
 */
public class OvfConfig
{
	private static final Logger LOGGER = Logger.getLogger( OvfConfig.class );

	// key information set during initial parsing of the XML file
	private String osName = new String();
	private ArrayList<HardDisk> hddsArray = new ArrayList<HardDisk>();

	// XPath and DOM parsing related members
	private Document doc = null;

	public OvfConfig( File file ) throws IOException, UnsupportedVirtualizerFormatException
	{
		doc = XmlHelper.parseDocumentFromStream( new FileInputStream( file ) );
		doc = XmlHelper.removeFormattingNodes( doc );
		if ( doc == null )
			throw new UnsupportedVirtualizerFormatException(
					"Could not create DOM from given ovf machine configuration file!" );
		init();
	}

	/**
	 * Main initialization functions parsing the document created during the
	 * constructor.
	 * 
	 * @throws UnsupportedVirtualizerFormatException
	 */
	private void init() throws UnsupportedVirtualizerFormatException
	{
		if ( Util.isEmptyString( getDisplayName() ) ) {
			throw new UnsupportedVirtualizerFormatException( "Machine doesn't have a name" );
		}
	}

	/**
	 * Getter for the display name
	 *
	 * @return the display name of this VM
	 */
	public String getDisplayName()
	{
		try {
			return XmlHelper.XPath.compile( "/Envelope/VirtualSystem/Name" ).evaluate( this.doc );
		} catch ( XPathExpressionException e ) {
			return "";
		}
	}

}