Skip to content

Commit 0bb3888

Browse files
committed
优化成语字典工具数据库下载功能
1 parent e4514a3 commit 0bb3888

3 files changed

Lines changed: 62 additions & 11 deletions

File tree

src/main/java/com/xwintop/xJavaFxTool/controller/assistTools/IdiomDataToolController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javafx.collections.FXCollections;
88
import javafx.collections.ObservableList;
99
import javafx.event.ActionEvent;
10+
import javafx.event.Event;
1011
import javafx.fxml.FXML;
1112
import lombok.Getter;
1213
import lombok.Setter;
@@ -50,6 +51,7 @@ private void initEvent() {
5051
}
5152

5253
private void initService() {
54+
idiomDataToolService.initIdiomData();
5355
}
5456

5557
@FXML
@@ -66,4 +68,8 @@ private void selectAction() {
6668
private void clearAction(ActionEvent event) {
6769
idiomDataToolService.clearAction();
6870
}
71+
72+
public void onCloseRequest(Event event) throws Exception {
73+
idiomDataToolService.destroy();
74+
}
6975
}

src/main/java/com/xwintop/xJavaFxTool/services/assistTools/IdiomDataToolService.java

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,22 @@
22

33
import com.alibaba.druid.pool.DruidDataSource;
44
import com.xwintop.xJavaFxTool.controller.assistTools.IdiomDataToolController;
5+
import com.xwintop.xJavaFxTool.utils.ConfigureUtil;
6+
import com.xwintop.xcore.util.javafx.AlertUtil;
7+
import com.xwintop.xcore.util.javafx.TooltipUtil;
58
import lombok.Getter;
69
import lombok.Setter;
710
import lombok.extern.slf4j.Slf4j;
11+
import okhttp3.OkHttpClient;
12+
import okhttp3.Request;
13+
import okhttp3.Response;
14+
import org.apache.commons.io.IOUtils;
815
import org.apache.commons.lang3.StringUtils;
916
import org.springframework.jdbc.core.JdbcTemplate;
1017

18+
import java.io.File;
19+
import java.io.FileOutputStream;
20+
import java.sql.SQLException;
1121
import java.util.HashMap;
1222
import java.util.List;
1323
import java.util.Map;
@@ -31,13 +41,39 @@ public IdiomDataToolService(IdiomDataToolController idiomDataToolController) {
3141
this.idiomDataToolController = idiomDataToolController;
3242
}
3343

44+
public void initIdiomData() {
45+
File idiomDirtyFile = ConfigureUtil.getConfigureFile("file/IdiomDirty.mv.db");
46+
try {
47+
if (!idiomDirtyFile.exists()) {
48+
idiomDirtyFile.getParentFile().mkdirs();
49+
AlertUtil.showInfoAlert("第一次使用,需下载成语字典数据,请稍后...");
50+
Request request = new Request.Builder().url("https://xwintop.gitee.io/xjavafxtool/file/IdiomDirty.mv.db").build();
51+
Response response = new OkHttpClient().newCall(request).execute();
52+
if (!response.isSuccessful()) {
53+
TooltipUtil.showToast("下载异常,请重试...");
54+
return;
55+
}
56+
IOUtils.copy(response.body().byteStream(), new FileOutputStream(idiomDirtyFile));
57+
log.info("成语字典数据下载完成!");
58+
TooltipUtil.showToast("成语字典数据下载完成!");
59+
}
60+
if (jdbcTemplate == null) {
61+
DruidDataSource dataSource = new DruidDataSource();
62+
dataSource.setUrl("jdbc:h2:" + ConfigureUtil.getConfigurePath("file/IdiomDirty"));
63+
dataSource.setDriverClassName("org.h2.Driver");
64+
dataSource.setTestWhileIdle(false);
65+
dataSource.init();
66+
jdbcTemplate = new JdbcTemplate(dataSource);
67+
}
68+
} catch (Exception e) {
69+
idiomDirtyFile.delete();
70+
log.error("数据源初始化错误:", e);
71+
}
72+
}
73+
3474
public void selectAction() throws Exception {
3575
if (jdbcTemplate == null) {
36-
DruidDataSource dataSource = new DruidDataSource();
37-
dataSource.setUrl("jdbc:h2:D:\\ideaWorkspaces\\xwintop\\xJavaFxTool\\file\\IdiomDirty");
38-
dataSource.setDriverClassName("org.h2.Driver");
39-
dataSource.init();
40-
jdbcTemplate = new JdbcTemplate(dataSource);
76+
TooltipUtil.showToast("成语词典数据未准备好,请稍后重试...");
4177
}
4278
String sql = "SELECT * FROM Idiom_dirty WHERE word like ?";
4379
String sqlArgs = "";
@@ -79,4 +115,14 @@ public void clearAction() {
79115
idiomDataToolController.getIndex4TextField().setText(null);
80116
idiomDataToolController.getSelectWordTextField().setText(null);
81117
}
118+
119+
public void destroy() {
120+
if (jdbcTemplate != null) {
121+
try {
122+
jdbcTemplate.getDataSource().getConnection().close();
123+
} catch (SQLException e) {
124+
log.error("关闭数据源出错", e);
125+
}
126+
}
127+
}
82128
}

src/main/resources/com/xwintop/xJavaFxTool/fxmlView/assistTools/IdiomDataTool.fxml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
<?import javafx.scene.layout.BorderPane?>
1111
<?import javafx.scene.layout.HBox?>
1212

13-
1413
<AnchorPane prefHeight="550.0" prefWidth="950.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.xwintop.xJavaFxTool.controller.assistTools.IdiomDataToolController">
1514
<children>
1615
<BorderPane layoutX="179.0" layoutY="43.0" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
@@ -36,11 +35,11 @@
3635
<center>
3736
<TableView fx:id="idiomDataTableView" BorderPane.alignment="CENTER">
3837
<columns>
39-
<TableColumn fx:id="wordTableColumn" prefWidth="84.0" text="词目" />
40-
<TableColumn fx:id="pinyinTableColumn" prefWidth="120.0" text="发音" />
41-
<TableColumn fx:id="explanationTableColumn" prefWidth="286.0" text="释义" />
42-
<TableColumn fx:id="derivationTableColumn" prefWidth="217.0" text="出处" />
43-
<TableColumn fx:id="exampleTableColumn" minWidth="0.0" prefWidth="222.0" text="示例" />
38+
<TableColumn fx:id="wordTableColumn" maxWidth="140.0" minWidth="60.0" prefWidth="60.0" text="词目" />
39+
<TableColumn fx:id="pinyinTableColumn" maxWidth="280.0" minWidth="120.0" prefWidth="120.0" text="发音" />
40+
<TableColumn fx:id="explanationTableColumn" prefWidth="300.0" text="释义" />
41+
<TableColumn fx:id="derivationTableColumn" prefWidth="250.0" text="出处" />
42+
<TableColumn fx:id="exampleTableColumn" minWidth="0.0" prefWidth="250.0" text="示例" />
4443
</columns>
4544
<BorderPane.margin>
4645
<Insets top="10.0" />

0 commit comments

Comments
 (0)