package org.dcache.webadmin.controller.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.dcache.webadmin.controller.PoolQueuesService;
import org.dcache.webadmin.controller.exceptions.PoolQueuesServiceException;
import org.dcache.webadmin.controller.util.BeanDataMapper;
import org.dcache.webadmin.model.businessobjects.Pool;
import org.dcache.webadmin.model.dataaccess.DAOFactory;
import org.dcache.webadmin.model.dataaccess.DomainsDAO;
import org.dcache.webadmin.model.dataaccess.PoolsDAO;
import org.dcache.webadmin.model.exceptions.DAOException;
import org.dcache.webadmin.view.beans.PoolQueueBean;
/**
*
* @author jans
*/
public class StandardPoolQueuesService implements PoolQueuesService {
private static final Logger _log = LoggerFactory.getLogger(StandardPoolQueuesService.class);
private DAOFactory _daoFactory;
public StandardPoolQueuesService(DAOFactory daoFactory) {
_daoFactory = daoFactory;
}
@Override
public List<PoolQueueBean> getPoolQueues() throws PoolQueuesServiceException {
try {
Set<Pool> pools = getPoolsDAO().getPools();
_log.debug("returned pools: " + pools.size());
List<PoolQueueBean> poolQueues = new ArrayList<>(pools.size());
Map<String, List<String>> domainMap = getDomainsDAO().getDomainsMap();
for (Pool currentPool : pools) {
PoolQueueBean newPoolQueueBean = createPoolQueueBean(currentPool,
domainMap);
poolQueues.add(newPoolQueueBean);
}
_log.debug("returned PoolQueueBeans: " + poolQueues.size());
Collections.sort(poolQueues);
return poolQueues;
} catch (DAOException e) {
throw new PoolQueuesServiceException(e);
}
}
private PoolQueueBean createPoolQueueBean(Pool pool,
Map<String, List<String>> domainMap) {
return BeanDataMapper.poolQueueModelToView(pool, domainMap);
}
private DomainsDAO getDomainsDAO() {
return _daoFactory.getDomainsDAO();
}
private PoolsDAO getPoolsDAO() {
return _daoFactory.getPoolsDAO();
}
public void setDAOFactory(DAOFactory daoFactory) {
_daoFactory = daoFactory;
}
}