package info.ozkan.vipera.views.patient;
import info.ozkan.vipera.business.patient.PatientFacade;
import info.ozkan.vipera.business.patient.PatientManagerResult;
import info.ozkan.vipera.business.patient.PatientSearchFilter;
import info.ozkan.vipera.entities.Patient;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Hasta arama ekranı
*
* @author Ömer Özkan
*
*/
@Named("patientBrowse")
public class PatientBrowseBean {
/**
* LOGGER
*/
private static final Logger LOGGER = LoggerFactory
.getLogger(PatientBrowseBean.class);
/**
* TCKN uzunluğı
*/
private static final int TCKN_LENGTH = 11;
/**
* Model
*/
private final PatientBrowseModel model = new PatientBrowseModel();
/**
* Arama sonucu listesi
*/
private List<Patient> result;
/**
* Business
*/
@Inject
private PatientFacade patientFacade;
/**
* Arama işlemini gerçekleştirir
*/
public void search() {
final PatientSearchFilter filter = createFilterFromModel();
final PatientManagerResult list = getPatientFacade().search(filter);
result = list.getPatients();
LOGGER.info("Found {} patients.", result.size());
}
/**
* {@link PatientBrowseModel} nesnesini {@link PatientSearchFilter}
* nesnesine dönüştürür
*
* @return
*/
protected PatientSearchFilter createFilterFromModel() {
final PatientSearchFilter filter = new PatientSearchFilter();
if (model.getTckn().toString().length() == TCKN_LENGTH) {
filter.addFilter(Patient.TCKN, model.getTckn());
}
if (checkNonEmpty(model.getName())) {
filter.addFilter(Patient.NAME, model.getName());
}
if (checkNonEmpty(model.getSurname())) {
filter.addFilter(Patient.SURNAME, model.getSurname());
}
if (checkNonEmpty(model.getEmail())) {
filter.addFilter(Patient.EMAIL, model.getEmail());
}
if (checkNonEmpty(model.getFatherName())) {
filter.addFilter(Patient.FATHER_NAME, model.getFatherName());
}
if (checkNonEmpty(model.getMotherName())) {
filter.addFilter(Patient.MOTHER_NAME, model.getMotherName());
}
if (model.getSex() != null) {
filter.addFilter(Patient.SEX, model.getSex().getKey());
}
if (checkNonEmpty(model.getBirthYear())) {
filter.addFilter(Patient.BIRTH_DATE, model.getBirthYear());
}
return filter;
}
/**
* Bir string'in boş olup olmadığını kontrol eder
*
* @param string
* string
* @return
*/
private boolean checkNonEmpty(final String string) {
return !string.isEmpty();
}
/**
* @return the result
*/
public List<Patient> getResult() {
return result;
}
/**
* @param result
* the result to set
*/
public void setResult(final List<Patient> result) {
this.result = result;
}
/**
* @return the model
*/
public PatientBrowseModel getModel() {
return model;
}
/**
* @return the patientFacade
*/
protected PatientFacade getPatientFacade() {
return patientFacade;
}
/**
* @param patientFacade
* the patientFacade to set
*/
protected void setPatientFacade(final PatientFacade patientFacade) {
this.patientFacade = patientFacade;
}
}