Wednesday, September 27, 2006

Solucionar el problema conflictos al sincronizar: 1 SyncResolver.UPDATE_ROW_CONFLICT

Cuando deseamos actualizar algunos campos de una tabla y no todos, a veces nos encontramos con el mensaje de error:
  • No se pueden guardar los cambios -- java.lang.RuntimeException: Número de conflictos al sincronizar: 1 SyncResolver.UPDATE_ROW_CONFLICT fila 4 intento de actualizar una fila que otro usuario ha actualizado o eliminado
Una forma sencilla de evitarlo es definir en el select del metodo _init() solo aquellos campos de la tabla que vamos a actualizar. Supomenos que solo deseamos actualizar los campos foto1 a foto8 y el idhabitacion lo hariamos de esta manera y eliminamos los demas campos del select.

private void _init() throws Exception {
habitacionesRowSet.setDataSourceName("java:comp/env/jdbc/hoteles");
habitacionesRowSet.setCommand("SELECT idhabitacion,foto1,foto2,foto3,foto4,foto5,foto6,foto7,foto8 FROM habitaciones");
habitacionesRowSet.setTableName("habitaciones");
habitacionesDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet)getValue("#{habitacionesAgregarFotos.habitacionesRowSet}"));
}


El metodo init quedaria asi:
public void init() {
// Realizar iniciaciones heredadas de la superclase
super.init();
// Realizar inicio de aplicación que debe finalizar
// *antes* de que se inicien los componentes administrados
// TODO - Agregar código de inicio propio aquí

//
// Iniciar componentes administrados automáticamente
// *Nota* - esta lógica NO debe modificarse
try {
_init();
} catch (Exception e) {
log("habitacionesAgregarFotos Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
}
//

// Realizar inicio de aplicación que debe finalizar
// *después* de que se inicien los componentes administrados
// TODO - Agregar código de inicio propio aquí
String idHabitacion = getSessionBean1().getIdHabitacion();
RowKey habitacionesRowKey = habitacionesDataProvider.findFirst("habitaciones.idhabitacion", idHabitacion);
habitacionesDataProvider.setCursorRow(habitacionesRowKey);
habitacionesDataProvider.refresh();
}


y el evento guardar
public String guardarButton_action() {
// TODO: Procesar la acción de clic de botón. El valor de devolución es un
// nombre de caso de navegación en el que un valor nulo devolverá la misma página.
try {
habitacionesDataProvider.commitChanges();
habitacionesDataProvider.refresh();
info("Se guardaron los cambios....");
this.guardarButton.setDisabled(true);
} catch (Exception e) {
error("No se pueden guardar los cambios -- " + e);
log("Exception: " + e);
}
return null;
}









Monday, September 18, 2006

Recorrer todas las filas de un DataProvider

RECORRER TODOS LOS REGISTROS DE UNA TABLA MEDIANTE EL DataProvider.
Asumimos que nuestra tabla se llama temporalmensajes, lo añadimos a la pagina, y podemos agregar un boton para que realize el recorrido, primero, nos ubicamos en la fila de inicio
y luego hacemos el recorrido al siguiente.
Recuerden que esto es con java studio creator.

public String monstrarMensajesTemporalesButton_action() {
// TODO: Procesar la acción de clic de botón. El valor de devolución es un
// nombre de caso de navegación en el que un valor nulo devolverá la misma página.
try{
if (temporalmensajesDataProvider.cursorFirst()) {
do{
RowKey rowkey = temporalmensajesDataProvider.getCursorRow();
String mensaje = (String) temporalmensajesDataProvider.getValue("temporalmensajes.mensaje");
info(mensaje);
}while(temporalmensajesDataProvider.cursorNext());
} else {
error("No se puede colocar en el primero registro");
}
} catch (Exception e) {
log("Exception : " , e);
error("mostrarMensajesTemporales(): Exception: " + e);
temporalmensajesDataProvider.revertChanges();
}
return null;
}

Thursday, September 14, 2006

Ciclo de vida de las paginas con java studio creator

Es algo basico pero tal vez muchos que no han iniciado con java studio creator puede que lo desconozacan, y es el ciclo basico de las paginas.
Esta es una traducción basica del blog de divas
Tenemos cuatro metodos basicos que nos permiten controlar el ciclo de las paginas:
init.
Este metodo iniciliza los recursos, como constantes y propiedades de los beans. No se usa para obetener o asignar valores a los componentes (como getText() y setText()).

preprocess.

Metodo que llama los valores despues del metodo init. Ocurre cuando una pagina es enviada, ya sea al dar un click en un boton o cambiando valores a un componente que tienen la propiedad Auto-Submit en valor true.

prerender.
Este metodo es llamado despues de conversiones , validaciones, y manejadores de eventos de accción, y despues de que los componentes han sido actualizados.

destroy.
Es llamado despues de el renderizado de las paginas. Puedes usarlo para liberar los recursos.
Si su pagina usa data providers el IDE añade los codigos para cerrar estos dentro del metodo.

El camino de aprendizaje

Una amiga estaba interesada en empezar con Java Studio Creator, y me pregunto por donde debo iiniciar, primero le comente, debes descargar el Java Studio Creator 2 Update1 , y leer los manuales, tutoriales y el foro en Sun.
A veces no analizamos que lo más dificil para una persona sea su conocimiento, si no más bien el inicio en muchas ocasiones nos encontramos con tanta información, que me recuerdo una frase, de una videoconferencia a la que asisti hace un par de años, alli mencionaban,"paralisis por analisis", es decir demasiada información para procesar que en muchas veces nos limitan e impiden que iniciemos el aprendizaje de algo.
Tal vez esto sea algo común en el mundo Java, muchos que desean aprender o empezar ni siquiera tienen idea de como hacerlo, y es responsabilidad de todos aportar algo para solucionar este asunto.

Monday, September 11, 2006

NetBeans Board Elections, September 2006

Ya inicio el periodo de votación dentro de Netbeans. estos son los candidatos:
  • Iwan Eising
  • Frank-Michael Moser
  • Edson Carlos Ericksson Richter
  • David Strupl
  • Rich Unger
  • Gregg Wonderly

Emite tu voto, apoyando al candidato que consideras es el mejor.

Wednesday, September 06, 2006

Insertar Real Player y Windows Media Player


En mi busqueda en los foros de java studio creator acerca de un componente para añadir animaciones flash a las paginas web en mi proyecto sin usar html estatico , encontre en el foro el siguiente hilo,
en el cual nos lleva al blog de

Marco Walther's

Quien hace un buen par de meses desarrollo un componente para el uso de Real Player y Microsoft Windows Media Player, en nuestras paginas web de manera bastante sencilla y sin perder el aspecto visual.
Marco se refiere a este enlace donde explican como crer modulos para java studio creator.

Friday, September 01, 2006

Añadir popup windows a Java Studio Creator

Divas Tutorials
Nos presentan este tutorial en donde se explica basicamente como podemos usar una ventana popup en las paginas creadas con Java Studio Creator. Un tutorial al estilo de Divas, nos presentan detallando los pasos que debemos seguir para lograr usarlos los popup windows de una manera muy sencilla.
Aqui tiene la imagen publicada en el blog.

Unete a la traducción de Netbeans al Español

Recibi un correo de Janice Campbell informandome sobre el estado de la traducción de Netbeans al español. Es importante que toda la comunidad hispana colabore en el proyecto.
Tal vez nos preguntemos porque una versión en Español, si estamos acostumbrados a la versión en Ingles, a esta interrogante, encontraremos algunas reflexiones simples: recordemos que existe una comunidad hispana, que prefiere utilizar IDES en Español, también recordemos que debemos pensar en aquellos desarrolladores, estudiantes, y otro tipo de usuario aun no ha utilizado Netbeans y una versión en su lengua nativa les ayude mucho en su proceso de uso y aprendizaje.


Pagina principal
http://translatedfiles.netbeans.org/

Como empezar
http://translatedfiles.netbeans.org/docs/first_steps.html

Estado actual de las traducciones
http://translatedfiles.netbeans.org/5.0/status.html

Aqui encontraras algunas herramientas que te ayudaran a la traduccion
http://translatedfiles.netbeans.org/tools.html
Aqui tenemos un ejemplo con OmegaT, tomada del sitio de netbeans.














Me informa Janice que pronto se iniciara la traducción de la version 5.5, asi que es una buena ocación para que nos unamos al proyecto, y tengamos una version de Netbeans en Español.
Solo me queda invitarlos a todos a que colaboremos, a Janice y al equipo de traducción felicidades y continuen con su excelente trabajo.