package com.jspxcms.core.service.impl; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jspxcms.core.domain.Info; import com.jspxcms.core.domain.InfoSpecial; import com.jspxcms.core.domain.Special; import com.jspxcms.core.repository.InfoSpecialDao; import com.jspxcms.core.service.InfoSpecialService; import com.jspxcms.core.service.SpecialService; @Service @Transactional(readOnly = true) public class InfoSpecialServiceImpl implements InfoSpecialService { @Transactional public List<InfoSpecial> save(Info info, Integer[] specialIds) { int len = ArrayUtils.getLength(specialIds); List<InfoSpecial> infoSpecials = new ArrayList<InfoSpecial>(len); info.setInfoSpecials(infoSpecials); if (len > 0) { InfoSpecial infoSpecial; Special special; for (Integer specialId : specialIds) { infoSpecial = new InfoSpecial(); special = specialService.refer(specialId); infoSpecial.setSpecial(special); infoSpecial.setInfo(info); infoSpecials.add(infoSpecial); dao.save(infoSpecial); } } return infoSpecials; } @Transactional public List<InfoSpecial> update(Info info, Integer[] specialIds) { List<Special> specials = info.getSpecials(); specialService.derefer(specials); dao.deleteByInfoId(info.getId()); List<InfoSpecial> infoSpecials = save(info, specialIds); return infoSpecials; } @Transactional public int deleteByInfoId(Integer infoId) { return dao.deleteByInfoId(infoId); } @Transactional public int deleteBySpecialId(Integer specialId) { return dao.deleteBySpecialId(specialId); } private SpecialService specialService; @Autowired public void setSpecialService(SpecialService specialService) { this.specialService = specialService; } private InfoSpecialDao dao; @Autowired public void setDao(InfoSpecialDao dao) { this.dao = dao; } }