package com.jspxcms.core.service.impl; import java.util.Arrays; import java.util.List; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jspxcms.core.domain.Attribute; import com.jspxcms.core.domain.Site; import com.jspxcms.core.listener.SiteDeleteListener; import com.jspxcms.core.repository.AttributeDao; import com.jspxcms.core.service.AttributeService; import com.jspxcms.core.service.InfoAttributeService; import com.jspxcms.core.service.SiteService; import com.jspxcms.core.support.DeleteException; /** * AttributeServiceImpl * * @author liufang * */ @Service @Transactional(readOnly = true) public class AttributeServiceImpl implements AttributeService, SiteDeleteListener { public List<Attribute> findList(Integer siteId) { return dao.findBySiteId(siteId, new Sort("seq", "id")); } public List<Attribute> findByNumbers(String[] numbers) { return dao.findByNumbers(numbers); } public Attribute get(Integer id) { return dao.findOne(id); } public boolean numberExist(String number, Integer siteId) { return dao.countByNumber(number, siteId) > 0; } @Transactional public Attribute save(Attribute bean, Integer siteId) { Site site = siteService.get(siteId); bean.setSite(site); if (bean.getImageHeight() != null && bean.getImageWidth() != null) { bean.setWithImage(true); } else { bean.setWithImage(false); } bean.applyDefaultValue(); dao.save(bean); return bean; } @Transactional public Attribute update(Attribute bean) { if (bean.getImageHeight() != null && bean.getImageWidth() != null) { bean.setWithImage(true); } else { bean.setWithImage(false); bean.setImageWidth(null); bean.setImageHeight(null); } bean.applyDefaultValue(); dao.save(bean); return bean; } @Transactional public Attribute[] batchUpdate(Integer[] id, String[] name, String[] number, Integer[] imageWidth, Integer[] imageHeight) { Attribute[] beans = new Attribute[id.length]; for (int i = 0, len = id.length; i < len; i++) { beans[i] = get(id[i]); beans[i].setSeq(i); beans[i].setName(name[i]); beans[i].setNumber(number[i]); beans[i].setImageWidth(imageWidth[i]); beans[i].setImageHeight(imageHeight[i]); update(beans[i]); } return beans; } @Transactional public Attribute delete(Integer id) { Attribute entity = dao.findOne(id); infoAttributeService.deleteByAttributeId(id); dao.delete(entity); return entity; } @Transactional public Attribute[] delete(Integer[] ids) { Attribute[] beans = new Attribute[ids.length]; for (int i = 0; i < ids.length; i++) { beans[i] = delete(ids[i]); } return beans; } public void preSiteDelete(Integer[] ids) { if (ArrayUtils.isNotEmpty(ids)) { if (dao.countBySiteId(Arrays.asList(ids)) > 0) { throw new DeleteException("attribute.management"); } } } private InfoAttributeService infoAttributeService; @Autowired public void setInfoAttributeService( InfoAttributeService infoAttributeService) { this.infoAttributeService = infoAttributeService; } private SiteService siteService; @Autowired public void setSiteService(SiteService siteService) { this.siteService = siteService; } private AttributeDao dao; @Autowired public void setDao(AttributeDao dao) { this.dao = dao; } }