package edu.sjtu.infosec.ismp.manager.EM.service.impl;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import org.infosec.ismp.manager.rmi.tm.manager.model.DomainEntity;
import org.infosec.ismp.manager.rmi.tm.manager.model.NodeEntity;
import edu.sjtu.infosec.ismp.manager.EM.comm.Page;
import edu.sjtu.infosec.ismp.manager.EM.dao.IEventGetTopoDao;
import edu.sjtu.infosec.ismp.manager.EM.dao.queryCondition.EventGetTopoCondition;
import edu.sjtu.infosec.ismp.manager.EM.dao.queryResult.EventGetTopoResult;
import edu.sjtu.infosec.ismp.manager.EM.service.IGetTopoInfo;
import edu.sjtu.infosec.ismp.manager.SYSM.user.self.comm.SecurityUserHolder;
import edu.sjtu.infosec.ismp.security.Domain;
/**
* 从拓朴数据库取数据
*
* @author wudengke 2009-6-29
*
*/
public class GetTopoInfo implements IGetTopoInfo {
private IEventGetTopoDao eventGetTopoDao;
public void setEventGetTopoDao(IEventGetTopoDao eventGetTopo) {
this.eventGetTopoDao = eventGetTopo;
}
/**
* 获取TOPO设备IP和MAC地址和设备名
*
* @return
*/
public List<Object> getTopoInfo() {
return eventGetTopoDao.getTopoInfo();
}
/**
* 分页获取TOPO设备IP和MAC地址和设备名
* @return
*/
@SuppressWarnings("unchecked")
public EventGetTopoResult getTopoInfo(Page page, Integer[] bureauIds){
EventGetTopoCondition condition = new EventGetTopoCondition();
EventGetTopoResult re = new EventGetTopoResult();
if (page!=null && page.getCurrentPage()>0 && page.getEveryPage()>0 && bureauIds != null && bureauIds.length>0) {
condition.setPage(page);
condition.setBureauId(bureauIds);
EventGetTopoResult egt = eventGetTopoDao.getTopoInfo(condition);
List<Object[]> list = egt.getDatas();
page = egt.getPage();
List<Domain> mbs = SecurityUserHolder.getCurrentUser().getDomainList();
List<Object[]> res = new ArrayList<Object[]>();
if( list != null && list.size()>0 && mbs !=null && mbs.size()>0){
for (int i=0;i<list.size();i++) {
Object[] oo = (Object[]) list.get(i);
for (int j=0;j<mbs.size();j++) {
Domain mb = mbs.get(j);
if ((((DomainEntity)oo[3]).getId()).equals(mb.getId())){
Object[] aa = new Object[5];
aa[0] = oo[0];
aa[1] = oo[1];
aa[2] = oo[2];
aa[3] = oo[3];
aa[4] = mb.getDomainName();
res.add(aa);
}
}
}
re.setPage(page);
re.setDatas(res);
return re;
}
}
return null;
}
/**
* 获取域事件总量
* @param starttime
* @param endtime
* @return
*/
public List<Object> StatisticsDomain(Timestamp starttime, Timestamp endtime, Integer bureauId) {
if (starttime!=null && endtime!=null) {
return eventGetTopoDao.StatisticsDomain(starttime, endtime, bureauId);
}
return null;
}
public NodeEntity queryByIpBureauId(String ip,Integer bureauId) {
if (ip != null && ip.length()>0 && bureauId != null && bureauId > 0) {
return eventGetTopoDao.queryByIpBureauId(ip, bureauId);
}
return null;
}
}