22
33import com .alibaba .druid .pool .DruidDataSource ;
44import 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 ;
58import lombok .Getter ;
69import lombok .Setter ;
710import lombok .extern .slf4j .Slf4j ;
11+ import okhttp3 .OkHttpClient ;
12+ import okhttp3 .Request ;
13+ import okhttp3 .Response ;
14+ import org .apache .commons .io .IOUtils ;
815import org .apache .commons .lang3 .StringUtils ;
916import org .springframework .jdbc .core .JdbcTemplate ;
1017
18+ import java .io .File ;
19+ import java .io .FileOutputStream ;
20+ import java .sql .SQLException ;
1121import java .util .HashMap ;
1222import java .util .List ;
1323import 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}
0 commit comments