package br.com.centralit.citsmart.rest.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import br.com.centralit.citsmart.rest.bean.RestDomainDTO;
import br.com.centralit.citsmart.rest.bean.RestOperationDTO;
import br.com.centralit.citsmart.rest.bean.RestParameterDTO;
import br.com.centralit.citsmart.rest.bean.RestSessionDTO;
import br.com.centralit.citsmart.rest.dao.RestParameterDao;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.service.ServiceLocator;
public class RestParameterServiceEjb extends CrudServiceImpl implements RestParameterService {
private RestParameterDao dao;
@Override
protected RestParameterDao getDao() {
if (dao == null) {
dao = new RestParameterDao();
}
return dao;
}
@Override
public IDto create(final IDto model) throws ServiceException, LogicException {
RestParameterDTO restDto = (RestParameterDTO) model;
final TransactionControler transaction = new TransactionControlerImpl(this.getDao().getAliasDB());
final RestParameterDao crudDao = this.getDao();
try {
transaction.start();
crudDao.setTransactionControler(transaction);
restDto = (RestParameterDTO) crudDao.create(restDto);
transaction.commit();
transaction.close();
} catch (final Exception e) {
this.rollbackTransaction(transaction, e);
}
return restDto;
}
@Override
public RestParameterDTO findByIdentifier(final Integer parm) throws Exception {
try {
return this.getDao().findByIdentifier(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public Map<String, RestDomainDTO> findParameters(final RestSessionDTO restSessionDto, final RestOperationDTO restOperationDto) {
final Map<String, RestDomainDTO> mapParam = new HashMap<String, RestDomainDTO>();
try {
final RestDomainService restDomainService = (RestDomainService) ServiceLocator.getInstance().getService(RestDomainService.class, null);
final List<RestDomainDTO> params = (List<RestDomainDTO>) restDomainService.findByIdRestOperation(restOperationDto.getIdRestOperation());
if (params != null) {
final RestParameterService restParameterService = (RestParameterService) ServiceLocator.getInstance().getService(RestParameterService.class, null);
for (final RestDomainDTO domainDto : params) {
RestParameterDTO paramDto = new RestParameterDTO();
paramDto.setIdRestParameter(domainDto.getIdRestParameter());
paramDto = (RestParameterDTO) restParameterService.restore(paramDto);
if (paramDto != null) {
mapParam.put(paramDto.getIdentifier(), domainDto);
}
}
}
} catch (final Exception e) {
e.printStackTrace();
return null;
}
return mapParam;
}
@Override
public String getParamValue(final Map<String, RestDomainDTO> mapParam, final String key) {
final RestDomainDTO restDomainDto = mapParam.get(key);
if (restDomainDto == null || restDomainDto.getValue() == null) {
return null;
}
return restDomainDto.getValue().trim();
}
}