package com.jspxcms.core.service.impl;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jspxcms.common.orm.Limitable;
import com.jspxcms.common.orm.SearchFilter;
import com.jspxcms.common.util.RowSide;
import com.jspxcms.core.domain.SensitiveWord;
import com.jspxcms.core.repository.SensitiveWordDao;
import com.jspxcms.core.service.SensitiveWordService;
@Service
@Transactional(readOnly = true)
public class SensitiveWordServiceImpl implements SensitiveWordService {
public Page<SensitiveWord> findAll(Map<String, String[]> params,
Pageable pageable) {
return dao.findAll(spec(params), pageable);
}
public RowSide<SensitiveWord> findSide(Map<String, String[]> params,
SensitiveWord bean, Integer position, Sort sort) {
if (position == null) {
return new RowSide<SensitiveWord>();
}
Limitable limit = RowSide.limitable(position, sort);
List<SensitiveWord> list = dao.findAll(spec(params), limit);
return RowSide.create(list, bean);
}
private Specification<SensitiveWord> spec(Map<String, String[]> params) {
Collection<SearchFilter> filters = SearchFilter.parse(params).values();
Specification<SensitiveWord> sp = SearchFilter.spec(filters,
SensitiveWord.class);
return sp;
}
public List<SensitiveWord> getList() {
return dao.findByStatus(SensitiveWord.NORMAL);
}
public SensitiveWord get(Integer id) {
return dao.findOne(id);
}
public String replace(String s) {
if (StringUtils.isBlank(s)) {
return s;
}
for (SensitiveWord word : getList()) {
s = StringUtils.replace(s, word.getName(), word.getReplacement());
}
return s;
}
@Transactional
public SensitiveWord save(SensitiveWord bean, Integer siteId) {
bean.applyDefaultValue();
bean = dao.save(bean);
return bean;
}
@Transactional
public SensitiveWord update(SensitiveWord bean) {
bean.applyDefaultValue();
bean = dao.save(bean);
return bean;
}
@Transactional
public SensitiveWord delete(Integer id) {
SensitiveWord entity = dao.findOne(id);
dao.delete(entity);
return entity;
}
@Transactional
public SensitiveWord[] delete(Integer[] ids) {
SensitiveWord[] beans = new SensitiveWord[ids.length];
for (int i = 0; i < ids.length; i++) {
beans[i] = delete(ids[i]);
}
return beans;
}
private SensitiveWordDao dao;
@Autowired
public void setDao(SensitiveWordDao dao) {
this.dao = dao;
}
}