Česky   |  Deutsch   |  English   |  Español   |  Français   |  Indonesia   |  日本語   |  한글   |  Polski   |  Português (BR)   |  Türkçe   |  中文   |  正體中文   |  Tu idioma  
PlanetNetbeans
Planet NetBeans es un rama de NetBeans relacionado con toda la Blogosphere.
Feeds
[RSS 1.0 Feed] [RSS 2.0 Feed]
[FOAF Subscriptions] [OPML Subscriptions]
¿Tienes un blog acerca de NetBeans? Agrega tu blog a PlanetNetBeans.
Feed Subscripciones

Powered by:    Planet

Última actualización:
April 16, 2014 08:02 AM
All times are UTC

Sponsored by
sponsored by Oracle

visit NetBeans website
AVBravo - April 14, 2014 08:01 PM
Entrevista a Adam Bien sobre Java 8

En esta cuarta entrevista converse con Adam Bien, quien ha escrito varios libros sobre JavaEE, acerca de su opinión sobre Java8

 




 1.Could you  tell us something about yourself
My name is Adam Bien (adam-bien.com), I'm a contractor / freelancer and so Singleton.  I really like the Java Programming Language.
Three times a year I'm delivering Java EE workshops at the MUCs Airport to an truly international audience -- http://airhacks.com

 2. What has been your experience with Java?
I'm working with Java since 1995. I started implementing serverside Java with the JavaWebServer. On the client I started with Applets, AWT, then evaluated JFC, then Swing, first versions of JavaFX Script. Java remains exciting. I really like it.

3. How do you consider the new Java 8 release?
It is a really big deal. I used Java 8 for about one year. Since the last JavaOne Java 8 is really stable. I ran NetBeans and all my development on Java 8 daily builds.

Also Nashorn is exciting. It saved me already several hours of my time with the maintenance of my web sites: https://github.com/AdamBien/spg


 4. What do you think of lambda, stream?
I already removed JPA with JPA QL and replaced it with plain domain objects, an in memory-grid and Lambdas with streams.
I think Java 8 will have a huge impact on Java EE architectures.


5. Do you know companies / developers who are migrating to Java8?
There is nothing to migrate :-). In some projects we just launched the server on Java 8.

Other projects were started already last year on Java 8--just because of lambdas. If possible you should upgrade as fast as possible to Java 8.


 6. What are the characteristics that should be added to or removed from the platform?
I really miss Jigsaw. Even more syntactic sugar would be nice, but I really like the direction Oracle's engineers are going with Java.


 7- Recommendations

Stay passionated and enjoy hacking. Keep away from meetings, politics and the boring stuff :-)

Thank you for the interview!

 workshops.adam-bien.com
 blog.adam-bien.com
 about.adam-bien.com

 Author of:
 "Real World Java EE Night Hacks", "Real World Java EE Patterns--Rethinking Best Practices"

AVBravo - April 11, 2014 02:05 PM
Entrevista a Constantin Drabo sobre Java 8


Continuando con la serie de entrevistas sobre Java8, en esta ocasión converse con mi amigo Drabo.

1.Could you  tell us something about yourself
I'm Constantin Drabo from Burkina Faso where I'm working as software
engineer in National Treasury Office. I'm founder  FasoJUG  and Google
Developer Group  manager. I'm also contributor at both NetBeans
Community and Fedora Project where I've been elected as ambassador
since 2010.



2. What has been your experience with Java?
My first contact with Java is in 2002 when I'm student. I wrote my
first java program after reading the book of Anne
Tasso(http://www.editions-eyrolles.com/Livre/9782212111002/le-livre-de-java-premier-langage)
. I developed also several applications both academic and
professional. In my free time I help java moving forward by publishing
tutorials and evangelize.

3. How do you consider the new Java 8 release?
This release is seriously a great bunch for Java technology. I think
Oracle mistook by evolving slowly the platform. They should add  the
new features since a while.
This release comprises several interesting features. The prominent
ones are Java Embedded ,  scripting language support and IoT (Internet
of Things).

4. What do you think of lambda, stream?
With Lambda expression  they introduced functional programming into
Java. This concept is not new since there are already several language
that integrate it (PHP, Ruby, etc). In syntax level it is very strong
, but I skeptical according it usefulness. I think it can be a
concurrent of Nashorn which introduces the usage of a functional
language; JavaScript.Stream API contents  some important classes that
makes easy parallelization.


5. Do you know companies / developers who are migrating to Java8?
Franky speaking, the Java technology is very slow to be adopted here
in companies. Most of them use proprietary solutions and Java is
seeing as a hard adopted technology.
But some are very fun of Java !  I do not know if someone is ready to
move to Java 8 soon.


6. What are the characteristics that should be added to or removed from the platform?
The plateform is becoming  rich and complete. I think there is nothing
to be removed.

7- Recommendations
Java 8 is great  move on it as quick as possible  !


Constantin

AVBravo - April 03, 2014 02:13 PM
Entrevista a Jorge Guerra Guerra sobre Java 8

Continuando con la serie de entrevistas sobre Java 8, en esta ocasión conversamos con nuestro gran amigo Jorge Guerra.

Sitio web: https://sites.google.com/site/jguerra91/



1. Podrías hablarnos algo sobre ti

Soy Ing. Electronico y Lic. en Computación, trabajo como docente en Sistemas Distribuidos en la Universidad Nacional Mayor de San Marcos y en la Universidad Inca Garcilaso de la Vega, y soy capacitador en New Horizons Peru S.A. en todo lo que es tecnología Java.
He escrito dos libros de Java con Netbeans (Cliente / Servidor y aplicaciones Web), trabajo en tecnologías de todo nivel desde 1999, y actualmente desarrollo aplicaciones en Android usando Android Developer Tools (también en Java) 


2. ¿Cual ha sido tu experiencia con Java?
Desde que conocí Java (en 1998, usando Visual Age for Java de IBM) he apoyado el desarrollo de soluciones informáticas usando este lenguaje. En Peru, es el lenguaje ,mas usado, tanto en aplicaciones académicas como en desarrollos empresariales y he tenido oportunidad de participar en varias proyectos web y actualmente en la nube (usando Google App Engine) y ha sido realmente una gran experiencia profesional.

3.¿Como consideras la  nueva versión Java 8?
Es una versión que implementa ideas muy interesantes que van a obligar a cambiar código en muchos proyectos actuales, pero sobre todo en aquellas en la que se esta implementando aplicaciones sobre Cloud Computing, debido a las bondades que ofrecen los nuevos conceptos sobre stream , lambda y el nuevo papel que asumen las interfaces.

4. ¿Que opinas de lambda, stream?
Lo mejor que le pudo pasar a Java, es una apuesta clara a un código muchos mas compacto y definitivamente una evolución definitiva a la computación paralela que hace tiempo Java debió impulsar.
Otra cosa fundamental es stream que impulsa el concepto map/reduce indispensable cuando se hacen aplicaciones en Cloud Computing y sobre todo cuando se usan bases de datos NoSQL.

5.¿Conoces empresas/desarrolladores que están migrando a Java8?
Varias empresas de desarrollo están evaluando las nuevas características en algunos desarrollos actuales, pero todavía no hay una aplicación concreta que se este desarrollando con Java 8.

6.¿Características deben ser agregadas o removidas de la plataforma?
Me parece muy importante que se agregue de manera definitiva la posibilidad de convertir automáticamente datos de tipo simple a String y viceversa, mejoraría mucho el código. En AppInventor se realiza esto sin ningún problema.
Otra cosa que debería agregarse es un modelo de parseo XML similar al de JDom que me parece mucho mas practico que el tradicional org.xml del JDK actual.

7.Recomendaciones
Divulgar en articulos y charlas los nuevos conceptos alrededor de lambda, para que los nuevos programadores los puedan usar en futuros desarrollos.



AVBravo - April 01, 2014 04:32 PM
Entrevista a Raul Casado Piqueras sobre Java 8

En esta ocasión haré una serie de entrevistas a grandes desarrolladores Java sobre su opinión acerca de Java 8.
Tenemos la primera entrevista que corresponde a un gran amigo Raul Casado Piqueras, quien ha contribuido durante muchos años en las comunidades hispanas de Java.

  1.  

1. Podrías hablarnos algo sobre ti

Soy Ingeniero Informático y llevo trabajando con tecnologías de la información desde hace más de 15 años. Trabajo como consultor y director de proyectos para compañías que tienen presencia en grandes clientes, con necesidades tecnológicas muy dispares. 

2. ¿Cual ha sido tu experiencia con Java?
Java ha sido uno de los lenguajes en los que me inicié en el mundo de la programación profesional y en el que más recorrido he tenido, hasta el punto que es una de mis áreas de conocimiento más fuerte. No sólo por conocimientos en el lenguaje en sí mismo, sino por el ecosistemas de herramientas que han evolucionado en torno al mismo. 

3.¿Como consideras la  nueva versión Java 8?
A lo largo de las diferentes versiones que se han ido lanzando se han ido incorporando funcionalidades muy interesantes, y sin duda en esta ocasión las novedades son muy esperadas. Las mejoras a nivel de JVM son cruciales en entornos empresariales, donde la crisis actual ha obligado a volver a pensar en términos de optimización de recursos.

4.¿Que opinas de lambda, stream?
Otra mejora cuya aplicación a nivel profesional es crucial: permite econtrar economías de escala a nivel de código, permitiendo al desarrollador un código más fácil de mantener, más sencillo de construir y mucho más reutilizable, más allá de la encapsulación de contenido. Generics, annotations y ahora lambda, son armas indispensables para conseguir un código mantenible, reutilizable y ajustado a las necesidades de los clientes.
Stream por otro lado, es una mejora que a priori puede suponer en los entornos empresariales un ahorro enorme, sobre todo al implementar estrategias como por ejemplo paralelizar su procesamiento. No sólo permite tener un código más sencillo, sino que simplifica la distribución de la carga de trabajo entre los diferentes núcleos o cualquier otra estrategia que se adapte a las necesidades de negocio

5. ¿Conoces empresas/desarrolladores que están migrando a Java8?
Personal y profesionalmente estoy animando a mis clientes a incluir las nuevas características de Java8 a sus soluciones. Son ventajas competitivas que deben ser aprovechadas lo antes posible porque son la evolución natural del lenguaje y el futuro del desarrollo. Nadie se acuerda hoy de cuando aparecieron los Collections y como se cuestionaba su idoneidad ... y hoy en día son claves en cualquier solución Java! 

6. ¿Características deben ser agregadas o removidas de la plataforma?
Cualquier simplificación del lenguaje es bienvenida y sin duda las optimizaciones y el profiling son algo que todos deseamos. Cuanto más sencillo sea el lenguaje en sí, mucho mejor. Closures, con la aparición de Lambda, puede que pasen a la historia, de la misma manera que Iterator lo haga con Stream. Sin duda, serán los desarrolladores los que decidirán que encaja más en la soluciones. No debemos olvidar que las soluciones que hay basadas en Java se cuentan por millones, por lo que hay cosas que son difíciles de eliminar, sobre todo si la comunidad vuelve a tener un papel relevante.

7.Recomendaciones
No hay que tener miedo a probar las nuevas funcionalidades que Java 8 ofrece, al contrario, hay que intentar ver en ellas una oportunidad para crear un código más sencillo, mantenible, eficiente y óptimo. Un lenguaje que nos centre en el desarrollo y menos en el lenguaje en sí, es sin duda nuestra mejor oportunidad para satisfacer mejor las necesidades de nuestros clientes




AVBravo - March 29, 2014 05:44 PM
Crear componentes Java Server Faces con NetBeans

Crear componentes Java Server Faces

En este ejemplo tenemos el siguiente dialogo.


podemos reemplazarlo por un un componente personalizado


Pasos para la creación del componente
 Crear la carpeta javscaz dentro de resources
Crear la pagina eliminar.xhtml


En la sección  <composite:interface>
Definimos el nombre del atributo con <composite:attribute name>
para los métodos usamos  method-signature y especificamos el tipo de valor de retorno.


En la sección <composite:implementation>, realizamos la implementacón del codigo.
Para usar el valor  nos basamos en la sintaxis cc.attrs.nombredelatributo 

  <p:commandButton id="removeButton" value="#{app['boton.yes']}"
                                 update="#{cc.attrs.buttonYesUpdate}"
                                 oncomplete="#{cc.attrs.buttonYesOncomplete}"
                                 actionListener="#{cc.attrs.buttonYesAction}" />


Secciones:
1. namespace
2. composite interface
3. composite implementation
4. uso de componentes




En la pagina que deseamos usarlo nivel1.xhtml
en el namespace incluir (nombre de la carpeta en resources)
 xmlns:javscaz="http://java.sun.com/jsf/composite/javscaz"

Agregar el componente formato: namespace:nombredecomposite, y colocamos los valores a los atributos.
  <javscaz:eliminar
                            buttonNoOnclick="PF('confirmationwidgetVar').hide()"
                            
                            buttonYesAction="#{nivel1Controller.delete()}"
                            buttonYesOncomplete="PF('confirmationwidgetVar').hide();"
                            buttonYesUpdate=":form:panel,:form:growl"
                            />







AVBravo - March 28, 2014 03:27 PM
Java 8 Launch

Videos sobre Java 8



AVBravo - March 26, 2014 02:55 PM
lambda operación de suma usando NetBeans 8

lambda operación de  suma   usando NetBeans 8

Tradicional mente podemos realizar la suma de las personas con edad >= 30
Integer suma=0;
    for(Persona p:list){
                  if(p.getEdad() >=30 ){
                      suma += p.getEdad();
                  }
               
              }

si utilizamos lambda

  suma = list.stream().filter((p) -> (p.getEdad() >=30 )).map((p) -> p.getEdad()).reduce(suma, Integer::sum);

AVBravo - March 26, 2014 02:37 PM
NetBeans 10,15 años

Algunos recuerdos de los aniversarios de NetBeans
NetBeans 10 años




NetBeans 15 años






AVBravo - March 25, 2014 07:10 PM
Lambda JDK8 con NetBeans para Novatos

Ejemplo sencillo de Lambda con NetBeans


Crear un proyecto nuevo
File--> New Project-->Categories: Maven Projects: Java Application

Indicamos el nombre del proyecto

El IDE genera el esqueleto del proyecto



En propiedades del proyecto
Sources--> Source/Binary Format:



Crearemos una clase llamada Persona con los atributos (id,nombre,edad)
Clic derecho el paquete com.avbravo.testlambda --> New--> Java Class




Colocar el nombre: Persona

El IDE genera la nueva clase
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.avbravo.testlambda;

/**
 *
 * @author avbravo
 */
public class Persona {
    
}

Clic derecho en el código -->Seleccionar Insert Code...


Seleccionar Add Property...

Agregamos la propiedad id y tipo String. Se generan los métodos set/get
repetimos el proceso para el atributo String nombre, Integer edad;
Agregamos los métodos constructores
 public Persona() {
    }

    public Persona(String id, String nombre, Integer edad) {
        this.id = id;
        this.nombre = nombre;
        this.edad = edad;
    }

Agregar el método toString(). Clic derecho Insert Code---> toString()


@Override
    public String toString() {
        return "Persona{" + "id=" + id + ", nombre=" + nombre + ", edad=" + edad + '}';
    }

Código completo Persona.java:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.avbravo.testlambda;

/**
 *
 * @author avbravo
 */
public class Persona {
    
    private String id;

    private String nombre;

    private Integer edad;

    public Persona() {
    }

    public Persona(String id, String nombre, Integer edad) {
        this.id = id;
        this.nombre = nombre;
        this.edad = edad;
    }

   
    

    /**
     * Get the value of edad
     *
     * @return the value of edad
     */
    public Integer getEdad() {
        return edad;
    }

    /**
     * Set the value of edad
     *
     * @param edad new value of edad
     */
    public void setEdad(Integer edad) {
        this.edad = edad;
    }

    /**
     * Get the value of nombre
     *
     * @return the value of nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Set the value of nombre
     *
     * @param nombre new value of nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Get the value of id
     *
     * @return the value of id
     */
    public String getId() {
        return id;
    }

    /**
     * Set the value of id
     *
     * @param id new value of id
     */
    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Persona{" + "id=" + id + ", nombre=" + nombre + ", edad=" + edad + '}';
    }


}

Crear una Java Main Class...





Agregamos un ArrayList<Persona> , escribimos un segmento de código sin usar Lambda, donde usamos un for y una condición lógica para filtrar 
  for(Persona p:list){
                  if(p.getEdad() >=30 ){
                       System.out.println(" --> "+p.toString());
                  }
                 
              }
clic en el asistente y seleccionar Use functional Operation

el ide genera el código lambda
 list.stream().filter((p) -> (p.getEdad() >=30 )).forEach((p) -> {
                System.out.println(" --> "+p.toString());
            });

Se usa un stream() de la lista ,se aplica el filtro 


Código Completo

  package com.avbravo.testlambda;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author avbravo
 */
public class Prueba {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       try {
              List<Persona> list = new ArrayList<>();
              list.add(new Persona("1","anna",25));
              list.add(new Persona("2","jhoan",30));
              list.add(new Persona("3","maria",40));
              System.out.println(" sin utilizar lambda");
              for(Persona p:list){
                  if(p.getEdad() >=30 ){
                       System.out.println(" --> "+p.toString());
                  }
                 
              }
              System.out.println("lambda");
              list.stream().filter((p) -> (p.getEdad() >=30 )).forEach((p) -> {
                System.out.println(" --> "+p.toString());
            });
        } catch (Exception e) {
            System.out.println("Error "+e.getLocalizedMessage());
        }
      
    }

Ejecutamos el proyecto

    
}

AVBravo - March 20, 2014 04:35 PM
One Click Open Sesame

Geertjan Wielenga, desarrollo el plugin  One Click Open Sesame 
que permite abrir los archivos al dar simplemente un click.

Descargarlo desde: http://plugins.netbeans.org/plugin/53723/?show=true






Instalarlo
Menu NetBeans: Tools-->Plugin


Seleccionar la pestaña Downloaded, dar clic en el botón Add Plugins.., seleccionar el archivo .nbm descargado.

dar clic en el botón Install

luego de haberlo instalado simplemente al dar un clic sobre el archivo este se abre en el Editor.



AVBravo - March 18, 2014 07:50 PM
NetBeans IDE 8.0 Disponible

Esta disponible la versión final de NetBeans 8.0
https://netbeans.org/downloads/index.html


AVBravo - March 18, 2014 07:39 PM
JAVA SE8 disponible


Disponible JDK8





AVBravo - March 18, 2014 05:05 PM
Conexión Base Datos WildFly

Conexión Base Datos WildFly

Fuente:

Agregar Driver JDBC MySQL

Descargarlo desde
http://dev.mysql.com/downloads/connector/j/


En Runtime→Manage Deployments→presionar el botón Adda.png


presionar el botón Seleccionar archivo

sd.png










seleccionar el driver jdbc mysqlmysql.png



Presionar el botón Nextn.png




Presionar el botón Savesa.png



Se muestra el driver agregado,Dar clic en En/Disables.png





Confirmar la solicitud

r56.png

Se muestra el conector habilitado

ens.png

Crear un modulo

Pasos:
  1. Entrar al directorio /modules/system/layers/base/com dentro de wildFly
  2. crear el directorio mysql/main
  3. Copiar el jdbc driver a ese directorio
  4. Crear el archivo module.xml



Entrar el directorio
cd wildfly-8.0.0.Final/modules/system/layers/base/com


Crear el directorio mysql
mkdir mysql


Crear el directorio main
cd mysql
mkdir main


Copiar el driver jdbc mysql al directorio main recién creados.png


Crear el archivo module.xml
gedit module.xml


<?xml version="1.0" encoding="UTF-8"?>
       <module xmlns="urn:jboss:module:1.1" name="com.mysql">
           <resources>
               <resource-root path="mysql-connector-java-5.1.29-bin.jar"/>
           </resources>
           <dependencies>
               <module name="javax.api"/>
               <module name="javax.transaction.api"/>
           </dependencies>
       </module>


Agregar la configuración
Podemos hacerlo desde la línea de comandos o editar directamente el archivo standalone.xml
Editaremos el archivo standalone.xmlt
gedit  wildfly-8.0.0.Final/standalone/configuration/standalone.xml
Localizamos <datasources>, agregamos el driver

d.png

Agregamos el driver
<driver name="mysql" module="com.mysql">
     <xa-datasource-class>
       com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
     </xa-datasource-class>
   </driver>


s.png

En Profile→ Connector→Datasources dar clic en Add

add.png


En Name colocamos el nombre rigemdb
y en JNDI Name a diferencia de GlassFish debemos incluir el prefijo java:/
java:/jdbc/rigmendb

n.png




En la siguiente ventana como detecto el driver mysql dar clic en Nextd.png




Especificar


  • Connection URL: jdbc:mysql://localhost:3306/rigemdb
  • Username: root
  • Password: secret

d.png







Se muestra, el datasourcesa.png



presionar el botón Enable,d.png
presionar el botón Confirm , para confirmar la solicitud
Queda habilitadoa.png


Seleccione la pestaña Pool y presione el botón Edit4.png



y cambie los valores Min Pool Size a 5 y Max Pool Size a 15 y presione el botón Save

a.png













En la pestaña Connection dar clic en el botón Test Connection

t.png

Nos envía el mensaje de conexión exitosad.png



AVBravo - March 17, 2014 07:21 PM
Línea de Comandos WildFly

Línea de Comandos WildFly

Para usar la consola de administración debemos ejecutar jboss-cli.sh

./jboss-cli.sh

s.png


Conectarse al server
ejecutar el comando
connectcc.png

Si es exitoso se muestra el prompt como aparece en la figura.

Para salir
ejecutar

quit


AVBravo - March 17, 2014 04:26 PM
Crear un pool de Conexiones en GlassFish

En Glassfish podemos crear el pool de conexiones desde la interfaz en el browser


O podemos editar el archivo domain.xml , ubicado
en glassfish-4.0/glassfish/domains/domain1/config

gedit gedit glassfish-4.0/glassfish/domains/domain1/config/domain.xml

en la sección  <resources>
Agregamos
  • jdbc-connection-pool: Para crear el pool de conexión
  • jdbc-resource pool-name: Para crear recursos JDBC

<jdbc-connection-pool datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" 
                          res-type="javax.sql.DataSource" name="scrumwebPool">
      <property name="password" value="secreted"></property>
      <property name="user" value="root"></property>
      <property name="databaseName" value="scrumweb"></property>
      <property name="portNumber" value="3306"></property>
      <property name="url" value="jdbc:mysql://localhost:3306/scrumweb"></property>
    </jdbc-connection-pool>
    <jdbc-resource pool-name="scrumwebPool" jndi-name="scrumweb"></jdbc-resource>








AVBravo - March 17, 2014 02:23 PM
Crear usuarios en WildFly

Arrancar WildFly
cd wildfly-8.0.0.Final/bin/

./standalone.sh

En el browser ingresar



Agregamos un usuario
./add-user.sh
Se despliega un menú donde nos solicita el tipo de usuariotipo.png
en este caso seleccionamos a  y presionamos enter
Ahora solicita  el nombre del usuarioadd.png


Luego ingresamos el passwordpassword.png
Se solicita la confirmación del password
Solicita los grupos. Dejamos en blanco y presionamos entergrupos.png
Respondemos yes a la solicitud de confirmación.yes.png
Solicita confirmación de confirmación, respondemos yesejbs}.png

Ahora si entramos al browser
nos solicita el usuario y password.9090..png
Aparece la página de administraciónadmin.png

AVBravo - March 12, 2014 07:46 PM
Integrar WildFly con NetBeans

Integrar WildFly con NetBeans

Descargar WildFly desde

Descomprimir el archivo .zip
s.png

Entrar al directorio bin
cd /wildfly-8.0.0.Final/bin
Ejecutar
./standalone.sh

En el browser
Para administración: localhost:9990

9990.png
Para aplicaciones:    localhost:8080l.png


Descargar el Plugin WildFly

Instalamos el plugin

En la pestaña Services
add.png



Seleccionamos Server: WildFly Application Server
w.png

Seleccionamos el directorio
ub.png




Y dejamos la configuración predeterminadainstancia.png



Con esto tenemos el servidor configurado
s.png

AVBravo - March 12, 2014 07:05 PM
Reportes Agrupados con iReport + Java Server Faces + JPA

Reportes Agrupados con iReport + Java Server Faces + JPA

y.png

Definimos los Fieldsca.png



dar clio derecho en report name seleccione Add Report Group

aa.png


indicar el nombre y seleccionar el Fielde.png



marcar Add the group header y Add the group footerf.png














En el diseñador arrastrar los atributos a la sección de grupo  y a detalle los correspondientes.A.pngEn



AVBravo - March 12, 2014 06:59 PM
Reportes iReport + Java Server Faces + JPA

Reportes iReport + Java Server Faces + JPA

Crearemos un reporte de usuarios mostrando el grupo de usuario que pertenece el otro  Entity


r.png



Entity Usuarios

Si observamos existe el atributo idgrupousuario de tipo Grupousuario
public class Usuarios implements Serializable {
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 70)
   @Column(name = "tema")
   private String tema;


   @JoinColumn(name = "idmunicipio", referencedColumnName = "idmunicipio")
   @ManyToOne(optional = false)
   private Municipios idmunicipio;
   private static final long serialVersionUID = 1L;
   @Id
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 35)
   @Column(name = "username")
   private String username;
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 150)
   @Column(name = "password")
   private String password;
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 60)
   @Column(name = "nombre")
   private String nombre;
@JoinColumn(name = "idgrupousuario", referencedColumnName = "idgrupousuario")
   @ManyToOne(optional = false)
   private Grupousuarios idgrupousuario;







Editamos el Entity Grupousuario

En el método toString() retornamos el atributo que deseamos mostrar


public class Grupousuarios implements Serializable {
   private static final long serialVersionUID = 1L;
   @Id
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 35)
   @Column(name = "idgrupousuario")
   private String idgrupousuario;
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 50)
   @Column(name = "grupousuario")
   private String grupousuario;


@Override
   public String toString() {
      // return "com.javscaz.rigemjsf.Grupousuarios[ idgrupousuario=" + idgrupousuario + " ]";
       return grupousuario;
   }





Diseñamos el reporte

Agregar los atributos en Fieldsf.png


Nos ubicamos en el atributo idgruposusuario y seleccionar propiedades, en Field Class colocamos java.lang.Object
con esto invocaremos el método toString() del entity Grupousuario.f.png









Arrastramos los atributos al reporte.

d.png

AVBravo - February 26, 2014 08:00 PM
NetBeans IDE 8.0 RC1 Download

Ya esta disponible NetBeans IDE 8.0 RC1 Download
Desde el siguiente enlace
http://dlc.sun.com.edgesuite.net/netbeans/8.0/rc/

Características disponibles con esta liberación
https://netbeans.org/community/releases/80/relnotes.html


AVBravo - February 23, 2014 07:04 PM
Corregir error / UI Layout Initialization Error

Cuando desarrollamos una aplicación Java Server Faces podemos encontrarnos algunos errores en este caso mostraremos la imagen, cuando se trata de cargar una pagina.


Generalmente este error se genera cuando se hace referencia a un objeto con un id no existente,

En NetBeans  nos ubicamos en la consola de GlassFish , como observamos en la figura en el punto 1, indica que se esta haciendo referencia al objeto llamado toolbar, pero en nuestra pagina el componente toolbar tiene el id="toolbar1", lo que muestra que el componente con nombre toolbar no existe, la solución es colocarle el id="toolbar".




AVBravo - February 17, 2014 03:46 PM
PAGINA CON 4 SelectOneMenu

PAGINA CON 4 SelectOneMenu
En este ejemplo mostraremos el uso de selectOneMenu, en el cual se actualizaran dependiente de la selección que se realice

    <h:outputLabel value="#{msg.idnivel1}" for="idnivel1" />
                               <p:selectOneMenu converter="nivel1Converter" id="idnivel1"
                                                value="#{nivel2SearchController.nivel2.idnivel1}"                                                 
                                                filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
                                   <f:selectItem itemLabel="#{app['selectonemenu.select']}" itemValue="#{null}"/>  
                                   <f:selectItems value="#{nivel1SearchController.items}"
                                                  var="item"
                                                  itemValue="#{item}"
                                                  itemLabel="#{item.idnivel1} - #{item.nombre}"                                                    
                                                  />
                                   <p:ajax  process="idnivel1"  event="change"
                                            update=":form:idnivel2,:form:growl"
                                            listener="#{nivel2SearchController.changeItems()}"/>                                     
                               </p:selectOneMenu>
                               
                               <h:outputLabel value="#{msg.idnivel2}" for="idnivel2" />
                               <p:selectOneMenu converter="nivel2Converter" id="idnivel2"
                                                value="#{nivel3SearchController.nivel3.idnivel2}"  
                                                required="true" requiredMessage="#{msg.idnivel2} #{app['info.required']}"
                                                filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
                                    <f:selectItem itemLabel="#{app['selectonemenu.select']}" itemValue="#{null}"/>  
                                   <f:selectItems value="#{nivel2SearchController.itemsEntity}"
                                                  var="item"
                                                  itemValue="#{item}"
                                                  itemLabel="#{item.idnivel2} -  #{item.nombre}"
                                                  />
                                      <p:ajax  process="idnivel2"  event="change"
                                            update=":form:idnivel3,:form:growl"
                                            listener="#{nivel3SearchController.changeItems()}"/>        
                               </p:selectOneMenu>
                               
                                <h:outputLabel value="#{msg.idnivel3}" for="idnivel3" />
                               <p:selectOneMenu converter="nivel3Converter" id="idnivel3"
                                                value="#{nivel4SearchController.nivel4.idnivel3}"  
                                                required="true" requiredMessage="#{msg.idnivel3} #{app['info.required']}"
                                                filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
                                     <f:selectItem itemLabel="#{app['selectonemenu.select']}" itemValue="#{null}"/>
                                   <f:selectItems value="#{nivel3SearchController.itemsEntity}"
                                                  var="item"
                                                  itemValue="#{item}"
                                                  itemLabel="#{item.idnivel3} -  #{item.nombre}"
                                                  />
                                             <p:ajax  process="idnivel3"  event="change"
                                            update=":form:idnivel4,:form:growl"
                                            listener="#{nivel4SearchController.changeItems()}"/>     
                               </p:selectOneMenu>
                               
                                
                                    <h:outputLabel value="#{msg.idnivel4}" for="idnivel4" />
                               <p:selectOneMenu converter="nivel4Converter" id="idnivel4"
                                                value="#{nivel5Controller.nivel5.idnivel4}"  
                                                required="true" requiredMessage="#{msg.idnivel4} #{app['info.required']}"
                                                filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
                                   
                                   <f:selectItems value="#{nivel4SearchController.itemsEntity}"
                                                  var="item"
                                                  itemValue="#{item}"
                                                  itemLabel="#{item.idnivel4} -  #{item.nombre}"
                                                  />
                                         
                               </p:selectOneMenu>

                                


AVBravo - February 05, 2014 01:54 PM
SelectOneMenu

SelectOneMenu

Para realizar filtros en el selectOneMenu utilizamos
filter="true" filterMatchMode="startsWith"



Mostrar  atributos combinados del método toString() del Entity


En el Entity Nivel1.java editar el método toString(), en el return colocamos los atributos que deseamos que devuelva.
@Override
   public String toString() {
     return idnivel1 + " - "+ nombre;
  //   return "com.javscaz.rigemjsf.Nivel1[ idnivel1=" + idnivel1 + " ]";
   }

 En la página no especificamos el itemLabel para que se invoque directamente el método  toString()
Queda de la siguiente manera.

Mostrar el atributo a través de itemLabel

Para mostrar el atributo en el mismo formulario indicamos el itemLabel y la propiedad a mostrar.




















SelectOneMenu con atributos combinados en la página

En el itemLabel indicamos los atributos que deseamos mostrar
                                    itemLabel="#{idnivel1Item.nombre} - #{idnivel1Item.idnivel1}"



<p:selectOneMenu converter="nivel1Converter" id="idnivel1"
                                  value="#{nivel3Controller.nivel3.idnivel1}"
                                  required="true" requiredMessage="#{msg.idnivel1} #{app['info.required']}"
                                                 filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
         <f:selectItems value="#{nivel1SearchController.items}"
                      var="idnivel1Item"   itemValue="#{idnivel1Item}"
                                                  itemLabel="#{idnivel1Item.idnivel1} - #{idnivel1Item.nombre} "
                                                  />
</p:selectOneMenu>
                               

AVBravo - February 01, 2014 05:15 PM
Felicidades a Apuntes de Java

En esta ocasión me complace comentar que el blog de nuestro amigo Diego Silva, cumple 8 años
http://www.apuntesdejava.com/
Sin dudas sus aportes a la comunidad Java, NetBeans durante todo este tiempo han sido muy valiosos, entre tutoriales, consejos, traducción del IDE.
Saludos y felicidades

AVBravo - January 30, 2014 07:28 PM
EVENTO AJAX AL INICIAR UN DIÁLOGO

EVENTO AJAX AL INICIAR UN DIÁLOGO


Si deseamos que cada vez que se muestre un diálogoo este limpie los registros de un datatabled usamos      <p:ajax onstart> e invocamos el método para limpiar el list.
<p:dialog header="#{form['nivel1.search']}"
                     closable="false" showEffect="clip"
              
                     hideEffect="fade"

                     height="335"  width="750"
                     widgetVar="searchDialogWidgetVar">
              
               <p:ajax onstart="#{nivel1SearchController.clear()}" update=":form:growl" listener="#{nivel1SearchController.clear()}"/>



Método limpia el list

public String clear(){
   nivel1List = new ArrayList<>();
       return null;

}



AVBravo - January 22, 2014 04:01 AM
Usar fragmentos

En algunos paginas que estan ligadas en Entity, deseamos realizar operaciones como busquedas por un atributo, la validación nos impediria realizar estos llamados , para ello utilizamos   <p:fragment autoUpdate="true">  y colocamos dentro de el los atributos y commandButton a utilizar.


   <p:fragment autoUpdate="true">
                                        <h:inputText id="idnivel1" value="#{nivel1Controller.nivel1.idnivel1}" title="#{msg.idnivel1}" required="true" requiredMessage="#{msg.idnivel1} #{app['info.required']}" />

                                        <p:commandButton value="Buscar" icon="ui-icon-search"
                                                         update="panel,growl,form" action="#{nivel1Controller.buscar}"/>
                                    </p:fragment>

Si no usaramos el <p:fragment> se generarían los mensajes indicando la validación


al usar el <p:fragment> solo se valida el atributo especificado
formulario completo


AVBravo - January 15, 2014 04:32 PM
NetBeans 8 Beta disponible

Ya esta disponible NetBeans 8 Beta
https://netbeans.org/community/releases/80/


Alguna de las características:

  • Soporte JDK 8
  • Tomcat 8.0 and TomEE support

AVBravo - January 06, 2014 01:18 PM
Enterprise Tab en NetBeans

Se agrego un nuevo tab en el portal de NetBeans, Enterprise https://netbeans.org/enterprise/index.html

aquí podrás encontrar información de carácter empresarial relacionada con NetBeans.

AVBravo - January 02, 2014 07:20 PM
PrimeFaces Search Expression Framework

PrimeFaces Search Expression Framework

Cuando deseamos hacer búsquedas, generalmente nos encontramos que las reglas de validación nos impediran ejecutar determinadas acciones, tenemos algunas alternativas para evitar esto con campos requeridos, en un commandButton utilizar immediate="true", o utitlizar PrimeFaces Search Expression Framework.
http://www.primefaces.org/showcase/ui/searchExpressions.jsf


Utilizamos process="@this" e indicamos el id del objeto.

 <p:commandButton actionListener="#{estatusController.find2(actionEvent)}" process="@this,idestatus" update="growl,panel" value="Process" />



AVBravo - October 30, 2013 06:03 PM
Apache Cordova con NetBeans 7.4

Apache Cordova con NetBeans


Apache Cordova es un framework que nos permite desarrollar aplicaciones HTML5 para Android.



Requisitos



Instalar Apache Ant
Descargamos el archivo comprimido apache-ant-1.9.2-bin.zip
Lo descomprimidos
Agregamos al path
sudo gedit /etc/profile


Agregar
export ANT_HOME=/home/avbravo/apache-ant-1.9.2
export PATH=$PATH:${ANT_HOME}/bin


ejecutar
cd /etc
source profile
Generalmente si no lo reconoce reiniciamos el computador


Para testear la configuración
escribimos an
t





Instalar Git
sudo apt-get install git-core git



Nodejs
Instalar Nodejs
Referencia





sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs


Instalar cordova
sudo npm install -g cordova
Esperemos que termine la descarga





Instalar Android SDK
Descargar el SDK


Si tenemos sistema operativo de 64bits, debemos agregar
sudo apt-get update
sudo apt-get install ia32-libs-multiarch



Descomprimir el archivo


Crea la carpeta android-sdk-linux
Desde terminal ejecutamos
sudo gedit /home/avbravo/.bashrc


incluimos en el path los directorios
export PATH=${PATH}:/home/avbravo/android-sdk-linux/tools
export PATH=${PATH}:/home/avbravo/android-sdk-linux/platform-tools
export PATH=${PATH}:/home/avbravo/android-sdk-linux




Ahora ejecutamos desde el terminal
android



y se abre el Android Manager


Seleccionar la versión de Android que deseamos trabajar, y presionar el botón Install 6 packages. Apache cordova requiere Android 4.2
Dar clic en Accept License, y presionar el botón Install
Se inicia la descarga de paquetes al finalizar cerramos el Android SDK Manager

Instalar Android Virtual Device (AVD) EMULADOR
Desde Android Virtual Device Manager
Seleccionar en el menú Tools

Fuente




Desde comandos
  • Ver la lista de target
android list targets


Observamos el id correspondiente a la plataforma que deseamos desarrollar. En este caso id:3, or “android-17” nos muestra el soporte para Android 4.2.2, verificamos que muestre ABIs.





  • Creamos un AVD desde la línea de comandos mediante el formato
android create avd -n <name> -t <targetID> [-<option> <value>]
  • Ejecutar
android create avd -n my_android17 -t 3
Si existe más de un ABI nos envia este mensaje de error
en ese caso verificamos el ABIs que deseamo, en este caso x86
android create avd -n my_android17 -t 3 --abi x86




  • Ejecutar
           android avd
   para visualizar el manager



Dar clic en el botón Start, se muestra el diálogo donde especificamos la escala, presionar el botón Launch
se muestra el depurador
Eliminar el avd
android delete avd -n <name>
android delete avd -n my_android1.5




Crear aplicacion Apache Cordoba desde consola


Ejecutamos
cordova create hello com.example.hello HelloWorld


crea el directorio hello para la aplicacion y entramos al directorio
cd hello


si ejecutamos un ls, podemos ver los directorios de la aplicacion



Construir la aplicacion para android
cordova platform add android



Construimos la aplicacion
cordova emulate android


Esperamos que se cargue HelloWorld



Dar un clic en HelloWord y vemos la aplicación en el movil.


Entramos al directorio  www
cd www
ejecutamos el comando ls


editamos el archivo index.html



hacemos el build  y ejecutamos el emulador









NetBeans IDE
Configurar Android sdk
Menu Tools→ Options-->Miscellaneous
Especificar Android SDK Location



Creamos un proyecto Cordova
File→ New-->Categories: HTML5 Projects:Cordova Application


Project Name: CordovaEjemplo





Seleccionamos la plantilla



Biblioteca Javascript



Indicamos el ID
Configurar el emulador


Instalarlo en el Movil



AVBravo - October 21, 2013 05:08 PM
Conferencia DESARROLLO DE APLICACIONES JEE7 CON NETBEANS

Sitio Web del congreso http://cicis.ujcm.edu.pe/
La Universidad José Carlos Mariategui, ubicada en Moquegua, PERU, organizo el Congreso Internacional de Computación, Informática y Sistemas, denominado CICIS, donde tuve la oportunidad de exponer mediante videoconferencia(hangout), el tema "DESARROLLO DE APLICACIONES JEE7 CON NETBEANS"
En la misma se explico NetBeans IDE, NetBeans Platform, y lo nuevo en JEE7.



Mis felicitaciones a los organizadores del evento.



Algunos temas incluían CDI,  Bean Validation y al final se realizo una aplicación web utilizando
NetBeans IDE con Java Server Faces 2.2 + JPA2.1+EJB.









AVBravo - October 15, 2013 08:43 PM
Usando Dialog Framework

Primefaces 4.0 ofrece componentes interesantes como Dialog Framework, que nos permiten mostrar un dialogo desde nuestros CDI Beans.
.



@Named
@RequestScoped

public class JSFUtil implements Serializable {
   public static void infoDialog(String titulo, String texto){
      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, titulo, texto);  
         
     RequestContext.getCurrentInstance().showMessageInDialog(message);

   }
}

En el controller llamamos al método infoDialog

@SessionScoped
@Named
public class UserController implements Serializable{

public void Mensajes(){
JSFUtil.infoDialog("Mensaje","Existe un registro con ese id");
}

}












AVBravo - October 09, 2013 09:01 PM
Utilizando facelets con < p:layout >

Utilizando facelets con < p:layout >

Integramos facelets con el componente <p:layout> de primefaces. Teniendo presente que <p:layout> utiliza    <p:layoutUnit position="north”> para definir las areas y facelets necesitamos  definir el área mediante <ui:insert name="top"> .


<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:ui="http://java.sun.com/jsf/facelets"
     xmlns:h="http://java.sun.com/jsf/html"
     xmlns:p="http://primefaces.org/ui"
     xmlns:f="http://xmlns.jcp.org/jsf/core">
   <f:view contentType="text/html">
       <h:head>
           <f:facet name="first">
               <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
               <title>PrimeFaces</title>
           </f:facet>
            <style type="text/css">
               .ui-layout-north {
                   z-index:20 !important;
                   overflow:visible !important;;
               }
               .ui-layout-north .ui-layout-unit-content {
                   overflow:visible !important;
               }
           </style>
       </h:head>


   
   <h:body>
       <p:layout fullPage="true">
           <p:layoutUnit position="north" size="100" resizable="true" closable="true" collapsible="true">
               <ui:insert name="top">
         Header
               </ui:insert>
           </p:layoutUnit>
           <p:layoutUnit position="south" size="50" closable="true" collapsible="true">
               <ui:insert name="bottom">
                   Footer
               </ui:insert>
           </p:layoutUnit>
           <p:layoutUnit position="west" size="175" header="Left" collapsible="true">
               <ui:insert name="left">
                   Left
               </ui:insert>
           </p:layoutUnit>
           
           <p:layoutUnit position="center">
               <ui:insert name="center"></ui:insert>
           </p:layoutUnit>
       </p:layout>
   </h:body>
       </f:view>
</html>

AVBravo - September 30, 2013 08:14 PM
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"



AVBravo - September 22, 2013 04:05 PM
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

AVBravo - September 09, 2013 07:47 PM

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>


AVBravo - September 06, 2013 07:50 PM

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;
   }
}

AVBravo - September 05, 2013 03:35 PM

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>


AVBravo - September 05, 2013 01:37 AM

Colocar un inputTextarea en un <p:dataTable

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

AVBravo - September 03, 2013 05:04 PM
Cerrar el diálogo e ir al inicio

Cerrar el diálogo  e ir al inicio
Si habilitamos el diálogo visible de forma predeterminada para cerrarlo y redirigir a la pagina de inicio utilizamos el evento ajax close.

<p:dialog visible="true" header="#{mensajes['tabla.Userstories']}" modal="true"  showEffect="fade" hideEffect="fade" widgetVar="dialog">
<p:ajax event="close" update="growl" listener="#{loginBean.irInicio()}"/>  
</p:dialog>





@ManagedBean
@SessionScoped
public class LoginBean implements Serializable {

public String irInicio(){
       return "/index";
}
}



AVBravo - September 03, 2013 01:36 PM
Columnas editables en un datatable

Columnas editables en un datatable

Podemos editar columnas específicas en un datatable y luego actualizar los registros de la tabla a través de los ManagedBeans data utilizados con DataClassG y JSFGenerator
  • Establecer editable=”true” y editMode=”cell”
<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"
                                    >

  • En la columna colocamos  <p:cellEditor>  



  <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>



Colocamos el boton
<f:facet name="footer">
         <p:commandButton actionListener="#{tiempodedicacionData.updateLista()}" title="#{mensajes['boton.editar']}"                                              
       oncomplete=" handleSubmitRequest(xhr, status, args, 'tiempodedicacionDialogInsert','newUserForm');"                                              
                                                    ajax="false" icon="ui-icon-disk" />
                           </f:facet>




  • En el Data  recorro la lista de objetos para actualizarlos
public Boolean updateLista() {
       try {
           for (Tiempodedicacion t : tiempodedicacionlist) {
               if (t.getTiempodedicacion() < 0) {
                   JSFUtil.addSuccessMessage(archivoRecursos.getRb().getString("label.tiempodedicacionnonulo"));
                   return false;
               }

           }

           Integer totalupdate = 0;
           for (Tiempodedicacion t : tiempodedicacionlist) {

               tiempodedicacionController.setTiempodedicacion(t);
               if (tiempodedicacionController.update()) {
                   totalupdate++;

               } else {
                   JSFUtil.addWarningMessage(archivoRecursos.getRb().getString("msg.noupdate") + tiempodedicacionController.getMensaje());
               }
           }
           if (totalupdate != tiempodedicacionlist.size()) {
               JSFUtil.addWarningMessage(archivoRecursos.getRb().getString("msg.noupdate"));
           } else {
               JSFUtil.addSuccessMessage(archivoRecursos.getRb().getString("msg.edited"));
           }




       } catch (Exception ex) {
           JSFUtil.addErrorMessage("updateLista()" + ex.getLocalizedMessage());
       }
       return false;
   }

AVBravo - July 26, 2013 07:35 PM
DataClassG v2.46 ajustes pickList

En la versión DataClassG v2.46,  genera el managedBeans  para utilizar <p:pickList>
http://plugins.netbeans.org/plugin/39424/?show=true
Se genera el paquete pick, y los ManagedBeans correspondientes



Genera automáticamente el converter MyConverter.java


Solo necesitas implementar en el .xhtml el código correspondiente

   <h:form id="formsprintmeetingasistentesInsert"  rendered="#{menuBeans.sprintmeetingasistentesCrear}">
                 <p:growl id="growl" life="1500" /> 

                    <p:pickList id="pickList1" value="#{usuariosPick.usuariosPickList}" var="var"   
                                itemLabel="#{var.nombre}" itemValue="#{var}" effect="bounce"    
                                converter="MyConverter"
                                showSourceControls="true" showTargetControls="true" 
                                showSourceFilter="true" showTargetFilter="true" filterMatchMode="contains">  
                        <f:facet name="sourceCaption"><h:outputText value="#{mensajes['label.disponible']}" /></f:facet>
                        <f:facet name="targetCaption"><h:outputText value="#{mensajes['label.seleccionado']}" /></f:facet>


                        <p:column >
                            #{var.nombre}  
                        </p:column>
                        <p:column>
                            #{var.cedula}
                        </p:column>

                    </p:pickList>
                    <!--
                    <p:commandButton id="citySubmit" value="Dialogo" update=":formsprintmeetingasistentesInsert:displaySprint" oncomplete="sprintDialog.show()" style="margin-top:5px"/>  
-->
                    <p:commandButton update=":formsprintmeetingasistentesInsert:growl" value="Seleccionar" action="#{usuariosPick.procesarPickList('sprintmeetingasistentes')}"/> 



                    <p:dialog header="Seleccionados" modal="true" closable="false" showEffect="fade" hideEffect="fade" widgetVar="sprintDialog">  
                        <h:panelGrid id="displaySprint" columns="2">  
                            <!--
                              <h:outputText value="Source: " style="font-weight:bold"/>  
                              <ui:repeat value="#{usuariosPick.usuariosPickList.source}" var="item">  
                                  <h:outputText value="#{item}" style="margin-right:5px" />  
                              </ui:repeat>  
                            -->
                            <h:outputText value="Target: " style="font-weight:bold"/>  
                            <!--
                            <ui:repeat value="#{usuariosPick.usuariosPickList.target}" var="item">  
                                <h:outputText value="#{item}" style="margin-right:5px" />  
                            </ui:repeat>  
                            -->
                            <p:commandButton update=":formsprintmeetingasistentesInsert:growl" onclick = "cityDialogDialog.hide()" value="Mostrar" action="#{usuariosPick.procesarPickList()}"/> 
                        </h:panelGrid>  

                    </p:dialog>  
                </h:form>

En UsuariosPick.java ser genera el código para cargar el list. Podemos verlo en el método init()
  @PostConstruct
        public void init(){
//           ---udpate with your filter;
             selectAll();
             source = usuarioslist;
             usuariosPickList = new DualListModel<>(source, target);
        }


En el método procesarPickList(), se procesa los elementos seleccionados.






AVBravo - July 17, 2013 07:27 PM
DataClassG v2.45 soporte para p:PickList

DataClassG v2.45, genera el codigo para utilizar <p:pickList> directamente
http://plugins.netbeans.org/plugin/39424/?show=true

Genera automaticamente el converter MyConverter.java


Genera el código necesario en los ManagedBeans dentro del paquete Data(no tienes que codificarlo)


Solo necesitas implementar en el .xhtml el código correspondiente

                         
<h:form id="formsprintmeetingasistentesInsert"  rendered="#menuBeans.sprintmeetingasistentesCrear}">
                    <p:growl id="growl"  /> 
                  <p:pickList id="pickList1" value="#{usuariosData.usuariosPick}" var="var"   
                                itemLabel="#{var.nombre}" itemValue="#{var}" effect="bounce"    
                                converter="MyConverter"
                                showSourceControls="true" showTargetControls="true" 
                                showSourceFilter="true" showTargetFilter="true" filterMatchMode="contains">  
                        <f:facet name="sourceCaption">Available</f:facet>
                        <f:facet name="targetCaption">Selected</f:facet>


                        <p:column >
                            #{var.nombre}  
                        </p:column>
                        <p:column>
                            #{var.cedula}
                        </p:column>

                    </p:pickList>

                    <p:commandButton update=":formsprintmeetingasistentesInsert:growl" value="Seleccionar" action="#{usuariosData.procesarPickList()}"/> 
               
                </h:form>

Nota:
Proximamente se incorporada en JSFGenerator la generación automatica del codigo .xhtml del <p:pickList>



AVBravo - July 17, 2013 01:16 AM

Utilizar <p:pictList> con DataClassG y JSFGenerator

Al presionar el botón Dialogo se muestra un dialogo que invocara el proceso

Al dar clic en Seleccionar mostrar invocara el proceso

Codigo fuente del Converter 

Crear el Converter
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import org.mavenproject1.beans.Usuarios;
import org.primefaces.component.picklist.PickList;
import org.primefaces.model.DualListModel;

/**
*
* @author avbravo
*/
@FacesConverter(value = "primeFacesPickListConverter")
public class PrimeFacesPickListConverter implements Converter {
       @Override
       public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
           Object ret = null;
           if (arg1 instanceof PickList) {
               Object dualList = ((PickList) arg1).getValue();
               DualListModel dl = (DualListModel) dualList;
               for (Object o : dl.getSource()) {
                   String id = "";
                   if (o instanceof Usuarios) {
                       id += ((Usuarios) o).getUsername();
                   }

                   if (arg2.equals(id)) {
                       ret = o;
                       break;
                   }
               }
               if (ret == null)
                   for (Object o : dl.getTarget()) {
                           String id = "";
                           if (o instanceof Usuarios) {
                               id += ((Usuarios) o).getUsername();
                           }

                       if (arg2.equals(id)) {
                           ret = o;
                           break;
                       }
                   }
           }
           return ret;
       }

       @Override
       public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
           String str = "";
           if (arg2 instanceof Usuarios) {
               str = "" + ((Usuarios) arg2).getUsername();
           }

           return str;
       }

   
}







EN EL MANAGED BEANS UsuariosData.java
  • Crear un List<> para source y target
   List<Usuarios> source = new ArrayList<>();
   List<Usuarios> target = new ArrayList<>();
  • Crear un DualListModel
private DualListModel<Usuarios> usuariosPick;

   public DualListModel<Usuarios> getUsuariosPick() {
       return usuariosPick;
   }

   public void setUsuariosPick(DualListModel<Usuarios> usuariosPick) {
       this.usuariosPick = usuariosPick;
   }



  • En el metodo init cargar la lista en source y en el usuariosPick
 @PostConstruct
   public void init() {
//           ---udpate with your filter;
       selectAll();

       source = usuarioslist;
       usuariosPick = new DualListModel<>(source, target);
   }



  • Crear el metodo procesarPickList()
public String procesarPickList() {
       try {
           for(Usuarios u:usuariosPick.getTarget()){
              JSFUtil.addSuccessMessage("u1 ==="+u.getNombre()+ " "+u.getPassword());
           }
       } catch (Exception e) {
           JSFUtil.addErrorMessage(e.getLocalizedMessage());
       }
       return "";
   }



EN EL XHTML
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:ui="http://java.sun.com/jsf/facelets"
     xmlns:p="http://primefaces.org/ui"
     xmlns:f="http://java.sun.com/jsf/core"
     xmlns:h="http://java.sun.com/jsf/html">
   <h:body>

       <ui:composition template="./../../templates.xhtml">
           <!--
            <ui:define name="toformRenderedp">
               top
            </ui:define>
           -->
           <!--
            <ui:define name="left">
               left
            </ui:define>
           -->
           <ui:define name="content">
               <h:form id="formsprintmeetingasistentesInsert"  rendered="#{menuBeans.sprintmeetingasistentesCrear}">
                   <p:growl id="growl"  />
              



                   <p:pickList id="pickList1" value="#{usuariosData.usuariosPick}" var="var"   
                               itemLabel="#{var.nombre}" itemValue="#{var}" effect="bounce"    
                               converter="primeFacesPickListConverter"
                               showSourceControls="true" showTargetControls="true"
                               showSourceFilter="true" showTargetFilter="true" filterMatchMode="contains">  
                       <f:facet name="sourceCaption">Available</f:facet>
                       <f:facet name="targetCaption">Selected</f:facet>



                       <p:column >
                           #{var.nombre}  
                       </p:column>
                       <p:column>
                           #{var.cedula}
                       </p:column>

                   </p:pickList>
                   <p:commandButton id="citySubmit" value="Dialogo" update=":formsprintmeetingasistentesInsert:displayCities" oncomplete="cityDialog.show()" style="margin-top:5px"/>  
                   <p:commandButton update=":formsprintmeetingasistentesInsert:growl" value="Seleccionar" action="#{usuariosData.procesarPickList()}"/>




                   <p:dialog header="Seleccionados" modal="true" closable="false" showEffect="fade" hideEffect="fade" widgetVar="cityDialog">  
                       <h:panelGrid id="displayCities" columns="2">  
                           <!--
                             <h:outputText value="Source: " style="font-weight:bold"/>  
                             <ui:repeat value="#{usuariosData.usuariosPick.source}" var="item">  
                                 <h:outputText value="#{item}" style="margin-right:5px" />  
                             </ui:repeat>  
                           -->
                           <h:outputText value="Target: " style="font-weight:bold"/>  
                        <!--
                           <ui:repeat value="#{usuariosData.usuariosPick.target}" var="item">  
                               <h:outputText value="#{item}" style="margin-right:5px" />  
                           </ui:repeat>  
                           -->
                          
                             <p:commandButton update=":formsprintmeetingasistentesInsert:growl" onclick="confirmation.hide()" value="Dialogo" action="#{usuariosData.procesarPickList()}"/>
                           
                       </h:panelGrid>  

                   </p:dialog>  
               </h:form>

               <h:form rendered="#{!menuBeans.sprintmeetingasistentesCrear}">
                   <p:panelGrid columns="1">
                       <h:outputText value="#{mensajes['login.accesodenegado']}"/>
                       <h:outputText value="#{mensajes['login.accesodenegadoDetalle']}"/>
                       <p:commandButton action="#{loginBean.irLogin}" value="#{mensajes['boton.regresar']}" ajax="false"/>
                   </p:panelGrid>
               </h:form>
           </ui:define>
           <!--
            <ui:define name="bottom">
               Bottom
            </ui:define>
           -->
       </ui:composition>

   </h:body>
</html>


AVBravo - June 28, 2013 05:43 PM
Aplicar filtros a registros usando DataClassG y JSFGenerator

Aplicar Filtros a Registros usando DataClassG y JSFGenerator
Filtrar los registros de departamentos en base a la organización del usuario que se logueo en el sistema.




Tablas

Crear un ManagedBean llamado DatosSession y colocar el atributo por el cual deseamos filtrar los registros en base al usuario que se logea en la aplicación
Clase DatosSesion.java
@Named(value = "datosSesion")
@SessionScoped
public class DatosSesion implements Serializable {
Integer idorganizacion;


   public DatosSesion() {
   }
   public Integer getIdorganizacion() {
       return idorganizacion;
   }
   public void setIdorganizacion(Integer idorganizacion) {
       this.idorganizacion = idorganizacion;
   }    
}



Clase LoginBean.java
Definimos el objeto DatosSesion y en el método verificarLogin() realizamos la asignación
DatosSesion datosSesion;
 public LoginBean() {
    ELContext elContext = FacesContext.getCurrentInstance().getELContext();
    datosSesion = (DatosSesion) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "datosSesion");
   }


public String verificarLogin(){
datosSesion.setIdorganizacion(usuarios.getIdorganizacion());



En el ManagedBeans DepartamentoServices.java
Creamos un objeto de DatosSesion, colocamos el valor en la propiedad del managedbean departamento en el método insert(), en el método loadItems() comentamos el selectAll() y lo reemplazamos por un query con el filtro, y en el método  selectAll()  comentamos  if(departamentoController.selectAll()){  y lo reemplazamos por un query con el filtro.


DatosSesion datosSesion;


public DepartamentoServices(){
    ELContext elContext = FacesContext.getCurrentInstance().getELContext();
  departamentolist = new ArrayList<>();
   datosSesion = (DatosSesion) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "datosSesion");
}


@Override
public Boolean insert() {
try{
 departamento.setIdorganizacion(datosSesion.getIdorganizacion());


public List<SelectItem> loadItems() {
try {
  //  selectAll();
    query("idorganizacion='"+datosSesion.getIdorganizacion()+"'");


 @Override
   public Boolean selectAll() {
 // if(departamentoController.selectAll()){
      if (departamentoController.query("idorganizacion='" + datosSesion.getIdorganizacion() + "'")) {
            departamentolist = departamentoController.getDepartamentolist();
        }



En ManagedBeans  DepartamentosData
Creamos un objeto de DatosSesion, colocamos el valor en la propiedad del managedbean departamento en el método init(), insert(), en el método loadItems() comentamos el selectAll() y lo reemplazamos por un query con el filtro, y en el método  selectAll()  comentamos  if(departamentoController.selectAll()){  y lo reemplazamos por un query con el filtro.
DatosSesion datosSesion;
public DepartamentoServices(){
    ELContext elContext = FacesContext.getCurrentInstance().getELContext();
  departamentolist = new ArrayList<>();
   datosSesion = (DatosSesion) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "datosSesion");
}
   @PostConstruct
   public void init() {
//           ---udpate with your filter;
      // selectAll();
       query("idorganizacion='"+datosSesion.getIdorganizacion()+"'");
   }


@Override
public Boolean insert() {
try{
 departamento.setIdorganizacion(datosSesion.getIdorganizacion());



public List<SelectItem> loadItems() {
try {
  //  selectAll();
    query("idorganizacion='"+datosSesion.getIdorganizacion()+"'");



  @Override
   public Boolean selectAll() {
       try {
           if (departamentolist != null) {
               departamentolist.removeAll(departamentolist);
           }
         //  if (departamentoController.selectAll()) {            
           if (departamentoController.query("idorganizacion='"+datosSesion.getIdorganizacion()+"'")) {
               departamentolist = departamentoController.getDepartamentolist();
           }
Select de todos los registros



Los componentes <p:dataTable se utilizan con la clase DepartamentosData
Imagen de los departamentos pertenecientes a la Organizacion A


Imagen de los departamentos pertenecientes a la Organizacion A


Formulario de insertar registros no se muestra el atributo idorganizacion ya que este se inserta directamente en base al usuario logueado.

AVBravo - June 11, 2013 01:22 PM
JSFGenerator versión 0.36

JSFGenerator versión 0.36
http://plugins.netbeans.org/plugin/39439/?show=true


AVBravo - May 29, 2013 03:33 PM
Wizard con NetBeans Platform en el Menu New de NetBeans

Crear un nuevo proyecto:
Categoría: NetBeans Modules Projects:Module


Indicamos el nombre
Indicar el Code Name Base

Clic derecho en el proyecto y seleccionar New-->Wizard

Wizard Type seleccionar New File y especificamos la cantidad de paginas

Asignamos el nombre de la clase , la categoría, y seleccionamos una imagen

El IDE crea el esqueleto del proyecto

Arrastramos algunos componentes al panel JSFGenVisualPanel1 desde la paleta

En el otro panel JSFGenVisualPanel2

en las propiedades del proyecto cambiamos el numero de versión


Creamos el NBM del proyecto y lo instalamos 




y seleccionamos el proyecto y  al seleccionar nuevo en la categoría Web que seleccionamos aparece nuestro wizard.


Se muestra el dialogo el primer panel

si presionamos el botón Next se mostrara el siguiente panel











AVBravo - May 28, 2013 09:06 PM
Tutorial de IReport con NetBeans y DataClassG

Tutorial de IReport con NetBeans y DataClassG
PARA PROYECTOS ANT Y MAVEN
Descargar el plugin desde NetBeans




Instalamos el plugin para NetBeans



Carga el icono en el el ide










AGREGAR EL JAR DE UN PROYECTO ANT



Clic derecho y selecionar Clean and Build



En el Menú de NetBeans seleccionar Herramientas->Tools->Option->iReport ->Classpath



Agregar JAR en proyectos ANT




AGREGAR EL JAR DE UN PROYECTO MAVEN
Seleccionar Build with Dependencies





Se genera el archivo jar en el directorio target

En el Menú de NetBeans seleccionar Herramientas->Tools->Option->iReport ->Classpath





Seleccionamos el archivo jar



archivo







LIBRERÍAS PARA PROYECTOS ANT
Obtener las librerías de iReport y Jaspert
Descomprimimos el archivo, y nos ubicamos en el directorio
iReport-4.1.1->ireport->modules->ext
y seleccionamos
commons-beanutils-1.8.2.jar
commons-collections-3.2.1.jar
commons-digester-1.7.jar
commons-javaflow-20060411.jar
commons-logging-1.1.jar
iText-2.1.7.jar
jasperreports-4.1.1.jar
jcommon-1.0.15.jar
jdt-compiler-3.1.1.jar
jfreechart-1.0.12.jar


y lo copiamos a un directorio llamado jasperReport para usarlos como librerías en NetBeans
Ahora creamos un proyecto Nuevo

Ahora en NetBeans seleccionamos Tools->Libraries

presionar el botón New Library

indicamos el nombre: jasperReport

Damos clic en el botón Ok y luego en
Seleccionamos los jar


Seleccionamos propiedades del proyecto y  agregamos los drivers de MySQL ,JaspertReports y el jar del proyecto de persistencia
.



Librería agregadas

DEPENDENCIAS PARA MAVEN

Ubicarse en Dependencias, clic derecho seleccionar Add Dependency...

En Query colocamos itext
Group id: com.lowagie
Artifact ID: itext

Query: commons-loggin

Query jasperreports




Query: jfreechart
Query: commons-collections



Diseñar el Reporte
Creamos un paquete nuevo para almacenar los reportes. org.testapplication.reportes





Nuevo->Report->Empty report






Colocamos el nombre usuarios






Diseñador



seleccionamos en la pestaña Reportes ->Reportes->Edit Query




















Seleccionar JavaBean DataSource-> en Class name colocar el nombre del beans correspondiente al proyecto de persistencia.

En este ejemplo org.testpersistence.beans.Usuarios y presionar el
botón Read attributes y seleccionar los atributos cedula y nombre y presionar el botón Add selected field(s), de manera que aparezcan en la parte inferior.


Ahora se muestran los campos

Arrastramos a la banda de Detalles

Ahora compilamos el reporte
 

Se genera el archivo usuarios.jasper



Agregar los import

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
import org.data.generales.Mensajeria;

Invocamos el Reporte
           HashMap map = new HashMap();
           Usuarios usuarios = new Usuarios();
           UsuariosController uc = new UsuariosController();
           if (uc.selectAll()) {
             Imprimir(uc.getUsuarioslist(), map);
           } else {
               System.out.println(" no se puede listar");
           }

Creamos el método Imprimir()

private void Imprimir(List<Usuarios> aux, HashMap map) throws JRException {
     try {
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(aux);
//Indicamos la ruta del reporte
                InputStream reporte = (InputStream) getClass().getResourceAsStream("/org/testapplication/reportes/usuarios.jasper");
                if (reporte == null) {
                    Mensajeria.Mensaje("No se pudo cargar el reporte");
                } else {
                    JasperPrint print = JasperFillManager.fillReport(reporte, map, ds);
                    JasperViewer.viewReport(print, false);
               }
       } catch (Exception ex) {
              Mensajeria.MensajeError(ex, "Imprimir()");
       }
   }

Reporte

Recomendaciones:
1. Limpie el proyecto
2. Compile nuevamente el reporte cuando realice cambios.
3. Campos con ancho de 74. (Width 74) muestran 987654321.10



Formatearlo a dos decimales Pattern ###0.00



Agregando Parámetros




Cambiamos el nombre al parametro: p_entidad
Nota: usar p_nombredeparametr
o

Parametro creado








Arrastramos el parámetro al diseñador

Estos parámetros son agregados al HashMap
try {
         HashMap map = new HashMap();
           map.put("p_entidad", SesionLocal.getEntidad());
           Usuarios usuarios = new Usuarios();
           UsuariosController uc = new UsuariosController();
           if (uc.selectAll()) {
             Imprimir(org.facilscrum.beans, map);
           } else {
               System.out.println(" no se puede listar");
           }




o si deseamos pasar un solo registro en el reporte lo agregamos directamente.
HashMap map = new HashMap();
List<Usuarios> list= new ArrayList();
usuarios.setCedula(“7-117-816”);
usuarios.setNombre(“Aristides”);
list.add(usuarios);
       Imprimir(list, map);

       } catch (Exception ex) {
           Mensajeria.MensajeError(ex, "Imprimir()");
       }

 



AVBravo - May 25, 2013 06:29 PM
Crear un Wizard con NEtBeans Platform

Crear un Wizard con NEtBeans Platform 
Explicare el procedimiento para crear wizard de manera sencilla con NetBeans Platform
1.Crear un nuevo proyecto
Categoria: NetBeans Modules
Projects: Module



2. Indicar el nombre y seleccionar Standalone Module


3.Code Name Base indicamos org.avbravo.asistente


4.Se genera el esqueleto del proyecto


5.Clic derecho en el proyecto seleccionar New-> Wizard


6. En el dialogo Wizard Type seleccionar Custom
   indicamos el numero de paneles

7. Escribir el nombre


8. Se crean los paneles y podemos arrastrar componentes desde la paleta




9. Editamos la clase generadorWirzardAction.java

quitamos los comentarios e indicamos la posicion donde deseamos que se muestre


10.Creamos en NBM
   Clic derecho en el proyecto y seleccionar Create NBM
11.Instalarlo en el IDE
Tools->Plugins


12. Se muestra el elemento

13.Se muestra el wizard




AVBravo - May 25, 2013 03:57 PM
Desarrollo de Aplicaciones Web NetBeans(JSF,DataClassG, JSFGenerator) Parte 4

Desarrollo de Aplicaciones Web NetBeans(JSF,DataClassG, JSFGenerator) Parte 4

Ahora seleccionamos en el toolbar del IDE


Dar clic en el icono JSFGenerator


Seleccionar  el proyecto
establecemos el formato de las fechas y horas.

Seleccionar la plantilla, y permite reemplazar el template.xhtml, index.xhtml, menu.xhtml., cuando se ejecuta el plugin nuevamente.


seleccionamos las paginas a generar o reemplazar
Indicar la cantidad de filas en el datatable, y los eventos a realizar Ajax.


Seleccionar la version de primefaces, el tema , el tipo de menu, el tipo de mensajes growl o messages, el tiempo de duración , si deseamos generar el growl o message en el template o en cada pagina.
Tambien definimos el tamaño de los dialogos y el ambiente del proyecto.


Se generan las paginas .xhtml

ejecutamos el proyecto


se muestra en el ide ingresamos username = test password= test si no hemos especificado una tabla de usuarios, si tenemos la tabla establecida, utilizamos los datos del usario correspondiente.

al ingresar se habilita el menú

dar clic en Registros, se muestra el datatable




clic en el botón + para agregar un nuevo registro

se muestra el dialogo


registramos los datos


dar clic en el registro deseado y se habilita las opciones de edición o eliminación.




























AVBravo - March 22, 2013 03:09 PM
Desarrollo de Aplicaciones Web NetBeans(JSF,DataClassG, JSFGenerator) Parte 3


Desarrollo de Aplicaciones Web NetBeans(JSF,DataClassG, JSFGenerator) Parte 3

Generar las clases con DataClassG
DataClassG, gestionar todas las operaciones sobre la base de datos, generando las clases, y controladores necesarios para realizar C.R.U.D.
Descargar el plugin DataClassG desde



e instalarlo en NetBeans IDE, se mostrará el icono del plugin

Agregar la base de datos a Servicios  de NetBeans.
Creamos una base de datos llamada scrum en el motor MySQL
Desde NetBeans, Services->Drivers->MySQL(Connector/J driver)



dar Clic derecho y seleccionar Connecting using...

Se muestra la conexión a la base de datos


Seleccionar el proyecto y dar clic en el icono



Seleccionar el proyecto y la conexión

indicar  el alcance de los Beans, Controller, Persistencia.
Seleccionar si se usar  @Inject, y si se desea reemplazar la clase LoginBean.java





Se generar los paquetes

paquetes

  • anotaciones
  • beans
  • controller
  • data
  • generales
  • interfaces
  • menu
  • persistencia
  • services

AVBravo - March 18, 2013 05:11 PM
Desarrollo de Aplicaciones Web NetBeans(JSF,DataClassG, JSFGenerator) Parte 2

Desarrollo de Aplicaciones Web NetBeans(JSF,DataClassG, JSFGenerator) Parte 2
Se mostrara como configurar el proyecto Web con NetBeans
Ahora seleccionamos Dependencias


clic derecho y seleccionar Agregar dependencias



escribimos mysql y seleccionamos mysql:mysql-connector-java y buscamos la versión a utilizar
se agrega la dependencia



ahora agregamos los temas de primefaces. primefaces all-themes


Dependencias






Otras dependencias para Exportar a pdf desde primefaces
itext  2.1.7


apache poi 3.8



commons-fileupload 




Dependencias agregadas


Editar el archivo pom.xml



Ajustamos las dependencias de maven
<dependency>
           <groupId>org.primefaces</groupId>
           <artifactId>primefaces</artifactId>
           <version>3.4</version>
       </dependency>

por la versión 3.5
<dependency>
           <groupId>org.primefaces</groupId>
           <artifactId>primefaces</artifactId>
           <version>3.4</version>
       </dependency>


Dar clic en el nombre del proyecto, y seleccionar Build


Se descarga el jar primefaces-3.5.jar


commons-io



commons-fileupload




Listado de dependencias



AVBravo - March 16, 2013 03:45 PM
Desarrollo de Aplicaciones Web NetBeans(JSF,DataClassG, JSFGenerator) Parte 1

Desarrollo de Aplicaciones Web NetBeans(JSF,DataClassG, JSFGenerator) Parte 1
Se mostrara la creación de un proyecto Web con NetBeans y establecer la configuración basica
Desde NetBeans creamos un proyecto nuevo en Categorias seleccionamos Maven y en Proyectos Web Application


indicar el nombre del proyecto


Seleccionar el Servidor GlassFish






Propiedades del proyecto


Project Properties: facilscrumjsf

Fuentes
Formato de fuentes/binarios: 1.7





Configuraciones , seleccionar configuración predeterminada y presione el botón Activar


Frameworks

Presionar el boton Add..
Seleccionar Java Server Faces



Framework agregado



y en componentes Primefaces


Se genera el esqueleto del proyecto







AVBravo - February 21, 2013 03:12 PM
NetBeans 7.3 Disponible

Ya esta disponible la versión de NetBeans 7.3
http://netbeans.org/kb/docs/ide/overview-screencast.html

AVBravo - January 28, 2013 08:31 PM
NetBeans IDE 7.3 Release Candidate 1

NetBeans IDE 7.3 Release Candidate 1, ya esta disponible para descarga

Es una buena oportunidad para probar lo que traera el IDE en la proxima versión.

AVBravo - January 27, 2013 06:11 PM
Crear un jar con dependencias en NetBeans con Maven

Fuente:
http://maven.apache.org/plugins/maven-assembly-plugin/usage.html


Creamos un proyecto Maven con NetBeans



Proyecto 

Listado las las dependencias que contiene este proyecto


Agregamos Dependencias maven-assembly-plugin
 seleccionar Add Dependency..

Agregar
maven-assembly-plugin



Editamos el archivo pom.xml, 
agregamos el plugin maven-assembly-plugin. especificamos la clase principal      <mainClass>org.javscaz.tallersoft.App</mainClass>

 <build>
        <plugins>
        <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
           <archive>
            <manifest>
              <mainClass>org.javscaz.tallersoft.App</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
     
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
    </build>
 
En el proyecto seleccionar construir con dependencias

Se genera el jar que se agregara al repositorio Maven y el archivo jar que contendrá todas las dependenecias.
Archivo jar generado

en las propiedades del proyecto indicamos el numero de versión

Solo necesitamos copiar a la carpeta el archivo .jar ya que contiene todas las dependencias








AVBravo - January 26, 2013 02:09 AM
Incluir archivos properties en proyectos maven

Para incluir los archivos properties en el archivo .jar, generado agregamos al archivo pom.xml
<build>
<resources>
<resource>
      <directory>src/main/java</directory>
      <excludes><exclude>**/*.java</exclude></excludes>
    </resource>
 </resources>
</build>

AVBravo - January 23, 2013 03:17 AM
Corregir el error el archivo de manifiesto en proyectos maven

Corregir el error en el archivo de manifiesto en proyectos maven
Si creamos un proyecto maven con NetBeans e intentamos ejecutarlo encontraríamos el siguiente error


Agregamos el plugin   <artifactId>maven-jar-plugin</artifactId>


 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>org.javscaz.maven1.App</mainClass>
                        </manifest>                      
                    </archive>
                </configuration>
            </plugin>



Luego al construir el proyecto con dependencias, podemos ejecutar el .jar





AVBravo - January 23, 2013 02:34 AM
Empaquetar dependencias de maven

Cuando desarrollamos un proyecto Maven, se generara el archivo .jar o .war segun el tipo de proyectos


archivo generado, en la carpeta target


Para distribuir este archivo necesitamos agregar las dependencias. para esto utilizamos el plugin

Editamos el archivo pom.xml

Copiamos en la seccion <build> </build>
  <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


Construimos el proyecto con dependencias

Se genera la carpeta lib donde se copiaran las dependencias.





















AVBravo - January 12, 2013 11:14 PM
JavscazGChat v2.0.0

Esta disponible la versión 2.0.0 de javscazGChat , el plugin que permite establecer comunicación por chat para los usuarios de gmail desde NetBeans.
Este versión corrige el problema al limpiar los mensajes , agrega el avatar del usuario cerca del mensaje para identificar rápidamente el usuario actual.
Se valida si el usuario esta conectado o no para enviarle mensajes.
Se puede descargar desde
http://plugins.netbeans.org/plugin/39307/?show=true




Listado de contactos

Ventana de chat