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 hddsArray = new ArrayList(); // 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 ""; } } }