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.RoleNodeNode;
import com.jspxcms.core.domain.RoleSite;
import com.jspxcms.core.repository.RoleNodeNodeDao;
import com.jspxcms.core.service.NodeQueryService;
import com.jspxcms.core.service.RoleNodeNodeService;
@Service
@Transactional(readOnly = true)
public class RoleNodeNodeServiceImpl implements RoleNodeNodeService {
@Transactional
public Set<RoleNodeNode> save(RoleSite roleSite, Integer[] nodeIds) {
int len = ArrayUtils.getLength(nodeIds);
Set<RoleNodeNode> roleNodeNodes = new HashSet<RoleNodeNode>(len);
roleSite.setRoleNodeNodes(roleNodeNodes);
if (len > 0) {
Node node;
RoleNodeNode rnn;
for (Integer nodeId : nodeIds) {
node = nodeQueryService.get(nodeId);
rnn = new RoleNodeNode(roleSite, node);
dao.save(rnn);
// 需要往Node里面add对象吗?node.addRoleNodeNode()??
roleNodeNodes.add(rnn);
}
}
return roleNodeNodes;
}
@Transactional
public Set<RoleNodeNode> update(RoleSite roleSite, Integer[] nodeIds) {
dao.deleteByRoleSiteId(roleSite.getId());
Set<RoleNodeNode> roleNodeNodes = save(roleSite, nodeIds);
return roleNodeNodes;
}
private NodeQueryService nodeQueryService;
@Autowired
public void setNodeQueryService(NodeQueryService nodeQueryService) {
this.nodeQueryService = nodeQueryService;
}
private RoleNodeNodeDao dao;
@Autowired
public void setDao(RoleNodeNodeDao dao) {
this.dao = dao;
}
}