package org.ovirt.engine.core.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.ovirt.engine.core.common.businessentities.storage_server_connections;
import org.ovirt.engine.core.compat.Guid;
public class StorageServerConnectionDAOHibernateImpl extends BaseDAOHibernateImpl<storage_server_connections, String> implements StorageServerConnectionDAO {
private StorageServerConnectionLunMapDAOHibernateImpl mapDAO = new StorageServerConnectionLunMapDAOHibernateImpl();
public StorageServerConnectionDAOHibernateImpl() {
super(storage_server_connections.class);
}
@Override
public void setSession(Session session) {
super.setSession(session);
mapDAO.setSession(session);
}
@Override
public storage_server_connections getForIqn(String iqn) {
return findOneByCriteria(Restrictions.eq("iqn", iqn));
}
@SuppressWarnings("unchecked")
@Override
public List<storage_server_connections> getAllForStoragePool(Guid storagePoolId) {
Query query = getSession().createQuery("select conn from " +
"LUN_storage_server_connection_map map1, " +
"LUNs lun, " +
"storage_domain_static domain, " +
"storage_server_connections conn, " +
"storage_pool_iso_map map2, " +
"storage_pool pool " +
"where map1.id.lunId = lun.id " +
"and lun.volumeGroupId = domain.storage " +
"and map1.id.storageServerConnection = conn.id " +
"and map2.id.storageId = domain.id " +
"and pool.id = map2.id.storagePoolId " +
"and (pool.id = :storage_pool_id)");
query.setParameter("storage_pool_id", storagePoolId);
return query.list();
}
@SuppressWarnings("unchecked")
@Override
public List<storage_server_connections> getAllForVolumeGroup(String group) {
Query query = getSession().createQuery("select conn from " +
"LUN_storage_server_connection_map map1, " +
"LUNs lun, " +
"storage_domain_static domain, " +
"storage_server_connections conn " +
"where map1.id.lunId = lun.id " +
"and lun.volumeGroupId = domain.storage " +
"and map1.id.storageServerConnection = conn.id " +
"and domain.storage = :volume_group_id");
query.setParameter("volume_group_id", group);
return query.list();
}
@Override
public List<storage_server_connections> getAllForStorage(String storage) {
return findByCriteria(Restrictions.eq("connection", storage));
}
@Override
public List<storage_server_connections> getAllForConnection(storage_server_connections connection) {
return findByCriteria(Restrictions.eq("connection", connection));
}
/* TODO - align with Storage Connection Lun Map split
@Override
public LUN_storage_server_connection_map getLUNStorageMapForLUNAndStorageServerConnection(String lunId,
String storageServerConnection) {
return mapDAO.get(new LUN_storage_server_connection_map_id(lunId, storageServerConnection));
}
@Override
public void addLUNStorageMap(LUN_storage_server_connection_map map) {
mapDAO.save(map);
}
@Override
public List<LUN_storage_server_connection_map> getAllLUNStorageMapsForLUN(String lunId) {
return mapDAO.getAllLUNStorageMapsForLun(lunId);
}
*/
}