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 private static final Logger LOGGER = LogManager.getRootLogger();
31
32
33
34
35
36 public NodeModelDatabase(Database database) {
37 super(database);
38 }
39
40 @Override
41 protected Icon getLeafIcon(boolean leaf) {
42 if (leaf) {
43 return UiUtil.DATABASE_LINEAR.getIcon();
44 } else {
45 return UiUtil.DATABASE_BOLD.getIcon();
46 }
47 }
48
49 @Override
50 public void runAction() {
51 if (this.isRunning()) {
52 return;
53 }
54
55 MediatorHelper.treeDatabase().getTreeNodeModels().get(this.getElementDatabase()).removeAllChildren();
56 DefaultTreeModel treeModel = (DefaultTreeModel) MediatorHelper.treeDatabase().getModel();
57
58 try {
59 treeModel.reload(MediatorHelper.treeDatabase().getTreeNodeModels().get(this.getElementDatabase()));
60 } catch (ArrayIndexOutOfBoundsException e) {
61 LOGGER.log(LogLevelUtil.CONSOLE_JAVA, e, e);
62 }
63
64 new SwingWorker<>() {
65 @Override
66 protected Object doInBackground() throws Exception {
67 Thread.currentThread().setName("SwingWorkerNodeModelDatabase");
68 var selectedDatabase = (Database) NodeModelDatabase.this.getElementDatabase();
69 return MediatorHelper.model().getDataAccess().listTables(selectedDatabase);
70 }
71 }.execute();
72
73 this.setRunning(true);
74 }
75
76 @Override
77 public boolean isPopupDisplayable() {
78 return this.isLoaded() || !this.isLoaded() && this.isRunning();
79 }
80
81 @Override
82 protected void buildMenu(JPopupMenuCustomExtract tablePopupMenu, TreePath path) {
83
84 }
85 }