Commit 22583204 by zhugs

refactor:代码优化

parent 275a9c44
import database.InsertData; import database.InsertData;
import text.TextFileHandlerFactory;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import text.TextFileWatcher;
import util.ConfigUtil; import util.ConfigUtil;
import watcher.DirWatcher;
import java.io.File; import java.io.File;
import java.nio.file.Path; import java.nio.file.Path;
...@@ -24,8 +25,8 @@ public class Main { ...@@ -24,8 +25,8 @@ public class Main {
} }
return true; return true;
}; };
TextFileWatcher textWatcher = new TextFileWatcher(dirText, textFilter);
textWatcher.startWatch(); new DirWatcher(dirText, textFilter, new TextFileHandlerFactory()).startWatch();
// 监听 excel log文件 // 监听 excel log文件
...@@ -39,6 +40,7 @@ public class Main { ...@@ -39,6 +40,7 @@ public class Main {
// excelWatcher.startWatch(); // excelWatcher.startWatch();
// 阻塞主线程 // 阻塞主线程
log.info("程序已启动");
try { try {
Thread.currentThread().join(); Thread.currentThread().join();
} catch (InterruptedException e) { } 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; ...@@ -2,6 +2,7 @@ package text;
import database.InsertData; import database.InsertData;
import domain.ResultData; import domain.ResultData;
import handler.AbstractFileHandler;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.io.*; import java.io.*;
...@@ -17,16 +18,14 @@ import java.util.zip.ZipEntry; ...@@ -17,16 +18,14 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@Slf4j @Slf4j
public class TextHandler implements Runnable { public class TextHandler extends AbstractFileHandler {
private final File file;
public TextHandler(File file) { public TextHandler(File file) {
this.file = file; super(file);
} }
@Override @Override
public void run() { protected void processFile(File file) {
log.info("文件处理:{}", file.getName()); log.info("文件处理:{}", file.getName());
String begin = "=+ SUMMARY begin =+"; String begin = "=+ SUMMARY begin =+";
String end = "=+ SUMMARY end {2}=+"; String end = "=+ SUMMARY end {2}=+";
...@@ -77,7 +76,7 @@ public class TextHandler implements Runnable { ...@@ -77,7 +76,7 @@ public class TextHandler implements Runnable {
String zipName = zipLogFile(file); String zipName = zipLogFile(file);
data.setZipFileUrl(zipName); data.setZipFileUrl(zipName);
// data.setFileUrl(file.getAbsolutePath()); data.setFileUrl(file.getParent() + zipName);
new InsertData().insert(data); new InsertData().insert(data);
} }
......
package text; package watcher;
import handler.FileHandlerFactory;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.io.File; import java.io.File;
...@@ -8,15 +9,18 @@ import java.io.IOException; ...@@ -8,15 +9,18 @@ import java.io.IOException;
import java.nio.file.*; import java.nio.file.*;
import java.util.function.Predicate; import java.util.function.Predicate;
@Slf4j @Slf4j
public class TextFileWatcher { public class DirWatcher {
private final Path dir; private final Path dir;
private final Predicate<File> fileFilter; 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.dir = dir;
this.fileFilter = fileFilter; this.fileFilter = fileFilter;
this.fileHandler = fileHandler;
} }
public void startWatch() { public void startWatch() {
...@@ -29,8 +33,7 @@ public class TextFileWatcher { ...@@ -29,8 +33,7 @@ public class TextFileWatcher {
File[] files = dir.toFile().listFiles(fileFilter::test); File[] files = dir.toFile().listFiles(fileFilter::test);
if (files != null) { if (files != null) {
for (File f : files) { for (File f : files) {
TextHandler textHandler = new TextHandler(f); Thread.ofVirtual().start(fileHandler.create(f));
Thread.ofVirtual().start(textHandler);
} }
} }
...@@ -42,10 +45,9 @@ public class TextFileWatcher { ...@@ -42,10 +45,9 @@ public class TextFileWatcher {
Path fullPath = dir.resolve((Path) event.context()); Path fullPath = dir.resolve((Path) event.context());
File file = fullPath.toFile(); File file = fullPath.toFile();
if(fileFilter.test(file) && waitForFileReady(file, 3, 500)){ if (fileFilter.test(file) && waitForFileReady(file, 3, 500)) {
log.info("文件已创建: {}", file.getName()); log.info("文件已创建: {}", file.getName());
TextHandler textHandler = new TextHandler(file); Thread.ofVirtual().start(fileHandler.create(file));
Thread.ofVirtual().start(textHandler);
} }
} }
key.reset(); key.reset();
......
watch_dir=C:/Users/zhugso/Projects/chenyang/testdata/text 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 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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论