if(listener != null) {
fireGuardandoExperimento(experimento, listener);
}
LogicExperimento expGuardar = experimento.clone();
Connection con = null;
PreparedStatement psExp = null;
PreparedStatement psPob = null;
PreparedStatement psTab = null;
PreparedStatement psCom = null;
try {
con = DriverManager.getConnection(DBURL);
con.setAutoCommit(false);
borrarExperimento(expGuardar, con);
psExp = con.prepareStatement("INSERT INTO " + SCHEMA + ".EXPERIMENTO"
+ " (NOMBREEXPERIMENTO, TIPOBACTERIA, NOMBREINVESTIGADOR,"
+ " PROYECTOINVESTIGACION, NUMDIASEXPERIMENTO, "
+ " LIMITEALIMENTACIONMAXIMA, UNIDADESMEDIDA) VALUES"
+ " (?, ?, ?, ?, ?, ?, ?)");
psExp.setString(1, expGuardar.getNombreExperimento());
psExp.setString(2, expGuardar.getTipoBacteria());
psExp.setString(3, expGuardar.getNombreInvestigador());
psExp.setString(4, expGuardar.getProyectoInvestigacion());
psExp.setInt(5, expGuardar.getNumDiasExperimento());
psExp.setInt(6, expGuardar.getLimiteAlimentacionMaxima());
psExp.setString(7, expGuardar.getUnidadesMedida());
psExp.addBatch();
psPob = con.prepareStatement("INSERT INTO " + SCHEMA + ".POBLACION("
+ "NOMBREEXPERIMENTO, NOMBREPOBLACION, FECHA,"
+ " TAMANIOPOBLACION, TEMPERATURA, NUMDIAS,"
+ " ESCALATEMPERATURA, SINCRONIZARCOMIDA, ALIMENTACIONINI,"
+ " DIAMAXIMA, ALIMENTACIONMAX, ALIMENTACIONFIN) "
+ "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
psTab = con.prepareStatement("INSERT INTO " + SCHEMA + ".DATOSTABLA("
+ "NOMBREEXPERIMENTO, NOMBREPOBLACION, NUMDIA, "
+ "POBLACION, BACTERIASMUERTAS, TEMPERATURA, COMIDADIA) "
+ "VALUES(?, ?, ?, ?, ?, ?, ?)");
psCom = con.prepareStatement("INSERT INTO " + SCHEMA + ".COMENTARIOS("
+ "NOMBREEXPERIMENTO, NOMBREPOBLACION, FECHACOMENTARIO,"
+ " COMENTARIO) VALUES(?, ?, ?, ?)");
//Guardamos las poblaciones
for(LogicPoblacion p : expGuardar.getPoblaciones()) {
JGraficaComidaModel m = p.getModeloGraficaComida();
ModeloPoblacionTabla mT = p.getModeloPoblacionTabla();
ModeloComentarios mC = p.getModeloComentarios();
psPob.setString(1, expGuardar.getNombreExperimento());
psPob.setString(2, p.getNombrePoblacion());
psPob.setString(3, p.getFecha());
psPob.setInt(4, p.getTamanioPoblacion());
psPob.setInt(5, p.getTemperatura());
psPob.setInt(6, p.getNumDias());
psPob.setString(7, p.getEscalaTemperatura());
psPob.setBoolean(8, p.isSincronizarComida());
psPob.setInt(9, m.getAlimentoInicial());
psPob.setInt(10, m.getDiaMax());
psPob.setInt(11, m.getAlimentoMax());
psPob.setInt(12, m.getAlimentoFinal());
psPob.addBatch();
for(int i=0; i<mT.getRowCount(); i++) {
psTab.setString(1, expGuardar.getNombreExperimento());
psTab.setString(2, p.getNombrePoblacion());
psTab.setInt(3, Integer.parseInt(
mT.getValueAt(i, 0).toString()));
if(mT.getValueAt(i, 1).toString().isEmpty()) {
psTab.setInt(4, 0);
} else {
psTab.setInt(4, Integer.parseInt(
mT.getValueAt(i, 1).toString()));
}
if(mT.getValueAt(i, 2).toString().isEmpty()) {
psTab.setInt(5, 0);
} else {
psTab.setInt(5, Integer.parseInt(
mT.getValueAt(i, 2).toString()));
}
if(mT.getValueAt(i, 3).toString().isEmpty()) {
psTab.setInt(6, 0);
} else {
psTab.setInt(6, Integer.parseInt(
mT.getValueAt(i, 3).toString()));
}
if(mT.getValueAt(i, 4).toString().isEmpty()) {
psTab.setInt(7, 0);
} else {
psTab.setInt(7, Integer.parseInt(
mT.getValueAt(i, 4).toString()));
}
psTab.addBatch();
}
for(Comentario c : mC.getComentarios()) {
psCom.setString(1, expGuardar.getNombreExperimento());
psCom.setString(2, p.getNombrePoblacion());
psCom.setString(3, c.getFecha());
psCom.setString(4, c.getTexto());
psCom.addBatch();