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; |
| | | } |
| | | |
| | | |
| | | |
| | | } |