package info.ozkan.vipera.business.device; import info.ozkan.vipera.business.patient.PatientManagerResult; import info.ozkan.vipera.business.patient.PatientManagerStatus; import info.ozkan.vipera.business.role.Role; import info.ozkan.vipera.dao.device.DeviceDao; import info.ozkan.vipera.dao.patient.PatientDao; import info.ozkan.vipera.entities.Device; import info.ozkan.vipera.entities.Patient; import javax.annotation.security.RolesAllowed; import javax.inject.Inject; import javax.inject.Named; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.transaction.annotation.Transactional; /** * {@link DeviceManager} arayüzünün implementasyonu * * @author Ömer Özkan * */ @Named("deviceManager") public class DeviceManagerImpl implements DeviceManager { /** * LOGGER */ private static final Logger LOGGER = LoggerFactory .getLogger(DeviceManagerImpl.class); /** * Dao */ @Inject private DeviceDao deviceDao; /** * PatientDao */ @Inject private PatientDao patientDao; @Transactional @RolesAllowed(Role.ROLE_ADMIN) public DeviceManagerResult add(final Device device) { final DeviceManagerResult result; final Patient patient = device.getPatient(); final PatientManagerResult patientResult = patientDao.getById(patient .getId()); final PatientManagerStatus patientStatus = patientResult.getStatus(); if (patientStatus.equals(PatientManagerStatus.NOT_FOUND)) { result = createPatientNonExistResult(); LOGGER.info("The patient not found! Saving new device has failed."); } else { result = deviceDao.add(device); } return result; } /** * Hasta bulunamadı hata mesajı sonucu oluşturur * * @return */ private DeviceManagerResult createPatientNonExistResult() { final DeviceManagerResult result; result = new DeviceManagerResult(); result.setStatus(DeviceManagerStatus.PATIENT_NOT_EXIST); return result; } @Transactional @RolesAllowed(Role.ROLE_ADMIN) public DeviceManagerResult search(final DeviceManagerSearchFilter filter) { return deviceDao.find(filter); } @Transactional @RolesAllowed(Role.ROLE_ADMIN) public DeviceManagerResult delete(final Long deviceId) { return deviceDao.delete(deviceId); } @Transactional @RolesAllowed(Role.ROLE_ADMIN) public DeviceManagerResult getById(final Long id) { final Device device = deviceDao.getById(id); final DeviceManagerResult result = new DeviceManagerResult(); if (device == null) { result.setStatus(DeviceManagerStatus.NOT_FOUND); } else { result.setStatus(DeviceManagerStatus.SUCCESS); result.setDevice(device); } return result; } @Transactional @RolesAllowed(Role.ROLE_ADMIN) public DeviceManagerResult update(final Device device) { return deviceDao.update(device); } @Transactional public DeviceManagerResult checkCredential(final String apiKey, final String apiPassword) { final DeviceManagerResult result; final DeviceManagerResult daoResult = deviceDao.findDevice(apiKey, apiPassword); if (daoResult.isSuccess()) { result = daoResult; } else { result = new DeviceManagerResult(); result.setStatus(DeviceManagerStatus.INVALID_CREDENTIAL); } return result; } }