package fr.mch.mdo.restaurant.dao.restaurants.hibernate;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import fr.mch.mdo.logs.ILogger;
import fr.mch.mdo.restaurant.beans.IMdoBean;
import fr.mch.mdo.restaurant.beans.IMdoDaoBean;
import fr.mch.mdo.restaurant.dao.beans.Restaurant;
import fr.mch.mdo.restaurant.dao.beans.TableType;
import fr.mch.mdo.restaurant.dao.hibernate.DefaultDaoServices;
import fr.mch.mdo.restaurant.dao.restaurants.IRestaurantsDao;
import fr.mch.mdo.restaurant.exception.MdoDataBeanException;
import fr.mch.mdo.restaurant.exception.MdoException;
import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl;
public class DefaultRestaurantsDao extends DefaultDaoServices implements IRestaurantsDao
{
private static class LazyHolder {
private static IRestaurantsDao instance = new DefaultRestaurantsDao(LoggerServiceImpl.getInstance().getLogger(DefaultRestaurantsDao.class.getName()), new Restaurant());
}
private DefaultRestaurantsDao(ILogger logger, IMdoDaoBean bean) {
super(true);
this.setLogger(logger);
this.setBean(bean);
}
public static IRestaurantsDao getInstance() {
return LazyHolder.instance;
}
public DefaultRestaurantsDao() {
}
@Override
public IMdoBean findByUniqueKey(Object[] propertyValues, boolean... isLazy) throws MdoDataBeanException {
// Check exception
super.findByUniqueKey(propertyValues, isLazy);
if (propertyValues.length != 1) {
super.getLogger().error("message.error.dao.unique.field.1");
throw new MdoDataBeanException("message.error.dao.unique.field.1");
}
Map<String, Object> propertyValueMap = new HashMap<String, Object>();
propertyValueMap.put("reference", propertyValues[0]);
return (IMdoBean) super.findByUniqueKey(propertyValueMap, isLazy);
}
@Override
public IMdoBean findByUniqueKey(Object propertyValue, boolean... isLazy) throws MdoDataBeanException {
return this.findByUniqueKey(new Object[] { propertyValue }, isLazy);
}
@Override
public IMdoBean findByReference(String reference) throws MdoException {
return this.findByUniqueKey(new Object[] { reference });
}
@Override
@SuppressWarnings("unchecked")
public List<IMdoBean> findRestaurants(Long userId, boolean... isLazy) throws MdoDataBeanException {
Map<String, Object> parameters = Collections.singletonMap("id", (Object) userId);
return super.findAllByQuery("UserRestaurant.SelectRestaurantsById", parameters, isLazy);
}
@SuppressWarnings({ "rawtypes" })
@Override
public TableType getDefaultTableType(Long restaurantId) throws MdoDataBeanException {
TableType result = null;
Map<String, Object> parameters = Collections.singletonMap("restaurantId", (Object) restaurantId);
List list = super.findAllByQuery("Restaurant.SelectDefaultTableTypeById", parameters);
result = (TableType) super.uniqueResult(list);
return result;
}
}