/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is available at http://www.abiquo.com/.....
*
* The Initial Developer of the Original Code is Soluciones Grid, S.L. (www.abiquo.com),
* Consell de Cent 296 principal 2�, 08007 Barcelona, Spain.
* No portions of the Code have been created by third parties.
* All Rights Reserved.
*
* Contributor(s): ______________________________________.
*
* Graphical User Interface of this software may be used under the terms
* of the Common Public Attribution License Version 1.0 (the "CPAL License",
* available at http://cpal.abiquo.com), in which case the provisions of CPAL
* License are applicable instead of those above. In relation of this portions
* of the Code, a Legal Notice according to Exhibits A and B of CPAL Licence
* should be provided in any distribution of the corresponding Code to Graphical
* User Interface.
*/
package com.abiquo.abicloud.model;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Observable;
import com.abiquo.abicloud.exception.VirtualMachineException;
/**
* The Class VirtualApplianceModel represents a mini model to maintain a list of virtual appliances
* .
*/
public class VirtualApplianceModel extends Observable
{
/** The singleton instance for this class. */
private static VirtualApplianceModel singleton;
/** The virtual appliances. */
private static Map<String, VirtualAppliance> virtualAppliances =
new HashMap<String, VirtualAppliance>();
/**
* Instantiates a new virtual appliance model.
*/
private VirtualApplianceModel()
{
super();
}
/**
* Singleton accessor.
*
* @return the model
*/
public static VirtualApplianceModel getModel()
{
if (singleton == null)
{
singleton = new VirtualApplianceModel();
}
return singleton;
}
/**
* Creates the virtual appliance.
*
* @param virtualApplianceId the virtual appliance id
* @return the virtual appliance
*/
public VirtualAppliance createVirtualAppliance(String virtualApplianceId)
{
VirtualAppliance virtualAppliance = new VirtualAppliance();
virtualAppliance.setVirtualApplianceId(virtualApplianceId);
virtualAppliances.put(virtualApplianceId, virtualAppliance);
return virtualAppliance;
}
/**
* Gets the virtual appliance.
*
* @param virtualApplianceId the virtual appliance id
* @return the virtual appliance
*/
public VirtualAppliance getVirtualAppliance(String virtualApplianceId)
{
return virtualAppliances.get(virtualApplianceId);
}
/**
* Delete virtual appliance.
*
* @param id the id
* @throws Exception
*/
public void deleteVirtualAppliance(String id) throws Exception
{
// Deleting all the machines
VirtualAppliance virtualAppliance = virtualAppliances.get(id);
for (AbsVirtualMachine machine : virtualAppliance.getMachines())
{
VirtualSystemModel.getModel().deleteMachine(machine.getConfiguration().getMachineId());
}
// Getting out the virtualAppliance from the virtualAppliance map
virtualAppliances.remove(virtualAppliance);
}
/**
* Gets the virtual appliances.
*
* @return the virtual appliances
*/
public Collection<VirtualAppliance> getVirtualAppliances()
{
return virtualAppliances.values();
}
}