package org.ovirt.engine.core.dao; import java.util.List; import org.apache.commons.lang.NotImplementedException; import org.hibernate.Query; import org.hibernate.criterion.Restrictions; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.storage_domain_static; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; public class StorageDomainStaticDAOHibernateImpl extends BaseDAOHibernateImpl<storage_domain_static, Guid> implements StorageDomainStaticDAO { public StorageDomainStaticDAOHibernateImpl() { super(storage_domain_static.class); } @SuppressWarnings("unchecked") @Override public List<storage_domain_static> getAllForStoragePoolOfStorageType(StorageType type, Guid pool) { Query query = getSession().getNamedQuery("all_storage_domain_static_for_storage_pool_of_type"); query.setParameter("pool_id", pool); query.setParameter("storage_type", type); return fillInDetails(query.list()); } @SuppressWarnings("unchecked") @Override public List<storage_domain_static> getAllForStoragePool(Guid pool) { Query query = getSession().getNamedQuery("all_storage_domain_static_for_storage_pool"); query.setParameter("pool_id", pool); return fillInDetails(query.list()); } private List<storage_domain_static> fillInDetails(List<storage_domain_static> list) { for (storage_domain_static sds : list) { Query query = getSession().createQuery("select pool.name from storage_pool pool, storage_pool_iso_map map " + "where pool.id = map.id.storagePoolId " + "and map.id.storageId = :storage_id"); query.setParameter("storage_id", sds.getId()); @SuppressWarnings("unchecked") List<String> names = query.list(); sds.setstorage_pool_name(names.isEmpty() != true ? names.get(0) : ""); } return list; } @Override public List<storage_domain_static> getAllOfStorageType(StorageType type) { List<storage_domain_static> result = findByCriteria(Restrictions.eq("storagePoolType", type)); return fillInDetails(result); } public storage_domain_static getForStoragePool(Guid id, NGuid storagepool) { Query query = getSession().getNamedQuery("storage_domain_static_for_storage_pool"); query.setParameter("id", id); query.setParameter("storage_pool_id", storagepool); return (storage_domain_static) query.uniqueResult(); } @SuppressWarnings("unchecked") public List<storage_domain_static> getAllForImageGroup(NGuid imageGroup) { Query query = getSession().getNamedQuery("all_storage_domain_static_for_image_group"); query.setParameter("image_group_id", imageGroup); return query.list(); } @SuppressWarnings("unchecked") public List<storage_domain_static> getAllForStorageDomain(Guid id) { Query query = getSession().getNamedQuery("all_storage_domain_static_for_storage_domain"); query.setParameter("storage_domain_id", id); return query.list(); } @Override public List<Guid> getAllIds(Guid pool, StorageDomainStatus status) { // TODO Auto-generated method stub throw new NotImplementedException(); } }