1
2
3
4
5
6
7
8
9
10
11 package com.jsql.view.swing.manager;
12
13 import com.jsql.util.LogLevelUtil;
14 import com.jsql.view.swing.list.ItemList;
15 import com.jsql.view.swing.manager.util.StateButton;
16 import com.jsql.view.swing.util.I18nViewUtil;
17 import com.jsql.view.swing.util.MediatorHelper;
18 import org.apache.logging.log4j.LogManager;
19 import org.apache.logging.log4j.Logger;
20
21 import javax.swing.*;
22 import java.awt.*;
23 import java.awt.event.ActionEvent;
24 import java.awt.event.ActionListener;
25 import java.util.Arrays;
26 import java.util.List;
27
28
29
30
31 public class ManagerFile extends AbstractManagerList {
32
33 private static final Logger LOGGER = LogManager.getRootLogger();
34
35
36
37
38 public ManagerFile() {
39 super("swing/list/file.txt");
40 this.buildRunButton("FILE_RUN_BUTTON_LABEL", "FILE_RUN_BUTTON_TOOLTIP");
41 this.run.setEnabled(false);
42 this.run.addActionListener(new ActionFile());
43 this.buildPrivilege();
44 this.add(this.lastLine, BorderLayout.SOUTH);
45 }
46
47 private class ActionFile implements ActionListener {
48 @Override
49 public void actionPerformed(ActionEvent e) {
50 if (ManagerFile.this.listPaths.getSelectedValuesList().isEmpty()) {
51 LOGGER.log(LogLevelUtil.CONSOLE_ERROR, "Select in the list at least one file to read");
52 return;
53 }
54 if (!Arrays.asList(
55 MediatorHelper.model().getMediatorEngine().getSqlite(),
56 MediatorHelper.model().getMediatorEngine().getDerby(),
57 MediatorHelper.model().getMediatorEngine().getH2(),
58 MediatorHelper.model().getMediatorEngine().getHsqldb(),
59 MediatorHelper.model().getMediatorEngine().getMysql(),
60 MediatorHelper.model().getMediatorEngine().getPostgres()
61 ).contains(MediatorHelper.model().getMediatorEngine().getEngine())) {
62 LOGGER.log(
63 LogLevelUtil.CONSOLE_ERROR,
64 "Read file not implemented for [{}], share a working example on GitHub to speed up release",
65 MediatorHelper.model().getMediatorEngine().getEngine()
66 );
67 return;
68 }
69 new SwingWorker<>() {
70 @Override
71 protected Object doInBackground() {
72 Thread.currentThread().setName("SwingWorkerManagerFile");
73 if (ManagerFile.this.run.getState() == StateButton.STARTABLE) {
74 ManagerFile.this.run.setText(I18nViewUtil.valueByKey("FILE_RUN_BUTTON_STOP"));
75 ManagerFile.this.run.setState(StateButton.STOPPABLE);
76 ManagerFile.this.horizontalGlue.setVisible(false);
77 ManagerFile.this.progressBar.setVisible(true);
78 try {
79 List<String> filePaths = ManagerFile.this.listPaths.getSelectedValuesList().stream().map(ItemList::toString).toList();
80 MediatorHelper.model().getResourceAccess().readFile(filePaths);
81 } catch (InterruptedException e) {
82 LOGGER.log(LogLevelUtil.IGNORE, e, e);
83 Thread.currentThread().interrupt();
84 } catch (Exception e) {
85 LOGGER.log(LogLevelUtil.CONSOLE_ERROR, e, e);
86 }
87 ManagerFile.this.endProcess();
88 } else {
89 MediatorHelper.model().getResourceAccess().stopSearchFile();
90 ManagerFile.this.run.setEnabled(false);
91 ManagerFile.this.run.setState(StateButton.STOPPING);
92 }
93 return null;
94 }
95 }.execute();
96 }
97 }
98 }