Commit 22583204 by zhugs

refactor:代码优化

parent 275a9c44
import database.InsertData;
import text.TextFileHandlerFactory;
import lombok.extern.slf4j.Slf4j;
import text.TextFileWatcher;
import util.ConfigUtil;
import watcher.DirWatcher;
import java.io.File;
import java.nio.file.Path;
......@@ -24,8 +25,8 @@ public class Main {
}
return true;
};
TextFileWatcher textWatcher = new TextFileWatcher(dirText, textFilter);
textWatcher.startWatch();
new DirWatcher(dirText, textFilter, new TextFileHandlerFactory()).startWatch();
// 监听 excel log文件
......@@ -39,6 +40,7 @@ public class Main {
// excelWatcher.startWatch();
// 阻塞主线程
log.info("程序已启动");
try {
Thread.currentThread().join();
} catch (InterruptedException e) {
......
package handler;
import java.io.File;
public abstract class AbstractFileHandler implements FileHandler {
protected final File file;
public AbstractFileHandler(File file) {
this.file = file;
}
@Override
public File getFile() {
return file;
}
// 每个子类都要实现的具体处理逻辑
protected abstract void processFile(File file);
@Override
public void run() {
processFile(file);
}
}
\ No newline at end of file
package handler;
import java.io.File;
public interface FileHandler extends Runnable {
File getFile();
}
\ No newline at end of file
package handler;
import java.io.File;
public interface FileHandlerFactory {
AbstractFileHandler create(File file);
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package text;
import database.InsertData;
import domain.ResultData;
import handler.AbstractFileHandler;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
......@@ -17,16 +18,14 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@Slf4j
public class TextHandler implements Runnable {
private final File file;
public class TextHandler extends AbstractFileHandler {
public TextHandler(File file) {
this.file = file;
super(file);
}
@Override
public void run() {
protected void processFile(File file) {
log.info("文件处理:{}", file.getName());
String begin = "=+ SUMMARY begin =+";
String end = "=+ SUMMARY end {2}=+";
......@@ -77,7 +76,7 @@ public class TextHandler implements Runnable {
String zipName = zipLogFile(file);
data.setZipFileUrl(zipName);
// data.setFileUrl(file.getAbsolutePath());
data.setFileUrl(file.getParent() + zipName);
new InsertData().insert(data);
}
......
package text;
package watcher;
import handler.FileHandlerFactory;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
......@@ -8,15 +9,18 @@ import java.io.IOException;
import java.nio.file.*;
import java.util.function.Predicate;
@Slf4j
public class TextFileWatcher {
public class DirWatcher {
private final Path dir;
private final Predicate<File> fileFilter;
private final FileHandlerFactory fileHandler;
public TextFileWatcher(Path dir, Predicate<File> fileFilter) {
public DirWatcher(Path dir, Predicate<File> fileFilter, FileHandlerFactory fileHandler) {
this.dir = dir;
this.fileFilter = fileFilter;
this.fileHandler = fileHandler;
}
public void startWatch() {
......@@ -29,8 +33,7 @@ public class TextFileWatcher {
File[] files = dir.toFile().listFiles(fileFilter::test);
if (files != null) {
for (File f : files) {
TextHandler textHandler = new TextHandler(f);
Thread.ofVirtual().start(textHandler);
Thread.ofVirtual().start(fileHandler.create(f));
}
}
......@@ -42,10 +45,9 @@ public class TextFileWatcher {
Path fullPath = dir.resolve((Path) event.context());
File file = fullPath.toFile();
if(fileFilter.test(file) && waitForFileReady(file, 3, 500)){
if (fileFilter.test(file) && waitForFileReady(file, 3, 500)) {
log.info("文件已创建: {}", file.getName());
TextHandler textHandler = new TextHandler(file);
Thread.ofVirtual().start(textHandler);
Thread.ofVirtual().start(fileHandler.create(file));
}
}
key.reset();
......
watch_dir=C:/Users/zhugso/Projects/chenyang/testdata/text
jdbc_url=jdbc:mysql://demo.docmis.cn:21702/test_data?serverTimezone=UTC%2B8&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
jdbc_url=jdbc:mysql://localhost:3306/test_data?serverTimezone=UTC%2B8&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
username=root
password=Gbms123456
password=000000
#jdbc_url=jdbc:mysql://demo.docmis.cn:21702/test_data?serverTimezone=UTC%2B8&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
#username=root
#password=Gbms123456
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论