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.InfoNode;
import com.jspxcms.core.domain.Node;
import com.jspxcms.core.repository.InfoNodeDao;
import com.jspxcms.core.service.InfoNodeService;
import com.jspxcms.core.service.NodeQueryService;
@Service
@Transactional(readOnly = true)
public class InfoNodeServiceImpl implements InfoNodeService {
@Transactional
public List<InfoNode> save(Info info, Integer[] nodeIds, Integer nodeId) {
int len = ArrayUtils.getLength(nodeIds) + 1;
List<InfoNode> infoNodes = new ArrayList<InfoNode>(len);
info.setInfoNodes(infoNodes);
if (len > 1) {
for (Integer nid : nodeIds) {
infoNodes.add(save(info, nid));
}
}
infoNodes.add(save(info, nodeId));
return infoNodes;
}
private InfoNode save(Info info, Integer nodeId) {
InfoNode infoNode = new InfoNode();
Node node = nodeQueryService.get(nodeId);
infoNode.setNode(node);
infoNode.setInfo(info);
dao.save(infoNode);
return infoNode;
}
@Transactional
public List<InfoNode> update(Info info, Integer[] nodeIds, Integer nodeId) {
dao.deleteByInfoId(info.getId());
List<InfoNode> infoNodes = save(info, nodeIds, nodeId);
return infoNodes;
}
@Transactional
public int deleteByNodeId(Integer nodeId) {
return dao.deleteByNodeId(nodeId);
}
@Transactional
public int deleteByInfoId(Integer infoId) {
return dao.deleteByNodeId(infoId);
}
private NodeQueryService nodeQueryService;
@Autowired
public void setNodeQueryService(NodeQueryService nodeQueryService) {
this.nodeQueryService = nodeQueryService;
}
private InfoNodeDao dao;
@Autowired
public void setDao(InfoNodeDao dao) {
this.dao = dao;
}
}