package info.ozkan.vipera.business.healthdata;
import info.ozkan.vipera.business.role.Role;
import info.ozkan.vipera.dao.healthdata.HealthDataFieldDao;
import info.ozkan.vipera.entities.HealthDataField;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.security.RolesAllowed;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.transaction.annotation.Transactional;
/**
* Sağlık alanları üzerinde CRUD işlemleri yapan Manager sınıfı
*
* @author Ömer Özkan
*
*/
@Named("healthDataFieldManager")
@Transactional
public class HealthDataFieldManagerImpl implements HealthDataFieldManager {
/**
* dao katmanı nesnesi
*/
@Inject
private HealthDataFieldDao healthDataFieldDao;
/**
* alanlar
*/
private Map<String, HealthDataField> fields;
@RolesAllowed(Role.ROLE_ADMIN)
public HealthDataFieldResult add(final HealthDataField field) {
return healthDataFieldDao.add(field);
}
@RolesAllowed(Role.ROLE_ADMIN)
public HealthDataFieldResult getFields() {
return healthDataFieldDao.getAllFields();
}
@RolesAllowed(Role.ROLE_ADMIN)
public HealthDataFieldResult update(final HealthDataField field) {
return healthDataFieldDao.update(field);
}
@RolesAllowed(Role.ROLE_ADMIN)
public HealthDataFieldResult remove(final HealthDataField field) {
return healthDataFieldDao.remove(field);
}
public HealthDataField getField(final String key) {
if (fields == null || !fields.containsKey(key)) {
createFields();
}
return fields.get(key);
}
/**
* Veritabanından alanları alarak map e kaydeder
*/
private void createFields() {
fields = new HashMap<String, HealthDataField>();
final HealthDataFieldResult result = getFields();
final List<HealthDataField> list = result.getHealthDataFields();
for (final HealthDataField field : list) {
fields.put(field.getName(), field);
}
}
}