| New file | 
|  |  |  | 
|---|
|  |  |  | package com.dy.rtuMw.resource; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.File; | 
|---|
|  |  |  | import java.text.DecimalFormat; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.TreeMap; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.dy.rtuMw.resource.rtuLog.RtuLogNode; | 
|---|
|  |  |  | import org.apache.logging.log4j.LogManager; | 
|---|
|  |  |  | import org.apache.logging.log4j.Logger; | 
|---|
|  |  |  | import org.springframework.context.ApplicationContext; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.dy.common.mw.UnitAdapterInterface; | 
|---|
|  |  |  | import com.dy.common.mw.UnitInterface; | 
|---|
|  |  |  | import com.dy.common.mw.UnitCallbackInterface; | 
|---|
|  |  |  | import com.dy.rtuMw.resource.rtuLog.RtuLogManager; | 
|---|
|  |  |  | import com.dy.common.util.DateTime; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class ResourceUnit implements UnitInterface { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final Logger log = LogManager.getLogger(ResourceUnit.class) ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final ResourceUnit instance = new ResourceUnit() ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //private static SupportUnit supUnit ; | 
|---|
|  |  |  | public static ResourceUnitAdapter adapter ; | 
|---|
|  |  |  | public static ResourceUnitConfigVo confVo ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static ApplicationContext springContext ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private ResourceUnit(){} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @SuppressWarnings("unused") | 
|---|
|  |  |  | public static ResourceUnit getInstance(){ | 
|---|
|  |  |  | return instance ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void setAdapter(UnitAdapterInterface adapter) throws Exception { | 
|---|
|  |  |  | if(adapter == null){ | 
|---|
|  |  |  | throw new Exception("资源模块适配器对象不能为空!") ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ResourceUnit.adapter = (ResourceUnitAdapter)adapter ; | 
|---|
|  |  |  | ResourceUnit.confVo = ResourceUnit.adapter.getConfig() ; | 
|---|
|  |  |  | if(ResourceUnit.confVo == null){ | 
|---|
|  |  |  | throw new Exception("资源模块配置对象不能为空!") ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | * 设置支持单元 | 
|---|
|  |  |  | * @param supUnit | 
|---|
|  |  |  | public void setSupportUnit(SupportUnit supUnit){ | 
|---|
|  |  |  | ResourceUnit.supUnit = supUnit ; | 
|---|
|  |  |  | }*/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 设置spring上下文 | 
|---|
|  |  |  | * @param springContext Spring容器上下文对象 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @SuppressWarnings("unused") | 
|---|
|  |  |  | public void setSpringContext(ApplicationContext springContext) { | 
|---|
|  |  |  | ResourceUnit.springContext = springContext ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void start(UnitCallbackInterface callback) throws Exception { | 
|---|
|  |  |  | if(ResourceUnit.springContext == null){ | 
|---|
|  |  |  | throw new Exception("Spring上下文对象未设置!") ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | callback.call(null) ; | 
|---|
|  |  |  | System.out.println("资源模块成功启动"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void stop(UnitCallbackInterface callback) { | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 记录Rtu日志 | 
|---|
|  |  |  | * @param node 日志队列中的节点对象 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @SuppressWarnings("unused") | 
|---|
|  |  |  | public void rtuLog(RtuLogNode node){ | 
|---|
|  |  |  | if(node != null && node.rtuAddr != null && node.content != null){ | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | RtuLogManager.getInstance().pushRtuLog(node); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error(e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 得到Rtu所有日志文件 | 
|---|
|  |  |  | * @param rtuAddr 控制器地址 | 
|---|
|  |  |  | * @return 文件列表(文件名称,文件大小,文件最后修改时间) | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @SuppressWarnings("unused") | 
|---|
|  |  |  | public TreeMap<String, String[]> listLogFilesName(String rtuAddr){ | 
|---|
|  |  |  | File f = new File(ResourceUnit.confVo.rtuLogDir) ; | 
|---|
|  |  |  | TreeMap<String, String[]> map = new TreeMap<>() ; | 
|---|
|  |  |  | if(f.isDirectory()){ | 
|---|
|  |  |  | File[] fs = f.listFiles() ; | 
|---|
|  |  |  | if(fs != null && fs.length > 0){ | 
|---|
|  |  |  | String fileName ; | 
|---|
|  |  |  | for(File ff : fs){ | 
|---|
|  |  |  | if(ff != null){ | 
|---|
|  |  |  | fileName = ff.getName() ; | 
|---|
|  |  |  | if(fileName.startsWith(rtuAddr)){ | 
|---|
|  |  |  | String[] ss = new String[3] ; | 
|---|
|  |  |  | ss[0] = ff.getName() ; | 
|---|
|  |  |  | ss[1] = formatFileSize(ff.length()) ; | 
|---|
|  |  |  | ss[2] = DateTime.yyyy_MM_dd_HH_mm_ss(new Date(ff.lastModified())) ; | 
|---|
|  |  |  | map.put(ss[0], ss) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return map ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 得到一个日志文件 | 
|---|
|  |  |  | * @param fileName 文件名称([rtuAddr].log) | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @SuppressWarnings("unused") | 
|---|
|  |  |  | public File getLogFile(String fileName){ | 
|---|
|  |  |  | return new File(ResourceUnit.confVo.rtuLogDir + fileName); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String formatFileSize(long fileS) {//通过File的 length()方法数值传入 | 
|---|
|  |  |  | DecimalFormat df = new DecimalFormat("#.00"); | 
|---|
|  |  |  | String fileSizeString; | 
|---|
|  |  |  | if (fileS < 1024) { | 
|---|
|  |  |  | fileSizeString = df.format((double) fileS) + " B"; | 
|---|
|  |  |  | } else if (fileS < 1048576) { | 
|---|
|  |  |  | fileSizeString = df.format((double) fileS / 1024) + " K"; | 
|---|
|  |  |  | } else if (fileS < 1073741824) { | 
|---|
|  |  |  | fileSizeString = df.format((double) fileS / 1048576) + " M"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | fileSizeString = df.format((double) fileS / 1073741824) + " G"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return fileSizeString; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|