/** * 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.persistence.dao.user.hibernate; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import com.abiquo.abiserver.business.hibernate.pojohb.user.EnterpriseHB; import com.abiquo.abiserver.business.hibernate.pojohb.virtualhardware.DatacenterLimitHB; import com.abiquo.abiserver.business.hibernate.pojohb.virtualhardware.LimitHB; import com.abiquo.abiserver.business.hibernate.pojohb.virtualhardware.ResourceAllocationLimitHB; import com.abiquo.abiserver.exception.PersistenceException; import com.abiquo.abiserver.persistence.dao.user.EnterpriseDAO; import com.abiquo.abiserver.persistence.hibernate.HibernateDAO; import com.abiquo.abiserver.persistence.hibernate.HibernateDAOFactory; /** * Class that implements the extra DAO functions for the * {@link com.abiquo.abiserver.persistence.dao.user.EnterpriseDAO} interface * * @author jdevesa@abiquo.com */ public class EnterpriseDAOHibernate extends HibernateDAO<EnterpriseHB, Integer> implements EnterpriseDAO { private final static String ALL_IDS = "GET_ALL_ENTERPRISE_IDS"; private final static String GET_BY_VIRTAL_APP = "GET_BY_VIRTAL_APP"; private final static String GET_DATACENTER_LIMITS = "GET_DATACENTER_LIMITS"; private final static String GET_ENTERPRISE_FROM_VLAN_ID = "ENTERPRISE.GET_ENTERPRISE_RESERVED_BY_VLAN_ID"; @Override public EnterpriseHB findByVirtualAppliance(final Integer idVirtualApp) { final Session session = HibernateDAOFactory.getSessionFactory().getCurrentSession(); final Query query = session.getNamedQuery(GET_BY_VIRTAL_APP); query.setInteger("idVirtualApp", idVirtualApp); return (EnterpriseHB) query.uniqueResult(); } // private static final String SUM_VM_RESOURCES = // "select sum(vm.cpu), sum(vm.ram), sum(vm.hd) from virtualmachine vm, hypervisor hy, physicalmachine pm " // + " where hy.id = vm.idHypervisor and pm.idPhysicalMachine = hy.idPhysicalMachine " // + " and vm.idEnterprise = :enterpriseId and STRCMP(vm.state, :not_deployed) != 0"; @Deprecated // TODO deprecate this: server not longer check for CPU, RAM and HD resource allocation // limits @Override public ResourceAllocationLimitHB getTotalResourceUtilization(int idEnterprise) throws PersistenceException { // final Session session = HibernateDAOFactory.getSessionFactory().getCurrentSession(); // // Object[] vmResources = // (Object[]) session.createSQLQuery(SUM_VM_RESOURCES) // .setParameter("enterpriseId", idEnterprise) // .setParameter("not_deployed", VirtualMachineState.NOT_DEPLOYED.toString()) // .uniqueResult(); // // Long cpu = vmResources[0] == null ? 0 : ((BigDecimal) vmResources[0]).longValue(); // Long ram = vmResources[1] == null ? 0 : ((BigDecimal) vmResources[1]).longValue(); // Long hd = vmResources[2] == null ? 0 : ((BigDecimal) vmResources[2]).longValue(); ResourceAllocationLimitHB limits = new ResourceAllocationLimitHB(); limits.setCpu(new LimitHB(0, 0)); limits.setRam(new LimitHB(0, 0)); limits.setHd(new LimitHB(0, 0)); return limits; } @Override @SuppressWarnings("unchecked") public List<Integer> findAllIds() { return HibernateDAOFactory.getSessionFactory().getCurrentSession().getNamedQuery(ALL_IDS) .list(); } @Override public DatacenterLimitHB getDatacenterLimit(final int idEnterprise, final int idDatacenter) { final Session session = HibernateDAOFactory.getSessionFactory().getCurrentSession(); final Query query = session.getNamedQuery(GET_DATACENTER_LIMITS); query.setInteger("idEnterprise", idEnterprise); query.setInteger("idDatacenter", idDatacenter); return (DatacenterLimitHB) query.uniqueResult(); } @Override public EnterpriseHB getEnterpriseFromReservedVlanID(Integer vlanId) throws PersistenceException { try { final Session session = HibernateDAOFactory.getSessionFactory().getCurrentSession(); final Query query = session.getNamedQuery(GET_ENTERPRISE_FROM_VLAN_ID); query.setInteger("vlan_id", vlanId); return (query.uniqueResult() == null) ? null : (EnterpriseHB) query.uniqueResult(); } catch (HibernateException he) { throw new PersistenceException(he.getMessage()); } } }