diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/ProjectTree.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/ProjectTree.java new file mode 100644 index 0000000..384695f --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/ProjectTree.java @@ -0,0 +1,30 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +import lombok.Getter; + +import javax.swing.tree.DefaultMutableTreeNode; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Getter +public class ProjectTree { + private final UUID project; + private final List databases = new ArrayList<>(); + + public ProjectTree(UUID project) { + this.project = project; + } + + public void addDatabase(TDatabase db) { + databases.add(db); + } + + public DefaultMutableTreeNode render() { + DefaultMutableTreeNode root = new DefaultMutableTreeNode("Project"); + for (TDatabase db : databases) { + root.add(db.createTreeObject().getNode()); + } + return root; + } +} \ No newline at end of file diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TColumn.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TColumn.java new file mode 100644 index 0000000..ab397f3 --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TColumn.java @@ -0,0 +1,15 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + + +public class TColumn { + private String name; + private TDataType dataType; + private boolean notNull; + private Object defaultValue; + private boolean primaryKey; + private boolean unique; + //TODO: CHECK + private boolean autoIncrement; + private boolean unsigned; + private String comment; +} diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TDataType.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TDataType.java new file mode 100644 index 0000000..c1ea2ef --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TDataType.java @@ -0,0 +1,5 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +public class TDataType { + +} diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TDatabase.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TDatabase.java new file mode 100644 index 0000000..d97b104 --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TDatabase.java @@ -0,0 +1,40 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Getter @Setter +public class TDatabase extends TreeBase implements TreeCallback { + private boolean offline; + + private final List tables = new ArrayList<>(); + private final List views = new ArrayList<>(); + + public TDatabase(UUID uniqueID, String name, boolean offline) { + super(uniqueID, name); + this.offline = offline; + } + public TDatabase (String name) { + super(UUID.randomUUID(), name); + offline = false; + } + + @Override + public TreeObject createTreeObject() { + return new TreeObject(TreeObject.Type.DATABASE, getUniqueID(), getName()) { + @Override + public String icon() { + return (offline ? "/icons/editor/database-offline.png" : "/icons/editor/database.png"); + } + }; + } + + @Override + public TDatabase call() { + return this; + } +} \ No newline at end of file diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TTable.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TTable.java new file mode 100644 index 0000000..c47f1ab --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TTable.java @@ -0,0 +1,24 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Getter @Setter +public class TTable { + private final UUID uniqueID; + private final String database; + private String name; + + private final List columns = new ArrayList<>(); + private final List relations = new ArrayList<>(); + + public TTable(UUID uniqueID, String database, String name) { + this.uniqueID = uniqueID; + this.database = database; + this.name = name; + } +} \ No newline at end of file diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TView.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TView.java new file mode 100644 index 0000000..a10c09a --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TView.java @@ -0,0 +1,4 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +public class TView { +} diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TableRelation.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TableRelation.java new file mode 100644 index 0000000..f5c9a53 --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TableRelation.java @@ -0,0 +1,5 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +import java.util.UUID; + +public record TableRelation(String name, UUID table1, UUID table2, String table1Column, String table2Column) {} \ No newline at end of file diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeBase.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeBase.java new file mode 100644 index 0000000..c2d4459 --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeBase.java @@ -0,0 +1,19 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +import lombok.Getter; +import lombok.Setter; + +import java.util.UUID; + +@Getter @Setter +public abstract class TreeBase { + private final UUID uniqueID; + private String name; + + public TreeBase(UUID uniqueID, String name) { + this.uniqueID = uniqueID; + this.name = name; + } + + public abstract TreeObject createTreeObject(); +} diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeCallback.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeCallback.java new file mode 100644 index 0000000..cdbd418 --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeCallback.java @@ -0,0 +1,5 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +public interface TreeCallback { + T call(); +} diff --git a/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeObject.java b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeObject.java new file mode 100644 index 0000000..d058117 --- /dev/null +++ b/dbx/src/main/java/de/julianweinelt/databench/dbx/api/ui/tree/TreeObject.java @@ -0,0 +1,40 @@ +package de.julianweinelt.databench.dbx.api.ui.tree; + +import lombok.Getter; +import lombok.Setter; + +import javax.swing.tree.DefaultMutableTreeNode; +import java.util.UUID; + +@Getter @Setter +public abstract class TreeObject { + private final UUID uniqueID; + private final Type type; + private String name; + + public abstract String icon(); + + public DefaultMutableTreeNode getNode() { + return new DefaultMutableTreeNode(this); + } + + public TreeObject(Type type, UUID uniqueID, String name) { + this.uniqueID = uniqueID; + this.type = type; + this.name = name; + } + + public enum Type { + PROJECT, + DATABASE, + FOLDER_TABLES, + FOLDER_VIEWS, + FOLDER_PROCEDURES, + FOLDER_FUNCTIONS, + TABLE, + VIEW, + PROCEDURE, + FUNCTION, + JOB // SQL Server only + } +}