package org.openslx.util.vm; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.openslx.bwlp.thrift.iface.OperatingSystem; import org.openslx.bwlp.thrift.iface.Virtualizer; public class VboxMetaData extends VmMetaData { private static final Virtualizer virtualizer = new Virtualizer( "virtualbox", "VirtualBox" ); private final VboxConfig config; public VboxMetaData( List osList, File file ) throws IOException, UnsupportedVirtualizerFormatException { super( osList ); this.config = new VboxConfig( file ); init(); } public VboxMetaData( List osList, byte[] vmContent, int length ) throws IOException, UnsupportedVirtualizerFormatException { super( osList ); this.config = new VboxConfig( vmContent.toString(), length ); init(); } private void init() { this.config.init(); displayName = config.getDisplayName(); setOs( "virtualbox", config.getOsName() ); for ( HardDisk hardDisk : config.getHdds() ) { hdds.add( hardDisk ); } try { WriteToFile(); } catch ( TransformerFactoryConfigurationError | TransformerException e ) { // TODO Auto-generated catch block e.printStackTrace(); } } // --TODO will be needed later again private void WriteToFile() throws TransformerFactoryConfigurationError, TransformerException { Transformer transformer = TransformerFactory.newInstance().newTransformer(); StreamResult output = new StreamResult( new File( "output.xml" ) ); Source input = new DOMSource( config.getConfigDoc() ); transformer.transform( input, output ); } @Override public Virtualizer getVirtualizer() { return new Virtualizer( "virtualbox", "VirtualBox" ); } @Override public void enableUsb( boolean enabled ) { // TODO Auto-generated method stub } @Override public void applySettingsForLocalEdit() { // TODO Auto-generated method stub } @Override public byte[] getFilteredDefinitionArray() { // TODO Auto-generated method stub return config.toString().getBytes( StandardCharsets.UTF_8 ); } @Override public boolean addHddTemplate( String diskImagePath, String hddMode, String redoDir ) { // TODO Auto-generated method stub return false; } @Override public boolean addDefaultNat() { // TODO Auto-generated method stub return false; } @Override public void setOs( String vendorOsId ) { // TODO Auto-generated method stub } @Override public boolean addDisplayName( String name ) { // TODO Auto-generated method stub return false; } @Override public boolean addRam( int mem ) { // TODO Auto-generated method stub return false; } @Override public void addFloppy( int index, String image, boolean readOnly ) { // TODO Auto-generated method stub } @Override public boolean addCdrom( String image ) { // TODO Auto-generated method stub return false; } // TODO: the part after getting the byte[] from the Server and doing stuff with it...SoundCard types etc... }