-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInputTableName.java
More file actions
132 lines (114 loc) · 4.63 KB
/
InputTableName.java
File metadata and controls
132 lines (114 loc) · 4.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.geometry.*;
import java.lang.*;
import javafx.scene.control.Button;
import javafx.event.*;
import java.util.*;
class InputTableName {
public static void display(String title) {
Stage window = new Stage();
window.initModality(Modality.APPLICATION_MODAL);
window.setTitle(title);
window.setMinWidth(250);
// Get Table's name
Label name = new Label("Table Name:");
TextField inputName = new TextField ();
HBox hbName = new HBox(10);
hbName.getChildren().addAll(name, inputName);
// Get Table's header
Label header = new Label("Table Header:" + "\n" +
"(Use , to seperate columns)");
TextField inputHeader = new TextField ();
VBox vbHeader = new VBox(10);
vbHeader.getChildren().addAll(header, inputHeader);
Label key = new Label("Key Columns:");
TextField inputKey = new TextField();
VBox vbKey = new VBox(10);
vbKey.getChildren().addAll(key, inputKey);
// Get columns' types of the table
Label type = new Label("Table type:" + "\n" +
"(Use , to seperate columns)");
TextField inputType = new TextField ();
Label details = new Label("Types include number, text, date and currency.");
VBox vbType = new VBox(10);
vbType.getChildren().addAll(type, inputType, details);
Button confirm = new Button("Confirm");
Button cancel = new Button("Cancel");
confirm.setOnAction(e -> {
String tableName = inputName.getText();
String getHeader = inputHeader.getText();
String getKey = inputKey.getText();
String getType = inputType.getText();
String[] tableHeader = getHeader.split(",");
String[] tableKey = getKey.split(",");
String[] tableType = getType.split(",");
if (tableHeader.length != tableType.length)
AlertBox.display("Error","Type in "+tableHeader.length+" types");
else if (!checkKey(tableKey, tableHeader))
AlertBox.display("Error","Key(s)' name(s) should be exactly the same with columns.");
else if (!checkType(tableType))
AlertBox.display("Error","Types include number, text, date and currency.");
else if (!tableName.trim().isEmpty() && !getHeader.trim().isEmpty() &&
!getType.trim().isEmpty() ){
Table newTable = new Table(tableName);
newTable.setHeader(tableHeader);
newTable.setType(tableType);
newTable.setKey(getKeyNumber(tableKey, tableHeader));
File createFile = new File(newTable);
if (!createFile.writeToFile()) {
AlertBox.display("Alert","Save Table Failed!");
};
}
else {
AlertBox.display("Alert", "Please type in the empty boxes.");
}
window.close();
});
cancel.setOnAction(e -> {
window.close();
});
HBox buttons = new HBox(10);
buttons.getChildren().addAll(confirm, cancel);
buttons.setAlignment(Pos.CENTER);
VBox layout = new VBox(10);
layout.getChildren().addAll(hbName, vbHeader, vbKey, vbType, buttons);
layout.setAlignment(Pos.CENTER);
layout.setPadding(new Insets(20,20,20,20));
layout.setMargin(vbHeader, new Insets(20,0,10,0));
layout.setMargin(vbType, new Insets(10,0,20,0));
Scene scene = new Scene(layout);
window.setScene(scene);
window.showAndWait();
}
static boolean checkType(String... type) {
for (String str : type) {
System.out.println(str);
if (!str.equals("number") && !str.equals("text")
&& !str.equals("date") && !str.equals("currency"))
return false;
}
return true;
}
static int[] getKeyNumber(String[] keys, String... header) {
int[] number = new int[keys.length];
int j = 0;
for (String str : keys) {
for (int i = 0; i < header.length; i++) {
if (str.equals(header[i])) {
number[j] = i;
j++;
}
}
}
return number;
}
static boolean checkKey(String[] keys, String... header) {
for (String str : keys) {
if (!Arrays.asList(header).contains(str)) return false;
}
return true;
}
}