-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDAOconfig.java
More file actions
198 lines (168 loc) · 7.51 KB
/
Copy pathDAOconfig.java
File metadata and controls
198 lines (168 loc) · 7.51 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
package eathubDL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DAOconfig {
public static final String USERNAME = "me";
public static final String PASSWORD = "Mypass12345678!";
private static final String DATABASE = "EatHub";
//private static final String DRIVER = "jdbc:mariadb"; // Usar para MariaDB
private static final String DRIVER = "jdbc:mysql"; // Usar para MySQL
public static final String URL = DRIVER+"://localhost:3306/"+DATABASE;
public static void CreateBD(){
String[] sqlCreates = {
"CREATE TABLE IF NOT EXISTS Pedido (" +
"idPedido VARCHAR(50) PRIMARY KEY," +
"tipoServico VARCHAR(50)," +
"tempoEspera INT," + ///Talvez mudar para DECIMAL(10,2)
"nContribuinte INT," +
"notas TEXT" +
")",
"CREATE TABLE IF NOT EXISTS Menu (" +
"idM VARCHAR(50) PRIMARY KEY," +
"precoTotal DECIMAL(10,2)," +
"nome VARCHAR(100)" +
")",
"CREATE TABLE IF NOT EXISTS MenuPedido (" +
"idM_FK VARCHAR(50)," +
"idPedido_FK VARCHAR(50)," +
"quantidade INT," +
"PRIMARY KEY (idM_FK, idPedido_FK)," +
"FOREIGN KEY (idM_FK) REFERENCES Menu(idM)," +
"FOREIGN KEY (idPedido_FK) REFERENCES Pedido(idPedido)" +
")",
"CREATE TABLE IF NOT EXISTS Proposta (" +
"idProposta VARCHAR(50) PRIMARY KEY," +
"nome VARCHAR(100)," +
"preco DECIMAL(10,2)" +
")",
"CREATE TABLE IF NOT EXISTS PropostaMenu (" +
"idProposta_FK VARCHAR(50)," +
"idM_FK VARCHAR(50)," +
"PRIMARY KEY (idProposta_FK, idM_FK)," +
"FOREIGN KEY (idProposta_FK) REFERENCES Proposta(idProposta)," +
"FOREIGN KEY (idM_FK) REFERENCES Menu(idM)" +
")",
"CREATE TABLE IF NOT EXISTS PropostaPedido (" +
"idProposta_FK VARCHAR(50)," +
"idPedido_FK VARCHAR(50)," +
"quantidade INT," +
"PRIMARY KEY (idProposta_FK, idPedido_FK)," +
"FOREIGN KEY (idProposta_FK) REFERENCES Proposta(idProposta)," +
"FOREIGN KEY (idPedido_FK) REFERENCES Pedido(idPedido)" +
")",
"CREATE TABLE IF NOT EXISTS Ingrediente (" +
"nome VARCHAR(100) PRIMARY KEY" +
")",
"CREATE TABLE IF NOT EXISTS IngredienteProposta (" +
"nomeIngrediente_FK VARCHAR(100)," +
"idProposta_FK VARCHAR(50)," +
"PRIMARY KEY (nomeIngrediente_FK, idProposta_FK)," +
"FOREIGN KEY (nomeIngrediente_FK) REFERENCES Ingrediente(nome)," +
"FOREIGN KEY (idProposta_FK) REFERENCES Proposta(idProposta)" +
")",
"CREATE TABLE IF NOT EXISTS Alergenio (" +
"alergenio VARCHAR(100) PRIMARY KEY" +
")",
"CREATE TABLE IF NOT EXISTS AlergenioIngrediente (" +
"alergenio_FK VARCHAR(100)," +
"nomeIngrediente_FK VARCHAR(100)," +
"PRIMARY KEY (nomeIngrediente_FK, alergenio_FK)," +
"FOREIGN KEY (alergenio_FK) REFERENCES Alergenio(alergenio)," +
"FOREIGN KEY (nomeIngrediente_FK) REFERENCES Ingrediente(nome)" +
")",
"CREATE TABLE IF NOT EXISTS Pagamento (" +
"idPagamento VARCHAR(50) PRIMARY KEY," +
"valor DECIMAL(10,2)," +
"idPedido VARCHAR(50)," +
"metodoPagamento VARCHAR(50)" +
")",
"CREATE TABLE IF NOT EXISTS Fatura (" +
"idFatura VARCHAR(50) PRIMARY KEY," +
"idPagamento_FK VARCHAR(50)," +
"valor DECIMAL(10,2)," +
"contribuinte INT," +
"idPedido_FK VARCHAR(50)," +
"FOREIGN KEY (idPedido_FK) REFERENCES Pedido(idPedido)," +
"FOREIGN KEY (idPagamento_FK) REFERENCES Pagamento(idPagamento)" +
")",
"CREATE TABLE IF NOT EXISTS Talao (" +
"idTalao VARCHAR(50) PRIMARY KEY," +
"idPedido_FK VARCHAR(50)," +
"FOREIGN KEY (idPedido_FK) REFERENCES Pedido(idPedido)" +
")",
"CREATE TABLE IF NOT EXISTS Restaurante (" +
"idRestaurante VARCHAR(50) PRIMARY KEY," +
"nome VARCHAR(100)," +
"idFuncionario_FK VARCHAR(50)" + // Sem FK inicialmente
")",
"CREATE TABLE IF NOT EXISTS Funcionario (" +
"idFuncionario VARCHAR(50) PRIMARY KEY," +
"nome VARCHAR(100)," +
"posto VARCHAR(50)," +
"tarefa VARCHAR(50)," +
"idRestaurante_FK VARCHAR(50)," +
"tipo VARCHAR(50)," +
"FOREIGN KEY (idRestaurante_FK) REFERENCES Restaurante(idRestaurante)" +
")",
"CREATE TABLE IF NOT EXISTS Stock (" +
"nomeIngrediente_FK VARCHAR(100)," +
"idRestaurante_FK VARCHAR(50)," +
"quantidade INT," +
"PRIMARY KEY (nomeIngrediente_FK, idRestaurante_FK)," +
"FOREIGN KEY (nomeIngrediente_FK) REFERENCES Ingrediente(nome)," +
"FOREIGN KEY (idRestaurante_FK) REFERENCES Restaurante(idRestaurante)" +
")",
"CREATE TABLE IF NOT EXISTS MensagemGestor (" +
"idMensagem INT AUTO_INCREMENT," +
"conteudo TEXT," +
"dataEnvio DATETIME," +
"idFuncionario_FK VARCHAR(50)," +
"FOREIGN KEY (idFuncionario_FK) REFERENCES Funcionario(idFuncionario)," +
"PRIMARY KEY (idMensagem)" +
")",
"CREATE TABLE IF NOT EXISTS EtapasProposta (" +
"etapa VARCHAR(255)," +
"idProposta_FK VARCHAR(50)," +
"ordem INT," +
"PRIMARY KEY (idProposta_FK, ordem)," +
"FOREIGN KEY (idProposta_FK) REFERENCES Proposta(idProposta)" +
")",
"CREATE TABLE IF NOT EXISTS Historico (" +
"idHistorico VARCHAR(50)," +
"idPedido_FK VARCHAR(50)," +
"idRestaurante_FK VARCHAR(50)," +
"dataFinalizacao DATETIME," +
"PRIMARY KEY (idHistorico)," +
"FOREIGN KEY (idPedido_FK) REFERENCES Pedido(idPedido)," +
"FOREIGN KEY (idRestaurante_FK) REFERENCES Restaurante(idRestaurante)" +
")",
"CREATE TABLE IF NOT EXISTS Password (" +
"idFuncionario_FK VARCHAR(50) PRIMARY KEY," +
"codigo VARCHAR(255)," +
"FOREIGN KEY (idFuncionario_FK) REFERENCES Funcionario(idFuncionario)" +
")"
};
try (Connection conn = DriverManager.getConnection(DAOconfig.URL, DAOconfig.USERNAME, DAOconfig.PASSWORD);
Statement stm = conn.createStatement()) {
for (String sql : sqlCreates) {
stm.executeUpdate(sql);
}
} catch (SQLException e) {
// Erro a criar tabela...
e.printStackTrace();
throw new NullPointerException(e.getMessage());
}
// Adicionar a FK depois de ambas as tabelas existirem, apenas se não existir
try (Connection conn = DriverManager.getConnection(DAOconfig.URL, DAOconfig.USERNAME, DAOconfig.PASSWORD);
Statement stm = conn.createStatement()) {
stm.executeUpdate(
"ALTER TABLE Restaurante ADD CONSTRAINT fk_restaurante_chefe " +
"FOREIGN KEY (idFuncionario_FK) REFERENCES Funcionario(idFuncionario)"
);
} catch (SQLException e) {
// Constraint já existe, ignorar
}
}
}