package edu.sjtu.infosec.ismp.manager.AM.service.impl;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang.RandomStringUtils;
import org.infosec.ismp.manager.rmi.comm.model.SystemModelInfo;
import org.infosec.ismp.manager.rmi.lm.pfLog.model.SystemLog;
import jxl.CellType;
import jxl.DateCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import edu.sjtu.infosec.ismp.manager.AM.comm.AssetConstant;
import edu.sjtu.infosec.ismp.manager.AM.dao.AssetDeviceDao;
import edu.sjtu.infosec.ismp.manager.AM.model.AssetDeviceBO;
import edu.sjtu.infosec.ismp.manager.AM.model.DeviceChartVO;
import edu.sjtu.infosec.ismp.manager.AM.service.AssetDeviceService;
import edu.sjtu.infosec.ismp.manager.LM.pfLog.service.SystemLogService;
import edu.sjtu.infosec.ismp.manager.SYSM.user.self.comm.SecurityUserHolder;
import edu.sjtu.infosec.ismp.manager.comm.model.page.Page;
import edu.sjtu.infosec.ismp.security.Domain;
import edu.sjtu.infosec.ismp.security.OperatorDetails;
import edu.sjtu.infosec.ismp.security.Role;
public class AssetDeviceServiceImpl implements AssetDeviceService {
private AssetDeviceDao assetDeviceDao;
private SystemLogService systemlogService;
public void setSystemlogService(SystemLogService systemlogService) {
this.systemlogService = systemlogService;
}
public void setAssetDeviceDao(AssetDeviceDao assetDeviceDao) {
this.assetDeviceDao = assetDeviceDao;
}
SystemLog log;
String rolenames;
String username;
void init(){
OperatorDetails user = SecurityUserHolder.getCurrentUser();
username = user.getUsername();
rolenames="";
for(Role role : user.getRoleList()){
rolenames = rolenames+role.getName();
}
log = new SystemLog();
}
void destory(){
log=null;
username=null;
rolenames=null;
}
public void add(AssetDeviceBO assetDevice) throws Exception {
try{
init();
assetDeviceDao.add(assetDevice);
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("添加资产操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
destory();
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("添加资产操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
}
}
public void delete(AssetDeviceBO assetDevice) throws Exception {
try{
init();
assetDeviceDao.delete(assetDevice);
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("删除资产操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
destory();
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("删除资产操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
}
}
public void update(AssetDeviceBO assetDevice) throws Exception {
try{
init();
assetDeviceDao.update(assetDevice);
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("更新资产操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
destory();
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("更新资产操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
}
}
/**
* 资产报表统计
*/
public List<DeviceChartVO> getDeviceChartData(AssetDeviceBO deviceBO) {
try{
init();
List<DeviceChartVO> entityList = new ArrayList<DeviceChartVO>();
DeviceChartVO last4Chart = assetDeviceDao.getDeviceChartData(4,
deviceBO);
DeviceChartVO last3Chart = assetDeviceDao.getDeviceChartData(3,
deviceBO);
DeviceChartVO last2Chart = assetDeviceDao.getDeviceChartData(2,
deviceBO);
DeviceChartVO lastChart = assetDeviceDao.getDeviceChartData(1,
deviceBO);
DeviceChartVO curChart = assetDeviceDao.getDeviceChartData(0,
deviceBO);
entityList.add(last4Chart);
entityList.add(last3Chart);
entityList.add(last2Chart);
entityList.add(lastChart);
entityList.add(curChart);
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("资产报表统计操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
destory();
return entityList;
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("资产报表统计操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
return null;
}
}
public List<AssetDeviceBO> findAll() throws Exception {
try{
init();
List<AssetDeviceBO> list = assetDeviceDao.findAll();
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询所有资产操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
destory();
return list;
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询所有资产操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
return null;
}
}
public List<AssetDeviceBO> findAll(Timestamp startRecordTime,
Timestamp endRecordTime, int startResult, int maxResult)
throws Exception {
// return list;
try{
init();
List<AssetDeviceBO> list = assetDeviceDao.findAll(startRecordTime, endRecordTime, startResult, maxResult);
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询所有资产分页操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
destory();
return list;
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询所有资产分页操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
return null;
}
}
public List<AssetDeviceBO> findAllByDomain(List<Domain> domainList)
throws Exception {
try{
init();
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("根据域查询资产操作");
log.setControl("成功");
if(domainList == null){
destory();
return null;
}else if(domainList.size()<=0){
destory();
return null;
}else{
List<AssetDeviceBO> list = assetDeviceDao.findAllByDomain(domainList);
systemlogService.saveSystemLog(log);
destory();
return list;
}
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("根据域查询资产操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
return null;
}
}
public List<AssetDeviceBO> findAllByDomain(List<Domain> domainList,
Timestamp startRecordTime, Timestamp endRecordTime,
int startResult, int maxResult) throws Exception {
try{
init();
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("根据域查询分页资产操作");
log.setControl("成功");
if(domainList == null){
return null;
}else if(domainList.size()<=0){
return null;
}else{
List<AssetDeviceBO> list = assetDeviceDao.findAllByDomain(domainList, startRecordTime, endRecordTime, startResult, maxResult);
systemlogService.saveSystemLog(log);
return list;
}
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("根据域查询分页资产操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
return null;
}
}
public long findAllNum(Timestamp startRecordTime, Timestamp endRecordTime)
throws Exception {
long num = assetDeviceDao.findAllNum(startRecordTime, endRecordTime);
return num;
}
public long findAllNumByDomain(List<Domain> domainList,
Timestamp startRecordTime, Timestamp endRecordTime)
throws Exception {
if(domainList == null){
return 0;
}else if(domainList.size()<=0){
return 0;
}else{
long num = assetDeviceDao.findAllNumByDomain(domainList, startRecordTime, endRecordTime);
return num;
}
}
public AssetDeviceBO findById(int id) {
try{
init();
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("根据ID查询资产操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return assetDeviceDao.findById(id);
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("根据ID查询资产操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
public List<AssetDeviceBO> findAllByUnknowDomain() throws Exception {
try{
init();
List<AssetDeviceBO> list = assetDeviceDao.findAllByUnknowDomain();
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询所有未知域资产操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return list;
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询所有未知域资产操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
public List<AssetDeviceBO> findAllByUnknowDomain(Timestamp startRecordTime,
Timestamp endRecordTime, int startResult, int maxResult)
throws Exception {
try{
init();
List<AssetDeviceBO> list = assetDeviceDao.findAllByUnknowDomain(startRecordTime, endRecordTime, startResult, maxResult);
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询所有未知域资产并分页操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return list;
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询所有未知域资产并分页操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
public long findAllNumByUnknowDomain(Timestamp startRecordTime,
Timestamp endRecordTime) throws Exception {
long num = assetDeviceDao.findAllNumByUnknowDomain(startRecordTime, endRecordTime);
return num;
}
public List<AssetDeviceBO> getPageListByAssetDevice(
AssetDeviceBO assetDeviceBO, Page page,List<Integer> list) throws Exception{
try{
init();
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询资产并分页操作");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return assetDeviceDao.getPageListByAssetDevice(assetDeviceBO, page,list);
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("查询资产并分页操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
public int getCountByAssetDevice(AssetDeviceBO assetDeviceBO) {
return assetDeviceDao.getCountByAssetDevice(assetDeviceBO);
}
public boolean excelImport(InputStream is, Integer assetType)
throws BiffException, IOException,Exception {
try{
init();
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("excel导入操作");
log.setControl("成功");
/***********excelImport导出*************/
List<AssetDeviceBO> entityList = new ArrayList<AssetDeviceBO>();
Workbook wb = null;
wb = Workbook.getWorkbook(is);
Sheet sheet = wb.getSheet(0);
int rows = sheet.getRows();
for (int i = 1; i < rows; i++) {
String sn = sheet.getCell(0, i).getContents();
String name = sheet.getCell(1, i).getContents();
String ip = sheet.getCell(2, i).getContents();
String agentIp = sheet.getCell(3, i).getContents();
String mac = sheet.getCell(4, i).getContents();
String communityName = sheet.getCell(5, i).getContents();
String manufacturer = sheet.getCell(6, i).getContents();
String model = sheet.getCell(7, i).getContents();
String description = sheet.getCell(8, i).getContents();
String user = sheet.getCell(9, i).getContents();
String telephone = sheet.getCell(10, i).getContents();
String unit = sheet.getCell(11, i).getContents();
String department = sheet.getCell(12, i).getContents();
Integer status = null;
if (sheet.getCell(13, i).getType() == CellType.NUMBER) {
status = Integer.valueOf((int) ((NumberCell) sheet.getCell(13,
i)).getValue());
}
Timestamp stockTime = null;
if (sheet.getCell(14, i).getType() == CellType.DATE) {
stockTime = new Timestamp(((DateCell) sheet.getCell(14, i))
.getDate().getTime());
}
Integer validityPeriod = null;
if (sheet.getCell(15, i).getType() == CellType.NUMBER) {
validityPeriod = Integer.valueOf((int) ((NumberCell) sheet
.getCell(15, i)).getValue());
}
Timestamp registrationTime = null;
if (sheet.getCell(16, i).getType() == CellType.DATE) {
registrationTime = new Timestamp(((DateCell) sheet.getCell(16,
i)).getDate().getTime());
}
Integer priority = null;
if (sheet.getCell(17, i).getType() == CellType.NUMBER) {
priority = Integer.valueOf((int) ((NumberCell) sheet.getCell(
17, i)).getValue());
}
Boolean checkAvailable = Boolean.valueOf(sheet.getCell(18, i)
.getContents());
String singleCode = RandomStringUtils
.random(19,
"abcdefghijkmnlopqrstuvwxyzABCDEFGHIJKMNLOPQRSTUVWXYZ0123456789")
+ String.valueOf(System.currentTimeMillis());
AssetDeviceBO entity = new AssetDeviceBO(agentIp, assetType,
checkAvailable, communityName, department, description, ip,
priority, mac, manufacturer, model, name, priority,
registrationTime, singleCode, sn, status, stockTime,
telephone, unit, user, validityPeriod);
entityList.add(entity);
}
wb.close();
// dao操作
if (entityList.isEmpty()) {
return false;
}
systemlogService.saveSystemLog(log);
for (AssetDeviceBO bo : entityList) {
assetDeviceDao.add(bo);
}
return true;
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("excelImport导入操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return false;
}
}
public boolean excelImport(InputStream is, Integer assetType, Integer locationId)
throws BiffException,IOException,Exception {
try{
init();
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("excelImport导入操作");
log.setControl("成功");
/****************excelImport导出********************/
List<AssetDeviceBO> entityList = new ArrayList<AssetDeviceBO>();
Workbook wb = null;
wb = Workbook.getWorkbook(is);
Sheet sheet = wb.getSheet(0);
int rows = sheet.getRows();
for (int i = 1; i < rows; i++) {
String sn = sheet.getCell(0, i).getContents();
String name = sheet.getCell(1, i).getContents();
String ip = sheet.getCell(2, i).getContents();
String agentIp = sheet.getCell(3, i).getContents();
String mac = sheet.getCell(4, i).getContents();
String communityName = sheet.getCell(5, i).getContents();
String manufacturer = sheet.getCell(6, i).getContents();
String model = sheet.getCell(7, i).getContents();
String description = sheet.getCell(8, i).getContents();
String user = sheet.getCell(9, i).getContents();
String telephone = sheet.getCell(10, i).getContents();
String unit = sheet.getCell(11, i).getContents();
String department = sheet.getCell(12, i).getContents();
Integer status = null;
if (sheet.getCell(13, i).getType() == CellType.NUMBER) {
status = Integer.valueOf((int) ((NumberCell) sheet.getCell(13,
i)).getValue());
}
Timestamp stockTime = null;
if (sheet.getCell(14, i).getType() == CellType.DATE) {
stockTime = new Timestamp(((DateCell) sheet.getCell(14, i))
.getDate().getTime());
}
Integer validityPeriod = null;
if (sheet.getCell(15, i).getType() == CellType.NUMBER) {
validityPeriod = Integer.valueOf((int) ((NumberCell) sheet
.getCell(15, i)).getValue());
}
Timestamp registrationTime = null;
if (sheet.getCell(16, i).getType() == CellType.DATE) {
registrationTime = new Timestamp(((DateCell) sheet.getCell(16,
i)).getDate().getTime());
}
Integer priority = null;
if (sheet.getCell(17, i).getType() == CellType.NUMBER) {
priority = Integer.valueOf((int) ((NumberCell) sheet.getCell(
17, i)).getValue());
}
Boolean checkAvailable = Boolean.valueOf(sheet.getCell(18, i)
.getContents());
String deviceType = sheet.getCell(19, i).getContents();
String singleCode = RandomStringUtils
.random(19,
"abcdefghijkmnlopqrstuvwxyzABCDEFGHIJKMNLOPQRSTUVWXYZ0123456789")
+ String.valueOf(System.currentTimeMillis());
if(name != null && !"".equals(name)){
AssetDeviceBO entity = new AssetDeviceBO(agentIp, assetType,
checkAvailable, communityName, department, description, ip,
priority, mac, manufacturer, model, name, priority,
registrationTime, singleCode, sn, status, stockTime,
telephone, unit, user, validityPeriod);
entity.setLocationId(locationId);
if(deviceType.trim().equals("路由器") || deviceType.trim().equals("router")){
deviceType = "router";
entity.setDeviceType(deviceType);
}else if(deviceType.trim().equals("二层交换机")||deviceType.trim().equals("三层交换机") || deviceType.trim().equals("switch")){
deviceType = "switch";
entity.setDeviceType(deviceType);
}else if(deviceType.trim().equals("PC") || deviceType.trim().equals("pc")){
deviceType = "pc";
entity.setDeviceType(deviceType);
}else if(deviceType.trim().equals("防火墙") || deviceType.trim().equals("firewall")){
deviceType = "firewall";
entity.setDeviceType(deviceType);
}else if(deviceType.trim().equals("服务器") || deviceType.trim().equals("server")){
deviceType = "server";
entity.setDeviceType(deviceType);
}else if(deviceType.trim().equals("IDS") || deviceType.trim().equals("ids")){
deviceType = "ids";
entity.setDeviceType(deviceType);
}
entityList.add(entity);
}
}
wb.close();
// dao操作
if (entityList.isEmpty()) {
return false;
}
systemlogService.saveSystemLog(log);
for (AssetDeviceBO bo : entityList) {
assetDeviceDao.add(bo);
}
destory();
return true;
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AM);
log.setOperationDesc("excelImport导入操作");
log.setControl("失败");
systemlogService.saveSystemLog(log);
destory();
return false;
}
}
public AssetDeviceBO getByNodeId(String nodeid) throws Exception {
assetDeviceDao.getByNodeId(nodeid);
return null;
}
}