package fr.mch.mdo.restaurant.services.business.managers;
import java.util.ArrayList;
import java.util.List;
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.beans.IMdoDtoBean;
import fr.mch.mdo.restaurant.dao.IDao;
import fr.mch.mdo.restaurant.dao.IDaoServices;
import fr.mch.mdo.restaurant.dto.beans.IAdministrationManagerViewBean;
import fr.mch.mdo.restaurant.exception.MdoBusinessException;
import fr.mch.mdo.restaurant.exception.MdoException;
import fr.mch.mdo.utils.IManagerAssembler;
public abstract class AbstractAdministrationManager implements IAdministrationManager
{
protected ILogger logger;
protected IDaoServices dao;
protected IManagerAssembler assembler;
public IManagerAssembler getAssembler() {
return assembler;
}
public void setAssembler(IManagerAssembler assembler) {
this.assembler = assembler;
}
@Override
public ILogger getLogger() {
return logger;
}
@Override
public void setLogger(ILogger logger) {
this.logger = logger;
}
@Override
public IDao getDao() {
return dao;
}
@Override
public void setDao(IDao dao) {
this.dao = (IDaoServices) dao;
}
@Override
public IMdoDtoBean save(IMdoDtoBean dtoBean) throws MdoBusinessException {
if (dtoBean != null) {
if (dtoBean.getId() == null) {
dtoBean = insert(dtoBean);
} else {
dtoBean = update(dtoBean);
}
}
return dtoBean;
}
@Override
public IMdoDtoBean insert(IMdoDtoBean dtoBean) throws MdoBusinessException {
IMdoBean daoBean = assembler.unmarshal(dtoBean);
try {
return assembler.marshal((IMdoDaoBean) dao.insert(daoBean));
} catch (MdoException e) {
logger.error("message.error.administration.business.save", e);
throw new MdoBusinessException("message.error.administration.business.save", e);
}
}
@Override
public IMdoDtoBean update(IMdoDtoBean dtoBean) throws MdoBusinessException {
IMdoBean daoBean = assembler.unmarshal(dtoBean);
try {
return assembler.marshal((IMdoDaoBean) dao.update(daoBean));
} catch (MdoException e) {
logger.error("message.error.administration.business.save", e);
throw new MdoBusinessException("message.error.administration.business.save", e);
}
}
@Override
public IMdoDtoBean findByPrimaryKey(Long id, boolean... lazy) throws MdoBusinessException {
if (id != null) {
try {
return assembler.marshal((IMdoDaoBean) dao.findByPrimaryKey(id, lazy));
} catch (MdoException e) {
logger.error("message.error.administration.business.find", new Object[] { id }, e);
throw new MdoBusinessException("message.error.administration.business.find", new Object[] { id }, e);
}
} else {
logger.error("message.error.generic.field.null", new Object[] { Long.class + ".id" });
throw new MdoBusinessException("message.error.generic.field.null");
}
}
@Override
public IMdoDtoBean delete(IMdoDtoBean dtoBean) throws MdoBusinessException {
IMdoBean daoBean = assembler.unmarshal(dtoBean);
try {
return assembler.marshal((IMdoDaoBean) dao.delete(daoBean));
} catch (MdoException e) {
logger.error("message.error.administration.business.delete", e);
throw new MdoBusinessException("message.error.administration.business.delete", e);
}
}
@Override
public IMdoDtoBean load(IMdoDtoBean dtoBean, boolean... lazy) throws MdoBusinessException {
IMdoBean daoBean = assembler.unmarshal(dtoBean);
try {
dao.load(daoBean, lazy);
return assembler.marshal((IMdoDaoBean) daoBean);
} catch (MdoException e) {
logger.error("message.error.administration.business.find", new Object[] { daoBean }, e);
throw new MdoBusinessException("message.error.administration.business.find", new Object[] { daoBean }, e);
}
}
@Override
public List<IMdoDtoBean> findAll(boolean... lazy) throws MdoBusinessException {
List<IMdoDtoBean> result = new ArrayList<IMdoDtoBean>();
try {
List<IMdoBean> list = dao.findAll(lazy);
if (list != null) {
result = assembler.marshal(list);
}
} catch (MdoException e) {
logger.error("message.error.administration.business.find.all", e);
throw new MdoBusinessException("message.error.administration.business.find.all", e);
}
return result;
}
@Override
public void processList(IAdministrationManagerViewBean viewBean, boolean... lazy) throws MdoBusinessException {
viewBean.setList(this.findAll(lazy));
// throw new
// MdoBusinessException("message.error.generic.method.not.implemented");
}
}