📄 parsev3filemanager.java
字号:
/******************************************************************************
* Copyright (c) 2006-2008 Shanghai Datang Mobile Co.Ltd
* All right reserved.
*
* 文件名称:ParseV2FileManager.java
* 简要描述:解析v2性能数据文件管理类
*
* 当前版本:4.00.10
* 修 改 人:wangxin4
* 修改说明:
* 完成日期:2008-7-22
*
* 取代版本:
* 作 者:
* 完成日期:
******************************************************************************/
package com.datangmobile.oss.omc.pc.v3file;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import com.datangmobile.oss.omc.common.server.cm.exception.VIMInitialException;
import com.datangmobile.oss.omc.common.server.cm.proxy.vim.VIMClientService;
import com.datangmobile.oss.omc.pc.ParseFileQueue;
import com.datangmobile.oss.omc.pc.PmConst;
import com.datangmobile.oss.omc.pc.util.FileInfo;
import com.datangmobile.oss.omc.pc.util.FileParserUtil;
import com.datangmobile.oss.platform.jndiresource.client.EJBHomeFactory;
import com.datangmobile.oss.platform.jndiresource.client.ServerInfo;
import com.datangmobile.oss.platform.util.ILogger;
import com.datangmobile.oss.platform.util.ModuleLogger;
/**
* 解析v3性能数据文件管理类
*
* @author wangxin4
*/
public class ParseV3FileManager {
/**
* 日志
*/
private static final ILogger logger = ModuleLogger.getPmLogger()
.getOperLogger();
private static ParseV3FileManager _instance = new ParseV3FileManager();
private ParseV3FileManager() {
}
/**
* 得到唯一实例
*
* @return
*/
public static ParseV3FileManager getInstance() {
return _instance;
}
public void init() {
/* 得到信息模型并初始化 */
try {
VIMClientService.getInstance().initial();
} catch (VIMInitialException e) {
logger.error("get vim info error when init V3 file parse", e);
return;
}
// 先处理本地遗留的V3性能数据文件
dealLocalFile();
// 启动从FTP获取性能数据文件的定时器
// try {
// IGetV3FileTimerHome home = (IGetV3FileTimerHome) EJBHomeFactory
// .getInstance().lookup(IGetV3FileTimerHome.class,
// ServerInfo.PM);
// IGetV3FileTimerLocal getV3DataFileTimer = home.create();
// getV3DataFileTimer.createTimerWork("get_v3data_file_timer");
// } catch (Exception e) {
// logger.error("start get v3 file timer error", e);
// }
}
/**
* 处理本地的剩余文件(上次服务器关闭时留下的)
*
* @return
*/
private void dealLocalFile() {
// add by liuyuan 2007-9-15 当启动文件解析进程的时候,需要判断当前性能数据文件目录下是否有文件
// 如果有文件,就表示在解析文件的时候NEPT被中断关闭了,所以需要扫描一下重新加入解析文件的队列
String path = PmConst.PM_DIR;
File file = new File(path);
if (file.exists()) {
File[] pmFiles = file.listFiles();
if (pmFiles == null || pmFiles.length == 0) {
return;
}
String[] s = null;
String netype = null;
FileInfo fileinfo = null;
String fileName = null;
logger.info(ParseV3FileManager.class, "初始化文件解析进程获取本地性能数据文件:\n");
for (int i = 0; i < pmFiles.length; i++) {
fileName = pmFiles[i].getName();
if (pmFiles[i].isFile()
&& ScanV3PerDataFile.getInstance()
.isV3PerData(fileName)
&& !fileName.endsWith(".bad")) {
logger.info(ParseV3FileManager.class, pmFiles[i].getPath());
s = fileName.split("_");
netype = s[1].toUpperCase();
/* 把成功下载的文件名加入解析队列中 */
String fileType = "";
if (fileName.startsWith(PmConst.PM_V3_DATA_FILE_PREFIX)) {// 性能统计上报文件
fileType = PmConst.PM_V3_DATA_FILE;
} else if (fileName.startsWith(PmConst.PM_V3_CDL_FILE_PREFIX)) {// 小区对上报文件
fileType = PmConst.PM_V3_CDL_FILE;
}
// add by liuyuan 2008-3-21 加入对性能数据文件的处理(zip格式)
// CNBUG00018019
if (fileName.endsWith(PmConst.PM_ZIP)) {// 压缩文件
File dir = new File(System.getProperty("user.dir")
+ File.separator + PmConst.PM_DIR);
try {
ArrayList<String> files = FileParserUtil
.unzipFile(dir.getAbsolutePath()
+ File.separator, fileName);
for (String string : files) {
fileinfo = new FileInfo();
String t = string.substring(string
.lastIndexOf(File.separator) + 1);
fileinfo.setFile(new File(path + File.separator + t));
fileinfo.setNeType(netype);
fileinfo.setFileType(fileType);
fileinfo.setDn(FileParserUtil.getNeDn(t));
// 将这些info发如待解析的队列中
ParseFileQueue.getInstance().putParseFile(
fileinfo);
}
new File(path + File.separator + fileName).delete();
} catch (IOException e) {
logger.error("解压文件到PM目录失败!" + fileName, e);
}
} else {// 可直接解析的二进制文件
fileinfo = new FileInfo();
fileinfo.setFile(new File(path + File.separator + fileName));
fileinfo.setNeType(netype);
fileinfo.setFileType(fileType);
fileinfo.setDn(FileParserUtil.getNeDn(fileName));
// 将这些info发如待解析的队列中
ParseFileQueue.getInstance().putParseFile(fileinfo);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -