/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package model.database;
import model.object.Terminal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import resource.log.ProjectLogger;
/**
*
* @author Yoldark34 <yoldark@gmail.com>
*/
public class TerminalMapper extends AbstractMapper {
/**
* get all terminal from the database
*
* @return
* @throws SQLException
* @throws ClassNotFoundException
*/
public ArrayList<Terminal> getAllTerminals() throws SQLException, ClassNotFoundException {
DbConnection adapter = DbConnection.getDbConnection();
adapter.executeSelectQuery("Select * from " + DataBaseElements.TERMINAL);
return (ArrayList<Terminal>) adapter.getModelsFromRequest(this);
}
/**
* Insert terminal if id == -1 or update terminal instead
*
* @param terminal
* @return int number of rows
*/
public int save(Terminal terminal) {
int nbRows = 0;
int idResult = -1;
String query;
if (terminal.getId() != -1) {
query = "UPDATE `" + DataBaseElements.TERMINAL + "` SET ";
//query += "`"+DataBaseElements.TERMINAL_ID+"` = '"+terminal.getId()+"',";Can't be updated because used in where
query += "`" + DataBaseElements.TERMINAL_IDSTOCK + "` = '" + terminal.getIdStock() + "',";
query += "`" + DataBaseElements.TERMINAL_IP + "` = '" + terminal.getIp() + "' ";
query += "WHERE `" + DataBaseElements.TERMINAL_ID + "` = '" + terminal.getId() + "';";
try {
DbConnection adapter = DbConnection.getDbConnection();
nbRows = adapter.executeUpdateQuery(query);
} catch (Exception e) {
}
return nbRows;
} else {
query = "INSERT INTO " + DataBaseElements.TERMINAL + " (";
//query += "`" + DataBaseElements.TERMINAL_ID + "`,";
query += "`" + DataBaseElements.TERMINAL_IDSTOCK + "`,";
query += "`" + DataBaseElements.TERMINAL_IP + "` ";
query += ") VALUES (";
//query += "'" + terminal.getId() + "',";
query += "'" + terminal.getIdStock() + "',";
query += "'" + terminal.getIp() + "' ";
query += ")";
try {
DbConnection adapter = DbConnection.getDbConnection();
idResult = adapter.executeInsertQuery(query);
} catch (Exception e) {
}
return idResult;
}
}
@Override
public Object populateModel(ResultSet row) throws SQLException {
Terminal obj = new Terminal();
if (this.hasColumn(DataBaseElements.TERMINAL_ID, row)) {
obj.setId(row.getInt(DataBaseElements.TERMINAL_ID));
}
if (this.hasColumn(DataBaseElements.TERMINAL_IDSTOCK, row)) {
obj.setIdStock(row.getInt(DataBaseElements.TERMINAL_IDSTOCK));
}
if (this.hasColumn(DataBaseElements.TERMINAL_IP, row)) {
obj.setIp(row.getString(DataBaseElements.TERMINAL_IP));
}
return obj;
}
@Override
Object getEmptyModel() {
return new Terminal();
}
/**
* get terminal from id
*
* @param numero
* @return Terminal
*/
public Terminal getTerminal(int numero) {
DbConnection adapter = DbConnection.getDbConnection();
Terminal myTerminal = null;
adapter.executeSelectQuery("Select * from " + DataBaseElements.TERMINAL + " WHERE " + DataBaseElements.TERMINAL_ID + " = " + numero);
try {
myTerminal = (Terminal) adapter.getModelFromRequest(this);
} catch (SQLException | ClassNotFoundException ex) {
ProjectLogger.log(this, Level.SEVERE, "Erreur d'exécution de la requête de la fonction getTerminal", ex);
}
return myTerminal;
}
}