Boas, estou a criar um sistema de registo de clientes. Neste pedaço de código está um método que serve para alterar a informação do cliente. Como poderia melhorar o codigo (por exemplo diminuir os ifs)?
private static void alterarDB(Cliente clienteNew, Cliente clienteOld, Statement stmt) throws SQLException {
int id1 = clienteNew.getId();
if (!clienteOld.getNome().equalsIgnoreCase(clienteNew.getNome())) {
stmt.executeUpdate("UPDATE CLIENTES SET NOME = '" + clienteNew.getNome() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- NOME=" + clienteNew.getNome());
}
if (!clienteOld.getData_nascimento().equalsIgnoreCase(clienteNew.getData_nascimento())) {
stmt.executeUpdate("UPDATE CLIENTES SET DATA_NASCI = '" + clienteNew.getData_nascimento() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- DATA NASCIMENTO=" + clienteNew.getData_nascimento());
}
if (!clienteOld.getMorada().equalsIgnoreCase(clienteNew.getMorada())) {
stmt.executeUpdate("UPDATE CLIENTES SET MORADA = '" + clienteNew.getMorada() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- MORADA=" + clienteNew.getMorada());
}
if (!clienteOld.getPais().equalsIgnoreCase(clienteNew.getPais())) {
System.out.println("PAIS: " + clienteNew.getPais() + " - " + clienteOld.getPais());
stmt.executeUpdate("UPDATE CLIENTES SET PAIS = '" + clienteNew.getPais() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- PAIS=" + clienteNew.getPais());
}
if (!clienteOld.getNacionalidade().equalsIgnoreCase(clienteNew.getNacionalidade())) {
stmt.executeUpdate("UPDATE CLIENTES SET NACIONALIDADE = '" + clienteNew.getNacionalidade() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- NACIONALIDADE=" + clienteNew.getNacionalidade());
}
if (clienteOld.getBI() - clienteNew.getBI() != 0) {
stmt.executeUpdate("UPDATE CLIENTES SET BI = '" + clienteNew.getBI() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- BI=" + clienteNew.getBI());
}
if (!clienteOld.getTipoIndentificaçao().equalsIgnoreCase(clienteNew.getTipoIndentificaçao())) {
stmt.executeUpdate("UPDATE CLIENTES SET TIPO_IDENT = '" + clienteNew.getTipoIndentificaçao() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- TIPO IDENTIFICAÇAO=" + clienteNew.getTipoIndentificaçao());
}
if (!clienteOld.getApartamentos().get(0).equalsIgnoreCase(clienteNew.getApartamentos().get(0))) {
System.out.println(clienteNew.getApartamentos() + " - " + clienteOld.getApartamentos());
List<String> c = new ArrayList<>(clienteNew.getApartamentos());
c.removeAll(clienteOld.getApartamentos());
String apartamentoString = "";
for (String apartamento : c) {
apartamentoString = apartamento;
}
stmt.executeUpdate("UPDATE CLIENTES SET APART = '" + apartamentoString + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- TIPO APARTAMENTOS=" + apartamentoString);
}
if (!clienteOld.getApartamentos().get(0).equalsIgnoreCase(clienteNew.getApartamentos().get(0))) {
List<String> c = new ArrayList<>(clienteNew.getEstadias());
//c.remove(clienteOld.getEstadias().get(clienteOld.getEstadias().size()-1));
c.removeAll(clienteOld.getEstadias());
String estadiaString = "";
for (String estadia : c) {
estadiaString = estadia;
}
stmt.executeUpdate("UPDATE CLIENTES SET ESTADIA = '" + estadiaString + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada -- ESTADIAS=" + estadiaString);
}
if (!clienteOld.getEntrada().equalsIgnoreCase(clienteNew.getEntrada())) {
stmt.executeUpdate("UPDATE CLIENTES SET ENTRADA = '" + clienteNew.getEntrada() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada - ENTRADA=" + clienteNew.getEntrada());
}
if (!clienteOld.getSaida().equalsIgnoreCase(clienteNew.getSaida())) {
stmt.executeUpdate("UPDATE CLIENTES SET SAIDA = '" + clienteNew.getSaida() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada - SAIDA=" + clienteNew.getSaida());
}
if (clienteOld.getTelemovel() - clienteNew.getTelemovel() != 0) {
stmt.executeUpdate("UPDATE CLIENTES SET TELEMOVEL = '" + clienteNew.getTelemovel() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada - TELEMOVEL=" + clienteNew.getTelemovel());
}
if (!clienteOld.getAgencia().equalsIgnoreCase(clienteNew.getAgencia())) {
stmt.executeUpdate("UPDATE CLIENTES SET AGENCIA = '" + clienteNew.getAgencia() + "' WHERE ID = " + id1 + ";");
criarLog("Ficha do cliente: " + clienteOld.getNome() + " foi atualizada - AGENCIA=" + clienteNew.getAgencia());
}
}