Monday, September 30, 2013

Revisión del Libro: Beginning Java EE 7

Revisión del Libro: Beginning Java EE 7

Antonio Goncalves hace una redacción excelente sobre JEE7, de manera que los expertos y novatos
conozcan las ventajas de JEE7 ademas de los aspectos fundamentales.
Contenido:

  1. Java EE 7 at a Glance
  2. Context and Dependency Injection
  3. Bean Validation
  4. Java Persistence API
  5. Object-Relational Mapping
  6. Managing Persistent Objects
  7. Enterprise JavaBeans
  8. Callbacks, Timer Service, and Authorization
  9. Transactions
  10. JavaServer Faces
  11. Processing and Navigation
  12. XML and JSON Processing
  13. Messaging
  14. SOAP Web Services
  15. RESTful Web Services

Hace un recorrido excelente sobre "Dependency Injection", Bean Validation, profundiza en
"Java Persistence API", mostrando tips muy validos.

Hace una descripción de la evolución de "EJB 3.2" con ejemplos muy interesantes.

En el capitulo "Java Server Faces", muestra las caracteristicas más importantes.

"Transaction", un capitulo completo sobre las mejores practicas para el manejo de transacciones.

"RESTful", es de lectura obligatoria por el contenido de muy alto nivel.


Realmente si deseas aprender JEE7 debes leer "Beginning Java EE 7"



Sunday, September 22, 2013

Agregar primefaces 4.0.RC1.jar al repositorio maven local

Agregar primefaces 4.0.RC1.jar al repositorio maven local



Tenemos el jar descargado

Desde terminal ejecutamos



mvn install:install-file -DgroupId=org.primerfaces -DartifactId=primefaces-4.0.RC1 -Dversion=4.0.RC1 -Dpackaging=jar -DgeneratePom=true -Dfile=primefaces-4.0.RC1.jar

al presionar enter se coloca el jar en el repositorio local





Editar el archivo pom.xml y y colocar en la dependencia
 <dependency>
           <groupId>org.primefaces</groupId>
           <artifactId>primefaces</artifactId>
           <version>4.0.RC1</version>
       </dependency>



Dar clic derecho y seleccionar Build with Dependencies

Se agrega la dependencia al proyecto

Monday, September 09, 2013

Ajustar el tamaño de las columnas en un <p:datatable
Utilizar atributo width para establecer el ancho de la columna.
Por ejemplo: width=”20” establece 20px el ancho



<p:column width="20" filterBy="#{var.historia}" sortBy="#{var.historia}" >
                           <f:facet name="header">
                               <h:outputText value="#{mensajes.historia}" />
                           </f:facet>
                           <!--
                           <p:inputTextarea value="#{var.historia}"  rows="3" style="width: 100% !important;" autoResize="false" />                                                        
                           -->
                             <h:outputText value="#{var.historia}" />
                       </p:column>


Friday, September 06, 2013

Como usar <p:schedule de primefaces con DataClassG
componente schedule primefaces:

Si deseamos crear un schedule para mostrar



Pagina xhtml

               <h:form id="formsprintInsert"  rendered="#{menuBeans.sprintConsultar}">
                   <p:dialog visible="true" header="#{mensajes['tabla.Sprint']}" modal="false" closable="true" showEffect="fade" hideEffect="fade" widgetVar="dialog">  
                       <p:ajax event="close" update="growl" listener="#{loginBean.irInicio()}"/>  
                       <p:schedule  value="#{scheduleController.lazyEventModel}" />  
                   </p:dialog>
                   <br />

                   <p:growl id="growl" life="1500" />
                 
               </h:form>

             










ManagedBeans ScheduleController
Injectamos el sprintData que contiene la lista de sprint y establecemos una hora de inicio.

Named(value = "scheduleController")
@RequestScoped
public class ScheduleController implements Serializable {

   @Inject
   SprintData sprintData;
   private ScheduleModel lazyEventModel;

   public ScheduleController() {
       lazyEventModel = new LazyScheduleModel() {
           @Override
           public void loadEvents(Date start, Date end) {
               clear();
               for (Sprint s : sprintData.getSprintlist()) {

                   Calendar t = Calendar.getInstance();
                   t.setTime(s.getFechainicio());
                   t.set(Calendar.AM_PM, Calendar.PM);                    
                   t.set(Calendar.HOUR, 8);
                    addEvent(new DefaultScheduleEvent(s.getNombre(), t.getTime(), s.getFechaterminacion()));
               }

           }
       };
   }

   public Date getRandomDate(Date base) {
       Calendar date = Calendar.getInstance();
       date.setTime(base);
       date.add(Calendar.DATE, ((int) (Math.random() * 30)) + 1);    //set random day of month  

       return date.getTime();
   }

   public Date getRandomFinal(Date base) {
       Calendar date = Calendar.getInstance();
       date.setTime(base);
       date.add(Calendar.DATE, ((int) (Math.random() * 30)) + 10);    //set random day of month  

       return date.getTime();
   }

   public ScheduleModel getLazyEventModel() {
       return lazyEventModel;
   }
}

Thursday, September 05, 2013

Boton en <p:datatable con Primefaces JSFGenerator
Si tenemos un datatable editable con una columna, podemos utilizar un botón para desplegar el diálogo de edición o eliminación de registros.

Edición de registros o eliminación se despliega al dar clic en el botón

Editando la columna en el mismo datatable








Pagina xhtml
 <h:form id="formtiempodedicacionList"  rendered="#{menuBeans.tiempodedicacionListar}">

<p:dataTable var="var" value="#{tiempodedicacionData.tiempodedicacionlist}" paginator="true"
                                    rows="20"
                                    editable="true" editMode="cell"
                                    selectionMode="single"
                                    rowKey="#{var.idtiempodedicacion}"
                                    selection="#{tiempodedicacionData.selectedTiempodedicacion}"  
                                    widgetVar= "tiempodedicacionTable"
                                    filteredValue="#{tiempodedicacionData.filteredTiempodedicacion}"
                                    id="datatableTiempodedicacion"
                                    >
                           <f:facet name="header">
                               <p:outputPanel>
                                    </p:outputPanel>
                           </f:facet>
                          
                           <h:panelGroup>
                           </h:panelGroup>
                  <h:inputHidden id="idtiempodedicacion" value="#{tiempodedicacionData.selectedTiempodedicacion.idtiempodedicacion}"  />
                           <p:column filterBy="#{var.username}" sortBy="#{var.username}" style="width:50%">
                               <f:facet name="header">
                                   <h:outputText value="#{mensajes.nombre}" />
                               </f:facet>
                               <h:outputText value="#{var.usuarios.nombre}" />
                           </p:column>
                         

                           <p:column headerText="#{mensajes.tiempodedicacion}" style="width:25%">  
                               <p:cellEditor>  
                                   <f:facet name="output"><h:outputText value="#{var.tiempodedicacion}" /></f:facet>  
                                   <f:facet name="input"><p:inputText value="#{var.tiempodedicacion}" style="width:96%" label="#{mensajes.tiempodedicacion}"/></f:facet>  
                               </p:cellEditor>  
                           </p:column>
                           <p:column >  
       <p:commandButton id="selectButton" action="#{tiempodedicacionData.establecer()}" update=":formtiempodedicacionList:displaytiempodedicacion,:formtiempodedicacionList:datatableTiempodedicacion" oncomplete="tiempodedicacionDialog.show()" icon="ui-icon-search" title="View">  
                                   <f:setPropertyActionListener value="#{var}" target="#{tiempodedicacionData.selectedTiempodedicacion}" />  
                               </p:commandButton>  
                           </p:column>
                           <f:facet name="footer">
                               <p:commandButton actionListener="#{tiempodedicacionData.updateLista()}" title="#{mensajes['boton.editar']}"                                              

                                                ajax="false" icon="ui-icon-disk" />
                           </f:facet>
                       </p:dataTable>
                   </p:dialog>




Dialogo
<p:dialog id="dialogtiempodedicacion" rendered="#{menuBeans.tiempodedicacionConsultar}" header="#{mensajes['tabla.Tiempodedicacion']}" widgetVar="tiempodedicacionDialog" resizable="false"  height="135" width="550" showEffect="clip" hideEffect="fold">
                       <h:panelGroup id="displaytiempodedicacion">
                           <h:panelGrid id="displayQuery" columns="2" cellpadding="4"
                                        rendered="#{tiempodedicacionData.renderizar}" >

                               <h:outputText value="#{mensajes.username}" />

                               <h:outputText value="#{tiempodedicacionData.selectedTiempodedicacion.username}"/>
                               <h:outputText value="#{mensajes.idsprint}" />
                               <h:outputText value="#{tiempodedicacionData.selectedTiempodedicacion.idsprint}"/>

                               <h:outputText value="#{mensajes.tiempodedicacion}" />
                               <p:inputText   id="tiempodedicacion" value="#{tiempodedicacionData.selectedTiempodedicacion.tiempodedicacion}" title="#{mensajes.tiempodedicacion}" />
                               <f:facet name="footer">
                                   <p:commandButton actionListener="#{tiempodedicacionData.update}" id="editButton"  rendered="#{menuBeans.tiempodedicacionEditar}" title="#{mensajes['boton.editar']}" icon="ui-icon-disk"
                                                    update=":formtiempodedicacionList:displaytiempodedicacion, :formtiempodedicacionList:growl, :formtiempodedicacionList:datatableTiempodedicacion"
                                                    oncomplete="tiempodedicacionDialog.hide()" />
                                   <p:commandButton id="deleteButton" rendered="#{menuBeans.tiempodedicacionEliminar}" title="#{mensajes['boton.eliminar']}" onclick="confirmation.show()" type="button" icon="ui-icon-trash" />
                                   <p:commandButton  id="cancelButton"  title="#{mensajes['boton.regresar']}" icon="ui-icon-close" onclick = "tiempodedicacionDialog.hide()"/>
                               </f:facet>
                           </h:panelGrid>
                       </h:panelGroup>
                   </p:dialog>