package com.jspxcms.core.service.impl; import java.util.HashSet; import java.util.Set; 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.Node; import com.jspxcms.core.domain.RoleNodeInfo; import com.jspxcms.core.domain.RoleSite; import com.jspxcms.core.repository.RoleNodeInfoDao; import com.jspxcms.core.service.NodeQueryService; import com.jspxcms.core.service.RoleNodeInfoService; @Service @Transactional(readOnly = true) public class RoleNodeInfoServiceImpl implements RoleNodeInfoService { @Transactional public Set<RoleNodeInfo> save(RoleSite roleSite, Integer[] nodeIds) { int len = ArrayUtils.getLength(nodeIds); Set<RoleNodeInfo> roleNodeInfos = new HashSet<RoleNodeInfo>(len); roleSite.setRoleNodeInfos(roleNodeInfos); if (len > 0) { Node node; RoleNodeInfo rni; for (Integer nodeId : nodeIds) { node = nodeQueryService.get(nodeId); rni = new RoleNodeInfo(roleSite, node); dao.save(rni); // 需要往Node里面add对象吗?node.addRoleNodeInfo()?? roleNodeInfos.add(rni); } } return roleNodeInfos; } @Transactional public Set<RoleNodeInfo> update(RoleSite roleSite, Integer[] nodeIds) { dao.deleteByRoleSiteId(roleSite.getId()); Set<RoleNodeInfo> roleNodeInfos = save(roleSite, nodeIds); return roleNodeInfos; } private NodeQueryService nodeQueryService; @Autowired public void setNodeQueryService(NodeQueryService nodeQueryService) { this.nodeQueryService = nodeQueryService; } private RoleNodeInfoDao dao; @Autowired public void setDao(RoleNodeInfoDao dao) { this.dao = dao; } }