package info.ozkan.vipera.views.device; import info.ozkan.vipera.business.device.DeviceFacade; import info.ozkan.vipera.business.device.DeviceManagerResult; import info.ozkan.vipera.business.device.DeviceManagerSearchFilter; import info.ozkan.vipera.entities.Device; import info.ozkan.vipera.entities.Patient; import info.ozkan.vipera.jsf.FacesMessage2; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.inject.Inject; import javax.inject.Named; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Scope; /** * Cihaz arama listeleme ekranı * * @author Ömer Özkan * */ @Named("deviceBrowse") @Scope("session") public class DeviceBrowseBean { /** * cihaz silinemedi mesaj detayı deseni */ private static final String MSG_DEVICE_CANNOT_BE_DELETED_DETAIL = "Cihaz silinemedi. Silmek istediğiniz cihaz daha önce silinmiş olabilir."; /** * Cihaz silinemedi mesajı */ private static final String MSG_DEVICE_CANNOT_BE_DELETED = "Cihaz silinemedi!"; /** * Cihaz silindi mesajı */ private static final String MSG_DEVICE_DELETED = "Cihaz silindi!"; /** * LOGGER */ private static final Logger LOGGER = LoggerFactory .getLogger(DeviceBrowseBean.class); /** * Cihaz listesi */ private List<Device> devices; /** * Model */ private DeviceBrowseModel model = new DeviceBrowseModel(); /** * business object */ @Inject private DeviceFacade deviceFacade; /** * hasta seçer * * @param patient */ public void selectPatient(final Patient patient) { getModel().setPatient(patient); } /** * @return the model */ public DeviceBrowseModel getModel() { return model; } /** * @return the devices */ public List<Device> getDevices() { return devices; } /** * @param devices * the devices to set */ public void setDevices(final List<Device> devices) { this.devices = devices; } /** * @param model * the model to set */ public void setModel(final DeviceBrowseModel model) { this.model = model; } /** * Arama işlemi yapar */ public void search() { final DeviceManagerSearchFilter filter = createFilter(); final DeviceManagerResult result = deviceFacade.search(filter); devices = result.getDevices(); LOGGER.info("Found {} devices.", devices.size()); } /** * Seçilen bir cihazı sistemden kaldırır * * @param device */ public void delete(final Long deviceId) { final FacesContext context = FacesContext.getCurrentInstance(); final DeviceManagerResult result = deviceFacade.delete(deviceId); if (result.isSuccess()) { createInfoMessage(context, MSG_DEVICE_DELETED, ""); search(); } else { createErrorMessage(context, MSG_DEVICE_CANNOT_BE_DELETED, MSG_DEVICE_CANNOT_BE_DELETED_DETAIL); } } /** * Hata mesajı oluşturur * * @param context * @param summary * @param detail */ private void createErrorMessage(final FacesContext context, final String summary, final String detail) { context.addMessage(null, new FacesMessage2(FacesMessage.SEVERITY_ERROR, summary, detail)); } /** * Bilgi mesajı oluşturur * * @param context * @param summary * @param detail */ private void createInfoMessage(final FacesContext context, final String summary, final String detail) { context.addMessage(null, new FacesMessage2(FacesMessage.SEVERITY_INFO, summary, detail)); } /** * Hasta seçimini sıfırlar */ public void resetPatient() { model.setPatient(null); } /** * Model nesnesinden filtre üretir * * @return */ private DeviceManagerSearchFilter createFilter() { final DeviceManagerSearchFilter filter = new DeviceManagerSearchFilter(); if (model.getPatient() != null) { filter.setPatient(model.getPatient()); } if (model.getApiKey() != null && model.getApiKey().isEmpty()) { filter.setApiKey(model.getApiKey()); } return filter; } }