package org.ovirt.engine.core.dao;
import java.util.List;
import org.apache.commons.lang.NotImplementedException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.ovirt.engine.core.common.businessentities.DiskImage;
import org.ovirt.engine.core.common.businessentities.image_vm_pool_map;
import org.ovirt.engine.core.common.businessentities.stateless_vm_image_map;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.images.DiskImageDAOHibernateImpl;
import org.ovirt.engine.core.dao.images.DiskImageDynamicDAOHibernateImpl;
import org.ovirt.engine.core.dao.images.DiskImageTemplateDAOHibernateImpl;
import org.ovirt.engine.core.dao.images.ImageVmMapDAOHibernateImpl;
import org.ovirt.engine.core.dao.images.ImageVmPoolMapDAOHibernateImpl;
import org.ovirt.engine.core.dao.images.StatelessImageVmMapDAOHibernateImpl;
/**
* <code>DiskImageDAOWrapperImpl</code> provides an implementation of {@link DiskImageDAO} that wraps underlying
* Hibernate DAOs.
*
*/
public class DiskImageDAOWrapperImpl extends BaseDAOWrapperImpl implements DiskImageDAO {
private DiskImageDAOHibernateImpl imageDAO = new DiskImageDAOHibernateImpl();
private DiskImageDynamicDAOHibernateImpl dynamicDAO = new DiskImageDynamicDAOHibernateImpl();
private DiskImageTemplateDAOHibernateImpl templateDAO = new DiskImageTemplateDAOHibernateImpl();
private ImageVmMapDAOHibernateImpl imageVmMapDAO = new ImageVmMapDAOHibernateImpl();
private ImageVmPoolMapDAOHibernateImpl imageVmPoolMapDAO = new ImageVmPoolMapDAOHibernateImpl();
private StatelessImageVmMapDAOHibernateImpl statelessImageVmMapDAO = new StatelessImageVmMapDAOHibernateImpl();
@Override
public void setSession(Session session) {
super.setSession(session);
imageDAO.setSession(session);
dynamicDAO.setSession(session);
templateDAO.setSession(session);
imageVmMapDAO.setSession(session);
}
@Override
public DiskImage get(Guid id) {
return imageDAO.get(id);
}
@Override
public DiskImage getSnapshotById(Guid id) {
return imageDAO.get(id);
}
@Override
public List<DiskImage> getAllForVm(Guid id) {
return imageDAO.getAllForVm(id);
}
@Override
public List<DiskImage> getAllSnapshotsForParent(Guid id) {
return imageDAO.getAllSnapshotsForParent(id);
}
@Override
public List<DiskImage> getAllSnapshotsForStorageDomain(Guid id) {
return imageDAO.getAllSnapshotsForStorageDomain(id);
}
@Override
public List<DiskImage> getAllSnapshotsForVmSnapshot(Guid id) {
return imageDAO.getAllSnapshotsForVmSnapshot(id);
}
@Override
public List<DiskImage> getAllSnapshotsForImageGroup(Guid id) {
return imageDAO.getAllSnapshotsForImageGroup(id);
}
@Override
public List<DiskImage> getAll() {
return imageDAO.getAll();
}
@Override
public void save(DiskImage image) {
imageDAO.save(image);
}
@Override
public void update(DiskImage image) {
imageDAO.update(image);
}
@Override
public void remove(Guid id) {
imageDAO.remove(id);
}
@Override
public void removeAllForVmId(Guid id) {
imageDAO.removeAllForVmId(id);
}
@Override
public image_vm_pool_map getImageVmPoolMapByImageId(Guid imageId) {
return imageVmPoolMapDAO.findOneByCriteria(Restrictions.eq("imageId", imageId));
}
@Override
public void addImageVmPoolMap(image_vm_pool_map map) {
imageVmPoolMapDAO.save(map);
}
@Override
public void removeImageVmPoolMap(Guid imageId) {
imageVmPoolMapDAO.remove(imageId);
}
@Override
public List<image_vm_pool_map> getImageVmPoolMapByVmId(Guid vmId) {
return imageVmPoolMapDAO.findByCriteria(Restrictions.eq("vmId", vmId));
}
@Override
public stateless_vm_image_map getStatelessVmImageMapForImageId(Guid imageId) {
return statelessImageVmMapDAO.get(imageId);
}
@Override
public void addStatelessVmImageMap(stateless_vm_image_map map) {
statelessImageVmMapDAO.save(map);
}
@Override
public void removeStatelessVmImageMap(Guid imageId) {
statelessImageVmMapDAO.remove(imageId);
}
@Override
public List<stateless_vm_image_map> getAllStatelessVmImageMapsForVm(Guid vmId) {
return statelessImageVmMapDAO.findByCriteria(Restrictions.eq("vmId", vmId));
}
@Override
public DiskImage getAncestor(Guid id) {
throw new NotImplementedException();
}
}