/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.plugin.visit.manager.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ewcms.core.site.dao.ChannelDAO;
import com.ewcms.core.site.dao.OrganDAO;
import com.ewcms.core.site.model.Channel;
import com.ewcms.core.site.model.Organ;
import com.ewcms.plugin.visit.manager.dao.VisitDAO;
import com.ewcms.plugin.visit.manager.vo.PublishedVo;
import com.ewcms.plugin.visit.util.DateTimeUtil;
import com.ewcms.web.vo.TreeGridNode;
@Service
public class PublishedService implements PublishedServiceable {
@Autowired
private VisitDAO visitDAO;
@Autowired
private ChannelDAO channelDAO;
@Autowired
private OrganDAO organDAO;
@Override
public List<PublishedVo> findStaffReleased(String startDate, String endDate, Integer siteId, Integer channelId) {
Date start = DateTimeUtil.getStringToDate(startDate);
Date end = DateTimeUtil.getStringToDate(endDate);
return visitDAO.findStaffReleased(start, end, siteId, channelId);
}
@Override
public List<TreeGridNode> findChannelRelease(String startDate, String endDate, Integer siteId) {
Date start = DateTimeUtil.getStringToDate(startDate);
Date end = DateTimeUtil.getStringToDate(endDate);
Channel rootChannel = channelDAO.getChannelRoot(siteId);
List<Channel> channels = channelDAO.getChannelChildren(rootChannel.getId());
List<TreeGridNode> nodes = new ArrayList<TreeGridNode>();
for (Channel channel : channels){
PublishedVo vo = visitDAO.findChannelReleased(start, end, channel.getId(), siteId);
if (vo == null) continue;
TreeGridNode node = new TreeGridNode();
node.setId(channel.getId());
node.setText(channel.getName());
node.setState("open");
findChannelType(channel, node);
node.setData(vo);
findTreeGridNode(node, channel.getId(), start, end, siteId);
nodes.add(node);
}
return nodes;
}
private void findTreeGridNode(TreeGridNode parentNode, Integer parentId, Date start, Date end, Integer siteId){
List<TreeGridNode> treeGridNodes = new ArrayList<TreeGridNode>();
List<Channel> channels = channelDAO.getChannelChildren(parentId);
for (Channel channel : channels){
PublishedVo vo = visitDAO.findChannelReleased(start, end, channel.getId(), siteId);
if (vo == null) continue;
TreeGridNode treeGridNode = new TreeGridNode();
treeGridNode.setId(channel.getId());
treeGridNode.setText(channel.getName());
treeGridNode.setState("open");
treeGridNode.setData(vo);
findChannelType(channel, treeGridNode);
findTreeGridNode(treeGridNode, channel.getId(), start, end, siteId);
treeGridNodes.add(treeGridNode);
}
parentNode.setChildren(treeGridNodes);
}
private void findChannelType(Channel channel, TreeGridNode node){
switch(channel.getType()){
case ARTICLE: node.setIconCls("icon-channel-article");break;
case LEADER: node.setIconCls("icon-channel-leader");break;
case ONLINE : node.setIconCls("icon-channel-online");break;
case LEADERARTICLE :node.setIconCls("icon-channel-articlerefer");break;
case RETRIEVAL : node.setIconCls("icon-channel-retrieval");break;
case PROJECT : node.setIconCls("icon-channel-project");break;
case PROJECTARTICLE : node.setIconCls("icon-channel-projectarticle");break;
case ENTERPRISE : node.setIconCls("icon-channel-enterprise");break;
case ENTERPRISEARTICLE : node.setIconCls("icon-channel-enterprisearticle");break;
case EMPLOYE : node.setIconCls("icon-channel-employe");break;
case EMPLOYEARTICLE : node.setIconCls("icon-channel-employearticle");break;
default : node.setIconCls("icon-channel-note");
}
}
@Override
public List<TreeGridNode> findOrganReleased(String startDate, String endDate, Integer siteId) {
Date start = DateTimeUtil.getStringToDate(startDate);
Date end = DateTimeUtil.getStringToDate(endDate);
List<Organ> rootOrgans = organDAO.getOrganChildren(null);
List<TreeGridNode> nodes = new ArrayList<TreeGridNode>();
for (Organ organ : rootOrgans){
PublishedVo vo = visitDAO.findOrganReleased(start, end, organ.getId(), siteId);
if (vo == null) continue;
TreeGridNode node = new TreeGridNode();
node.setId(organ.getId());
node.setText(organ.getName());
node.setState("open");
node.setIconCls("icon-organ");
node.setData(vo);
findOrganChildNode(node, organ.getId(), siteId, start, end);
nodes.add(node);
}
return nodes;
}
private void findOrganChildNode(TreeGridNode parentNode, Integer parentId, Integer siteId, Date start, Date end){
List<TreeGridNode> treeGridNodes = new ArrayList<TreeGridNode>();
List<Organ> organs = organDAO.getOrganChildren(parentId);
for (Organ organ : organs){
PublishedVo vo = visitDAO.findOrganReleased(start, end, organ.getId(), siteId);
if (vo == null) continue;
TreeGridNode treeGridNode = new TreeGridNode();
treeGridNode.setId(organ.getId());
treeGridNode.setText(organ.getName());
treeGridNode.setState("open");
treeGridNode.setIconCls("icon-organ");
treeGridNode.setData(vo);
findOrganChildNode(treeGridNode, organ.getId(), siteId, start, end);
treeGridNodes.add(treeGridNode);
}
parentNode.setChildren(treeGridNodes);
}
}