/**
* Abiquo community edition
* cloud management application for hybrid clouds
* Copyright (C) 2008-2010 - Abiquo Holdings S.L.
*
* This application is free software; you can redistribute it and/or
* modify it under the terms of the GNU LESSER GENERAL PUBLIC
* LICENSE as published by the Free Software Foundation under
* version 3 of the License
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* LESSER GENERAL PUBLIC LICENSE v.3 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
package com.abiquo.abiserver.pojo.virtualappliance;
import com.abiquo.abiserver.business.hibernate.pojohb.virtualappliance.VirtualDataCenterHB;
import com.abiquo.abiserver.pojo.IPojo;
import com.abiquo.abiserver.pojo.infrastructure.HyperVisorType;
import com.abiquo.abiserver.pojo.networking.Network;
import com.abiquo.abiserver.pojo.networking.VlanNetwork;
import com.abiquo.abiserver.pojo.user.Enterprise;
import com.abiquo.abiserver.pojo.virtualhardware.ResourceAllocationLimit;
import com.abiquo.model.enumerator.HypervisorType;
import com.abiquo.server.core.cloud.VirtualDatacenterDto;
/**
* This method manages the virtual Data Center information In abiCloud, an enterprise has any/one or
* more virtual datacenters.
*
* @author xfernandez
*/
/**
* @author xfernandez
*/
public class VirtualDataCenter implements IPojo<VirtualDataCenterHB>
{
/**
* identification of virtual data center
*/
private int id;
/**
* name of the virtual dataCenter
*/
private String name;
/**
* The enteprise to which this VirtualDataCenter belongs
*/
private Enterprise enterprise;
/**
* The physicalData center
*/
private int idDataCenter;
/**
* Hypervisor Type selected for the VDC
*/
private HyperVisorType hyperType;
/**
* The network of the Virtual Datacenter.
*/
private Network network;
private ResourceAllocationLimit limits;
private VlanNetwork defaultVlan;
/**
* variable which corresponds with column 'networktypeID'
*/
// private AbicloudNetwork networkType;
public int getId()
{
return id;
}
public void setId(final int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(final String name)
{
this.name = name;
}
public Enterprise getEnterprise()
{
return enterprise;
}
public void setEnterprise(final Enterprise enterprise)
{
this.enterprise = enterprise;
}
public int getIdDataCenter()
{
return idDataCenter;
}
public void setIdDataCenter(final int idDataCenter)
{
this.idDataCenter = idDataCenter;
}
public HyperVisorType getHyperType()
{
return hyperType;
}
public void setHyperType(final HyperVisorType hyperType)
{
this.hyperType = hyperType;
}
/**
* @param network the network to set
*/
public void setNetwork(final Network network)
{
this.network = network;
}
/**
* @return the network
*/
public Network getNetwork()
{
return network;
}
/**
* @return the limits
*/
public ResourceAllocationLimit getLimits()
{
return limits;
}
/**
* @param limits the limits to set
*/
public void setLimits(final ResourceAllocationLimit limits)
{
this.limits = limits;
}
/**
* Method to create the hibernate pojo object
*/
@Override
public VirtualDataCenterHB toPojoHB()
{
final VirtualDataCenterHB virtualDataCenterHB = new VirtualDataCenterHB();
virtualDataCenterHB.setIdVirtualDataCenter(id);
virtualDataCenterHB.setName(name);
virtualDataCenterHB.setEnterpriseHB(enterprise == null ? null : enterprise.toPojoHB());
virtualDataCenterHB.setIdDataCenter(idDataCenter);
virtualDataCenterHB.setHypervisorType(hyperType == null ? null : HypervisorType
.fromValue(hyperType.getName()));
virtualDataCenterHB.setLimits(limits == null ? null : limits.toPojoHB());
virtualDataCenterHB.setNetwork(network == null ? null : network.toPojoHB());
return virtualDataCenterHB;
}
public static VirtualDataCenter create(final VirtualDatacenterDto dto, final int datacenterId,
final Enterprise enterprise, final Network network)
{
final VirtualDataCenter virtualDatacenter = new VirtualDataCenter();
virtualDatacenter.setId(dto.getId());
virtualDatacenter.setName(dto.getName());
virtualDatacenter.setEnterprise(enterprise);
virtualDatacenter.setIdDataCenter(datacenterId);
virtualDatacenter.setHyperType(new HyperVisorType(dto.getHypervisorType()));
virtualDatacenter.setLimits(ResourceAllocationLimit.create(dto));
virtualDatacenter.setNetwork(network);
virtualDatacenter.setDefaultVlan(VlanNetwork.create(dto.getVlan(), network.getNetworkId(),
true));
return virtualDatacenter;
}
public static VirtualDataCenter create(final VirtualDatacenterDto dto, final int datacenterId,
final Enterprise enterprise)
{
final VirtualDataCenter virtualDatacenter = new VirtualDataCenter();
virtualDatacenter.setId(dto.getId());
virtualDatacenter.setName(dto.getName());
virtualDatacenter.setEnterprise(enterprise);
virtualDatacenter.setIdDataCenter(datacenterId);
virtualDatacenter.setHyperType(new HyperVisorType(dto.getHypervisorType()));
virtualDatacenter.setLimits(ResourceAllocationLimit.create(dto));
virtualDatacenter.setDefaultVlan(VlanNetwork.create(dto.getVlan(), dto.getVlan().getId(),
true));
return virtualDatacenter;
}
public VlanNetwork getDefaultVlan()
{
return defaultVlan;
}
public void setDefaultVlan(final VlanNetwork defaultVlan)
{
this.defaultVlan = defaultVlan;
}
}