package com.sobey.cmop.mvc.poi.port;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.onecmdb.core.utils.bean.CiBean;
import org.onecmdb.core.utils.bean.ValueBean;
import com.sobey.cmop.mvc.poi.Utils;
import com.sobey.cmop.mvc.service.onecmdb.OneCmdbService;
/**
* 读取oneCMDB生成excel报表
*
* @author Administrator
*
*/
public class PortReport {
/**
* oneCMDB中 端口名称
*/
private static String PORT_TYPE = "NicPort";
/**
* 硬件机名
*/
private static String HARDWARE_TYPE = "Nic";
/**
* @param args
*/
public static void main(String[] args) {
List<Port> ports = getPortList();
// 1.创建一个 workbook
HSSFWorkbook workbook = new HSSFWorkbook();
// 2.创建一个 worksheet
HSSFSheet worksheet = workbook.createSheet(PORT_TYPE);
// 3.定义起始行和列
int startRowIndex = 0;
int startColIndex = 0;
// 4.创建title,data,headers
PortLayouter.buildReport(worksheet, startRowIndex, startColIndex);
// 5.填充数据
PortLayouter.fillPort(worksheet, startRowIndex, startColIndex, ports);
String fileName = "D:\\" + PORT_TYPE + ".xls";
Utils.write(fileName, worksheet);
}
public static List<Port> getPortList() {
List<Port> ports = new ArrayList<Port>();
Map<String, String> map = OneCmdbService.findCiByText(PORT_TYPE);
for (String alias : map.keySet()) {
Port port = new Port();
CiBean ciBean = OneCmdbService.findCiBeanByAlias(alias);
port.setName(ciBean.getDisplayName());
for (ValueBean valueBean : ciBean.fetchAttributeValueBeans("IPAddress")) {
if (valueBean.getValue() != null) {
CiBean ipAddressCiBean = OneCmdbService.findCiBeanByAlias(valueBean.getValue());
port.setIpAddress(ipAddressCiBean.getDisplayName());
}
}
for (ValueBean valueBean : ciBean.fetchAttributeValueBeans("MacAddress")) {
port.setMacAddress(valueBean.getValue());
}
for (ValueBean valueBean : ciBean.fetchAttributeValueBeans("Sit")) {
port.setSite(valueBean.getValue());
}
for (ValueBean valueBean : ciBean.fetchAttributeValueBeans("ConnectedTo")) {
if (valueBean.getValue() != null) {
CiBean connectedToCiBean = OneCmdbService.findCiBeanByAlias(valueBean.getValue());
port.setConnectedTo(connectedToCiBean.getDisplayName());
}
}
for (ValueBean valueBean : ciBean.fetchAttributeValueBeans(HARDWARE_TYPE)) {
if (valueBean.getValue() != null) {
CiBean hardwareCiBean = OneCmdbService.findCiBeanByAlias(valueBean.getValue());
port.setHardware(hardwareCiBean.getDisplayName());
}
}
ports.add(port);
}
return ports;
}
}