// //preprocesamos el interfaz ISelectEjecutarUpdate, pbYaNumTransac sirve para comprobar si // despues de actualizar real hay q postprocesar el resultado // private IResultado procesarSincronizar(ISelectEjecutarUpdate poActualizar, BooleanModif // pbYaNumTransac) throws Exception { // IResultado loResult = null; // //si es asignable a un JActualizar preprocesamos // if(poActualizar.getClass().isAssignableFrom(JActualizar.class)){ // pbYaNumTransac.mbValor &= true; // loResult = procesarSincronizar((JActualizar)poActualizar, pbYaNumTransac); // //si es asignable a un JActualizarConj preprocesamos cada una de sus filas // }else if(poActualizar.getClass().isAssignableFrom(JActualizarConj.class)){ // pbYaNumTransac.mbValor &= true; // loResult = procesarSincronizar((JActualizarConj)poActualizar, pbYaNumTransac); // } else { // pbYaNumTransac.mbValor &= false; // } // return loResult; // } // //procesamos el Conj. de actualizaciones // private IResultado procesarSincronizar(JActualizarConj poActualizarConj, BooleanModif // pbYaNumTransac) throws Exception { // IResultado loResult=null; // //si tiene un JListDatos creamos los updates y lo establecemos a nulo // if(poActualizarConj.getListDatos()!=null){ // poActualizarConj.crearUpdateAPartirList(poActualizarConj.getListDatos()); // poActualizarConj.add((JListDatos)null); // } // //para cada SelectUpdate preprocesamos // for(int i = 0 ; i < poActualizarConj.getSize(); i++){ // procesarSincronizar(poActualizarConj.getSelectUpdate(i), pbYaNumTransac); // } // // return loResult; // } // preprocesamos el JActualizar private IResultado procesarSincronizar(JActualizar poActu, BooleanModif pbYaNumTransac) throws Exception { IResultado loResult = null; pbYaNumTransac.mbValor &= true; // si no es una tabla sincronizada if (!isTablaSincronizacion(poActu.getTabla())) { // si es borrar la aƱadimos a borrados if (poActu.getTipoModif() == JListDatos.mclBorrar) { JTEETABLASINCRONIZACIONBORRADOS loBorrados = new JTEETABLASINCRONIZACIONBORRADOS(this); loBorrados.moList.addNew(); loBorrados.getTABLA().setValue(poActu.getTabla()); loBorrados.getNUMEROTRANSACSINCRO().setValue(getNumeroTransacGlobalMasUno()); loBorrados.getREGISTRO().setValue(JXMLSelectMotor.msCamposEnXML(poActu.getFields(), true)); loResult = loBorrados.moList.update(true); } else { // si es edit/add le aƱadimos el campo numerotrasac en el caso de q no lo tenga y // le ponemos el valor del ult.+1 (getNumeroTransacGlobalMasUno) JFieldDef loCampo = poActu.getFields().get(JSincronizar.mcsCampoNumeroTransaccion); if (loCampo == null) { loCampo = new JFieldDef( JListDatos.mclTipoNumero, JSincronizar.mcsCampoNumeroTransaccion, "", false); poActu.getFields().addField(loCampo); } loCampo.setValue(getNumeroTransacGlobalMasUno()); } } return loResult; }
public IResultado moActualizar( String psNombreServlet, JActualizar poActualizar, IServerEjecutar poEjecutar, ISelectEjecutarSelect poEstruc) { IResultado loResult = null; try { // comenzamos la transaccion beginTrans(); // ejecutamos el actualizador if (poActualizar == null) { if (poEjecutar == null) { loResult = ejecutarSQLCompleta(poEstruc, getConec(), moSelect); } else { loResult = poEjecutar.ejecutar(this); } } else { BooleanModif lbYaNumTransac = new BooleanModif(); loResult = procesarSincronizar(poActualizar, lbYaNumTransac); if (loResult == null || loResult.getBien()) { loResult = ejecutarSQLCompleta(getConec(), moSelect, poActualizar); } if (loResult.getBien() && !lbYaNumTransac.booleanValue()) { IListaElementos loLista = loResult.getListDatos(); for (int i = 0; loLista != null && i < loLista.size(); i++) { JListDatos loListAuxConDatos = (JListDatos) loLista.get(i); if (!isTablaSincronizacion(loListAuxConDatos.msTabla)) { JListDatos loList = getTableDefs().get(loListAuxConDatos.msTabla).getListDatos(); if (loListAuxConDatos.moveFirst()) { do { int[] lalTiposCamposPrincipalesMasTransac = new int[loList.getFields().malCamposPrincipales().length + 1]; String[] lasNombresCamposPrincipalesMasTransac = new String[loList.getFields().malCamposPrincipales().length + 1]; int[] lalCamposPrincipales = new int[loList.getFields().malCamposPrincipales().length]; int k = 0; for (int lCampo = 0; lCampo < loList.getFields().size(); lCampo++) { if (loList.getFields(lCampo).getPrincipalSN()) { lalTiposCamposPrincipalesMasTransac[k] = loList.getFields(lCampo).getTipo(); lasNombresCamposPrincipalesMasTransac[k] = loList.getFields(lCampo).getNombre(); lalCamposPrincipales[k] = lCampo; k++; } } lalTiposCamposPrincipalesMasTransac[ lalTiposCamposPrincipalesMasTransac.length - 1] = JListDatos.mclTipoNumero; lasNombresCamposPrincipalesMasTransac[ lalTiposCamposPrincipalesMasTransac.length - 1] = JSincronizar.mcsCampoNumeroTransaccion; JFieldDefs loCampos = new JFieldDefs( lasNombresCamposPrincipalesMasTransac, lalCamposPrincipales, lasNombresCamposPrincipalesMasTransac, lalTiposCamposPrincipalesMasTransac, null); k = 0; for (int lCampo = 0; lCampo < loList.getFields().size(); lCampo++) { if (loList.getFields(lCampo).getPrincipalSN()) { loCampos.get(k).setValue(loListAuxConDatos.moFila().msCampo(lCampo)); k++; } } loCampos .get(lalTiposCamposPrincipalesMasTransac.length - 1) .setValue(getNumeroTransacGlobalMasUno()); JActualizar loActu = new JActualizar( loCampos, loList.msTabla, JListDatos.mclEditar, msUsuario, msPassWord, msPermisos); IResultado loRes = ejecutarSQLCompleta(getConec(), moSelect, loActu); if (!loRes.getBien()) { loResult = new JResultado( "Fallo de actualizacion del campo " + JSincronizar.mcsCampoNumeroTransaccion + "(" + loRes.getMensaje() + ")", false); } } while (loListAuxConDatos.moveNext()); } } } } } } catch (Exception e1) { loResult = new JResultado(new JFilaDatosDefecto(""), "", "En Servidor=" + e1.toString(), false, -1); } finally { if (getConec() != null) { try { // terminamos la trasaccion if (loResult == null) { rollBackTrans(); } else { if (loResult.getBien()) { commitTrans(); } else { rollBackTrans(); } } } catch (Exception e2) { JDepuracion.anadirTexto(this.getClass().getName(), e2); } } } return loResult; }