рефакторинг сохранения форм. не было единого интерфейса

This commit is contained in:
2024-10-15 23:01:36 +03:00
parent 7d789b22d3
commit 2fa413b1c6
49 changed files with 174 additions and 130 deletions

View File

@@ -12,20 +12,20 @@ public class DBForm extends DBObject {
public int Height = 0;
public DBForm(String type_, Window window) {
type = type_;
Init(window);
Fill(window);
}
public DBForm() {
}
public void Init(Window window) {
X = window.getX();
Y = window.getY();
Width = window.getWidth();
Height = window.getHeight();
}
public void Apply(Window window) {
window.setSize(Width, Height);
window.setLocation(X, Y);
}
public void Fill(Window window) {
X = window.getX();
Y = window.getY();
Width = window.getWidth();
Height = window.getHeight();
}
@Override
public Object getPK() {
return type;

View File

@@ -0,0 +1,27 @@
package Common.Database.Objects.Grid;
import Common.Database.Objects.DBObject;
import com.sun.org.glassfish.gmbal.Description;
import java.util.Arrays;
import java.util.Vector;
import java.util.stream.Collectors;
public class TableVisualData extends DBObject {
@Description("PRIMARY KEY, UNIQUE") //имя таблицы
public String name = null;
//todo запаковать в json (?)
@Description("DEFAULT ''")
public String sizes = ""; //ширины столбцов запакованные через |. вводить объекты ради них нецелесообразно.
public TableVisualData() {
}
public TableVisualData(String name_in) {
name = name_in;
sizes = "";
}
@Override
public Object getPK() {
return name;
}
public Vector<Integer> unpack() {
return Arrays.stream(sizes.split("\\|")).map(Integer::parseInt).collect(Collectors.toCollection(Vector::new));
}
}

View File

@@ -0,0 +1,7 @@
package Common.Database.Objects.Grid;
import Common.Database.Tables.DBTable;
public class TablesVisualDatasDBTable extends DBTable<String, TableVisualData> {
public TablesVisualDatasDBTable() {
super(String.class, TableVisualData.class);
}
}

View File

@@ -0,0 +1,22 @@
package Common.Database.Objects.Splitter;
import Common.CommonConstants;
import Common.Database.Objects.DBObject;
import com.sun.org.glassfish.gmbal.Description;
import javax.swing.*;
public class Splitter extends DBObject {
@Description("PRIMARY KEY, UNIQUE")
public String name = "";
@Description("DEFAULT -1")
public int position = CommonConstants.Nan;
public Splitter() {
}
public Splitter(JSplitPane splitPane) {
name = splitPane.getName();
position = splitPane.getDividerLocation();
}
@Override
public Object getPK() {
return name;
}
}

View File

@@ -0,0 +1,50 @@
package Common.Database.Objects.Splitter;
import Common.Database.Tables.DBTable;
import Common.Utils.Utils_;
import javax.swing.*;
import java.lang.reflect.Field;
import java.util.Vector;
public class SplittersDBTable extends DBTable<String, Splitter> {
public SplittersDBTable() {
super(String.class, Splitter.class);
}
private Vector<JSplitPane> InitSplitters(Object form) throws Exception {
Vector<JSplitPane> res = new Vector<>();
Class c = form.getClass();
for (Field field : c.getFields()) {
if (field.getType().getSimpleName().equals("JSplitPane")) {
JSplitPane splitPane = (JSplitPane) field.get(form);
splitPane.setName(field.getName());
res.add(splitPane);
}
}
return res;
}
public void Load(Object form) {
try {
Vector<JSplitPane> splitters = InitSplitters(form);
for (JSplitPane splitPane : splitters) {
if (Data.containsKey(splitPane.getName())) {
splitPane.setDividerLocation(Data.get(splitPane.getName()).position);
} else {
getDb().Insert(new Splitter(splitPane));
}
}
} catch (Exception ex) {
Utils_.MainLog.PrintException(ex);
}
}
public void Save(Object form) {
try {
Vector<JSplitPane> splitters = InitSplitters(form);
for (JSplitPane splitPane : splitters) {
Splitter splitter = Data.get(splitPane.getName());
splitter.position = splitPane.getDividerLocation();
getDb().Update(splitter);
}
} catch (Exception ex) {
Utils_.MainLog.PrintException(ex);
}
}
}