/**
* 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.virtualimage.hibernate;
import java.util.Collection;
import com.abiquo.abiserver.business.hibernate.pojohb.virtualimage.StateConversionEnum;
import com.abiquo.abiserver.business.hibernate.pojohb.virtualimage.VirtualImageConversionsHB;
import com.abiquo.abiserver.business.hibernate.pojohb.virtualimage.VirtualimageHB;
import com.abiquo.abiserver.exception.PersistenceException;
import com.abiquo.abiserver.persistence.dao.virtualimage.VirtualImageConversionsDAO;
import com.abiquo.abiserver.persistence.hibernate.HibernateDAO;
import com.abiquo.model.enumerator.DiskFormatType;
/**
* Class that implements the extra DAO functions for the
* {@link com.abiquo.abiserver.persistence.dao.virtualimage.VirtualImageConversionsDAO} interface
*
* @author eruiz@abiquo.com
*/
public class VirtualImageConversionsDAOHibernate extends
HibernateDAO<VirtualImageConversionsHB, Integer> implements VirtualImageConversionsDAO
{
// implement extra functionality
public void saveConversions(final Collection<VirtualImageConversionsHB> conversions)
throws PersistenceException
{
for (VirtualImageConversionsHB conversion : conversions)
{
makePersistent(conversion);
}
}
@SuppressWarnings("unchecked")
public Collection<VirtualImageConversionsHB> getConversion(final VirtualimageHB image,
final DiskFormatType diskFormat)
{
return getSession()
.createSQLQuery(
"select * from virtualimage_conversions where idImage = :idImage and targetType = :format")
.addEntity(VirtualImageConversionsHB.class).setParameter("idImage", image.getIdImage())
.setParameter("format", diskFormat.name()).list();
}
@SuppressWarnings("unchecked")
public Collection<VirtualImageConversionsHB> getFinishedConversion(final VirtualimageHB image,
final DiskFormatType diskFormat)
{
return getSession()
.createSQLQuery(
"select * from virtualimage_conversions where idImage = :idImage and targetType = :format and idState = 2")
.addEntity(VirtualImageConversionsHB.class).setParameter("idImage", image.getIdImage())
.setParameter("format", diskFormat.name()).list();
}
public VirtualImageConversionsHB getUnbundledConversion(final VirtualimageHB image,
final DiskFormatType diskFormat)
{
return (VirtualImageConversionsHB) getSession()
.createSQLQuery(
"select * from virtualimage_conversions where idImage = :idImage and targetType = :format and sourceType is null")
.addEntity(VirtualImageConversionsHB.class).setParameter("idImage", image.getIdImage())
.setParameter("format", diskFormat.name()).uniqueResult();
}
public boolean isConverted(final VirtualimageHB image)
{
Long existConversion =
(Long) getSession()
.createQuery(
"select count(*) from com.abiquo.abiserver.business.hibernate.pojohb.virtualimage.VirtualImageConversionsHB"
+ " where image.id = :idImage and state = :state")
.setParameter("idImage", image.getIdImage())
.setParameter("state", StateConversionEnum.FINISHED).uniqueResult();
return existConversion > 0;
}
public boolean isConverted(final VirtualimageHB image, DiskFormatType targetType)
{
Long existConversion =
(Long) getSession()
.createQuery(
"select count(*) from com.abiquo.abiserver.business.hibernate.pojohb.virtualimage.VirtualImageConversionsHB"
+ " where image.id = :idImage and state = :state and targetType = :type")
.setParameter("idImage", image.getIdImage())
.setParameter("state", StateConversionEnum.FINISHED)
.setParameter("type", targetType).uniqueResult();
return existConversion > 0;
}
@SuppressWarnings("unchecked")
public Collection<VirtualImageConversionsHB> getConversions(final Collection<Integer> imageIds)
{
return getSession()
.createSQLQuery("select * from virtualimage_conversions where idImage in (:idImage)")
.addEntity(VirtualImageConversionsHB.class).setParameterList("idImage", imageIds)
.list();
}
}