1
2
3
4
5
6
7
8
9
10
11 package com.jsql.view.swing.tree.model;
12
13 import com.jsql.model.bean.database.Database;
14 import com.jsql.util.LogLevelUtil;
15 import com.jsql.view.swing.tree.custom.JPopupMenuCustomExtract;
16 import com.jsql.view.swing.util.MediatorHelper;
17 import com.jsql.view.swing.util.UiUtil;
18 import org.apache.logging.log4j.LogManager;
19 import org.apache.logging.log4j.Logger;
20
21 import javax.swing.*;
22 import javax.swing.tree.DefaultTreeModel;
23 import javax.swing.tree.TreePath;
24
25
26
27
28 public class NodeModelDatabase extends AbstractNodeModel {
29
30
31
32
33 private static final Logger LOGGER = LogManager.getRootLogger();
34
35
36
37
38
39 public NodeModelDatabase(Database database) {
40 super(database);
41 }
42
43 @Override
44 protected Icon getLeafIcon(boolean leaf) {
45 if (leaf) {
46 return UiUtil.DATABASE_LINEAR.getIcon();
47 } else {
48 return UiUtil.DATABASE_BOLD.getIcon();
49 }
50 }
51
52 @Override
53 public void runAction() {
54 if (this.isRunning()) {
55 return;
56 }
57
58 MediatorHelper.treeDatabase().getTreeNodeModels().get(this.getElementDatabase()).removeAllChildren();
59 DefaultTreeModel treeModel = (DefaultTreeModel) MediatorHelper.treeDatabase().getModel();
60
61 try {
62 treeModel.reload(MediatorHelper.treeDatabase().getTreeNodeModels().get(this.getElementDatabase()));
63 } catch (ArrayIndexOutOfBoundsException e) {
64 LOGGER.log(LogLevelUtil.CONSOLE_JAVA, e, e);
65 }
66
67 new SwingWorker<>() {
68 @Override
69 protected Object doInBackground() throws Exception {
70 Thread.currentThread().setName("SwingWorkerNodeModelDatabase");
71 var selectedDatabase = (Database) NodeModelDatabase.this.getElementDatabase();
72 return MediatorHelper.model().getDataAccess().listTables(selectedDatabase);
73 }
74 }.execute();
75
76 this.setRunning(true);
77 }
78
79 @Override
80 public boolean isPopupDisplayable() {
81 return this.isLoaded() || !this.isLoaded() && this.isRunning();
82 }
83
84 @Override
85 protected void buildMenu(JPopupMenuCustomExtract tablePopupMenu, TreePath path) {
86
87 }
88 }