package com.ejie.x38.rup.jqgrid.filter.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.ejie.x38.rup.jqgrid.filter.dao.FilterDao;
import com.ejie.x38.rup.jqgrid.filter.model.Filter;
@Service(value = "filterService")
public class FilterServiceImpl implements FilterService{
private FilterDao filterDao;
public FilterDao getFilterDao() {
return filterDao;
}
public void setFilterDao(FilterDao filterDao) {
this.filterDao = filterDao;
}
@Override
public Filter insert(Filter filtro) {
//comprobar nombreRepetido
if (!repeatedName(filtro.getFilterSelector(), filtro.getFilterName(), filtro.getFilterUser())){
//comprobar predefinido
if (filtro.isFilterDefault()){
//quitar el filtro predefinido anterior
removeDeafultPreviousFilter(filtro.getFilterSelector(), filtro.getFilterUser());
}
filterDao.insert(filtro);
filtro.setFilterFeedback("ok");
}else{
//nombre repetido
//comprobar predefinido
if (filtro.isFilterDefault()){
//quitar el filtro predefinido anterior
removeDeafultPreviousFilter(filtro.getFilterSelector(), filtro.getFilterUser());
}
//Updateo los valores
//filtro.setFilterFeedback("Error, nombre repetido");
filterDao.update(filtro);
}
return filtro;
}
@Override
public Filter update(Filter filtro) {
//comprobar predefinido
if (filtro.isFilterDefault()){
//quitar el filtro predefinido anterior
removeDeafultPreviousFilter(filtro.getFilterSelector(), filtro.getFilterUser());
}
filterDao.update(filtro);
return filtro;
}
@Override
public Filter delete(Filter filtro) {
//comprobar existencia
if( checkFilter(filtro)){
filterDao.delete(filtro);
}else{
//no existe el elemento a borrar
filtro.setFilterFeedback("no_records");
}
return filtro;
}
@Override
public Filter getBySelectorAndName(String selector, String name, String user) {
return filterDao.getBySelectorAndName(selector, name,user);
}
@Override
public Filter getById(String filterId) {
return filterDao.getById(filterId);
}
@Override
public List <Filter> getAllFilters(String selector,String user) {
return filterDao.getAll(selector,user);
}
private void removeDeafultPreviousFilter(String selector, String user){
Filter filtro= new Filter();
filtro=filterDao.getDefaultAsigned(selector, user);
//borro el boolean de predefinido si existe
//if(filtro.size()>0)
if(filtro!=null)
filterDao.setDefaultAsigned(filtro.getFilterSelector(),filtro.getFilterName(), false, user);
}
private boolean repeatedName(String selector,String name, String user){
boolean respuesta=false;
Filter filtro= filterDao.getBySelectorAndName(selector, name,user);
//if(filtro.size()>0)
if(filtro!=null)
respuesta=true;
return respuesta;
}
@Override
public Filter getDefault(String selector, String user) {
Filter filtro= filterDao.getDefaultAsigned(selector, user);
return filtro;
}
private boolean checkFilter(Filter filtro){
boolean existe=false;
Filter filter= filterDao.getBySelectorAndName(filtro.getFilterSelector(), filtro.getFilterName(), filtro.getFilterUser());
if (filter!=null){
existe=true;
}
return existe;
}
}