Wednesday, December 12, 2012

Leer dbf desde Java

Cuando necesites leer bases de datos de Foxpro desde Java, mi amigo Diego Silva creo hace un tiempo una librería muy útil para comunicarnos con los archivos dbf
http://www.apuntesdejava.com/2007/09/dbf-2-java-library.html

Descargamos el archivo .jar  desde https://code.google.com/p/dbf2java-library/
Agregamos el jar al proyecto, y seguimos los siguientes pasos

 public static void main(String[] args) throws IOException {
       try {
           // TODO code application logic here
           DbfFile bfile;
      bfile = new DbfFile("/home/avbravo/empresas.dbf");
// abrir el archivo
           bfile.open();
          System.out.println(" contador " + bfile.getCount());
//recorrer los registros
           for (int i = 0; i < bfile.getCount(); i++) {
//colocar el cursor en el registro
               bfile.go(i);
               Map<String, String> map = bfile.scatter();
               Iterator it = map.keySet().iterator();

               while (it.hasNext()) {
                   // Get Clave
                   String clave = (String) it.next();
                   String valor = map.get(clave);
                   System.out.println(clave+ " --> "+valor);

                 

               }
           }
       } catch (FileNotFoundException ex) {
           Logger.getLogger(Foxpro.class.getName()).log(Level.SEVERE, null, ex);
       }

   }


Wednesday, October 03, 2012

Monday, October 01, 2012

JUnit con DataClassG

JUnit con DataClassG
0. ESQUEMA




Services:

Por cada beans crearemos una clase Services que se encargará de interactuar con el controller para realizar las operaciones de la base de datos.
Se crearan los métodos insert, update,delete y los demas metodos para realizar las diversas operaciones.

Test:
Se crearán las clases para test de las clases Services.

Form:
Los formularios para la interactuar con el usuario.
ProvinciasServices.java colocamos los métodos, insert, update,delete

public class ProvinciasServices {
   ProvinciasController provinciasController = new ProvinciasController();

   public ProvinciasServices() {
   }
   public Boolean insert(Provincias provincias){
       try{
           if(provinciasController.insert(provincias)){
             return true;
           }else{
               Mensajeria.MensajeWarning(provinciasController.getMensaje(), "insert()");
           }
        } catch (Exception ex) {
           Mensajeria.MensajeError(ex,"insert()");
       }
       return false;
   }
   
   public Boolean update(Provincias provincias){
       try{
           if(provinciasController.update(provincias)){
             return true;
           }else{
               Mensajeria.MensajeWarning(provinciasController.getMensaje(), "update()");
           }
        } catch (Exception ex) {
           Mensajeria.MensajeError(ex,"update()");
       }
       return false;
   }
   


   public Boolean delete(Provincias provincias){
       try{
           if(provinciasController.delete(provincias)){
             return true;
           }else{
               Mensajeria.MensajeWarning(provinciasController.getMensaje(), "delete()");
           }
        } catch (Exception ex) {
           Mensajeria.MensajeError(ex,"delete()");
       }
       return false;
   }
}

Ahora creamos el test a partir de la clase existente.
Antes de crear la clase en el paquete pruebas seleccionar JUnit Test, y en categorías Test for 
Existing Class



Seleccionamos la clase
Clase de test generada

Se generan los métodos con la palabra test al inicio

public class ProvinciasServicesTest extends TestCase {
      public ProvinciasServicesTest(String testName) {
       super(testName);
   }
   
   @Override
   protected void setUp() throws Exception {
       super.setUp();
   }
   
   @Override
   protected void tearDown() throws Exception {
       super.tearDown();
   }
   /**
    * Test of insert method, of class ProvinciasServices.
    */
   public void testInsert() {
       System.out.println("insert");
       Provincias provincias = null;
       ProvinciasServices instance = new ProvinciasServices();
       Boolean expResult = null;
       Boolean result = instance.insert(provincias);
       assertEquals(expResult, result);
       // TODO review the generated test code and remove the default call to fail.
       fail("The test case is a prototype.");
   }

   /**
    * Test of update method, of class ProvinciasServices.
    */
   public void testUpdate() {
       System.out.println("update");
       Provincias provincias = null;
       ProvinciasServices instance = new ProvinciasServices();
       Boolean expResult = null;
       Boolean result = instance.update(provincias);
       assertEquals(expResult, result);
       // TODO review the generated test code and remove the default call to fail.
       fail("The test case is a prototype.");
   }
   /**
    * Test of delete method, of class ProvinciasServices.
    */
   public void testDelete() {
       System.out.println("delete");
       Provincias provincias = null;
       ProvinciasServices instance = new ProvinciasServices();
       Boolean expResult = null;
       Boolean result = instance.delete(provincias);
       assertEquals(expResult, result);
       // TODO review the generated test code and remove the default call to fail.
       fail("The test case is a prototype.");
   }
}

Agregar debajo de la definición de la clase
   DataGManager dataGManager = new DataGManager();
       Connection OpenConnection = dataGManager.OpenConnection();
Esto es para utilizar DataGManager




Ahora comentados todos las instrucciones fail de todos los métodos
comentados

En el  método testInsert()
En la línea   Boolean expResult = null; indica el valor de retorno del método
esperamos que el método insert() devuelva true.asíi que colocamos el valor que esperamos que retorne el método si la operación fue exitosa
Boolean expResult = true;

public void testInsert() {
       System.out.println("insert");
       Provincias provincias = null;
       ProvinciasServices instance = new ProvinciasServices();
       Boolean expResult = null;
       Boolean result = instance.insert(provincias);
       assertEquals(expResult, result);
       // TODO review the generated test code and remove the default call to fail.
      // fail("The test case is a prototype.");
  }

Localizamos el objeto provincias
Provincias provincias = null;
usamos el operador new al objeto provincias
Provincias provincias = new Provincias();

y le asignamos valores al objeto que será pasado al método insert
provincias.setProvincia("Los Santos");
        provincias.setIdprovincia("7");

Quedaría de la siguiente manera
 public void testInsert() {
       System.out.println("insert");
       Provincias provincias = new Provincias();
        provincias.setProvincia("Los Santos");
        provincias.setIdprovincia("7");
       ProvinciasServices instance = new ProvinciasServices();
       Boolean expResult = true;
       Boolean result = instance.insert(provincias);
       assertEquals(expResult, result);
       // TODO review the generated test code and remove the default call to fail.
      // fail("The test case is a prototype.");
   }

Ajustamos los métodos update y delete.


Clase terminada

public class ProvinciasServicesTest extends TestCase {
   
   public ProvinciasServicesTest(String testName) {
       super(testName);
   }
   
   @Override
   protected void setUp() throws Exception {
       super.setUp();
   }
   
   @Override
   protected void tearDown() throws Exception {
       super.tearDown();
   }

   /**
    * Test of insert method, of class ProvinciasServices.
    */
   public void testInsert() {
       System.out.println("insert");
       Provincias provincias = new Provincias();
        provincias.setProvincia("Los Santos");
        provincias.setIdprovincia("7");
       ProvinciasServices instance = new ProvinciasServices();
       Boolean expResult = true;
       Boolean result = instance.insert(provincias);
       assertEquals(expResult, result);
       // TODO review the generated test code and remove the default call to fail.
      // fail("The test case is a prototype.");
   }

   /**
    * Test of update method, of class ProvinciasServices.
    */
   public void testUpdate() {
       System.out.println("update");
       Provincias provincias = new Provincias();
      provincias.setProvincia("Los Santos.");
        provincias.setIdprovincia("7");
       ProvinciasServices instance = new ProvinciasServices();
       Boolean expResult =true;
       Boolean result = instance.update(provincias);
       assertEquals(expResult, result);
       // TODO review the generated test code and remove the default call to fail.
      // fail("The test case is a prototype.");
   }

   /**
    * Test of delete method, of class ProvinciasServices.
    */
   public void testDelete() {
       System.out.println("delete");
       Provincias provincias = new Provincias();
        provincias.setIdprovincia("7");
       ProvinciasServices instance = new ProvinciasServices();
       Boolean expResult = true;
       Boolean result = instance.delete(provincias);
       assertEquals(expResult, result);
       // TODO review the generated test code and remove the default call to fail.
     //  fail("The test case is a prototype.");
   }
}


Ejecutamos el test




Podemos ver el resultado del test


No pasó el testInsert(), Indica que no se insertó, ya que había un registro con ese idprovincia en la tabla,testDelete no lo paso ya que el registro estaba relacionado u otra situación indicandonos que debemos revisar esos métodos.


Otra prueba del test, funciono el metodo testInsert, indicando que se inserto el registro, pero no lo puedo eliminar ni actualizar.

Si se ejecutan las pruebas nuevamente

si el test falla se enviaran mensajes de dialogo como este, esto puede ser un inconveniente si deseamos usar un sistema de integración continua.  Más adelante mostraremos la otra forma de hacerlo.


La ventaja de usar el Warning en el controller es que el invocar el services no tendríamos que generar estas advertencias en el método que realiza el llamado.
En la clase donde se invoca sólo usaríamos el siguiente código.


Tuesday, September 25, 2012

DataClassG+JSF+Primefaces Dataexplorer

Creamos un proyecto Web Maven desde NetBeans
Agregar las depedencias itext, apache poi

En el codigo .xhtml
 <p:dataTable id="tblReservacion" var="var1" value="#{reservacionServices.reservados}" paginator="true"
                                     rows="35" 
                                     selection="#{talleresController.selectedTalleres}"  
                                     >
                            <p:column>

                                <f:facet name="header">
                                    <h:outputText value="#{mensajes.prioridad}" />
                                </f:facet>
                                <h:outputText value="#{var1.prioridad}" />
                            </p:column>

                            <p:column>
                                <f:facet name="header">
                                    <h:outputText value="#{mensajes.taller}" />
                                </f:facet>
                                <h:outputText value="#{var1.talleres.taller}" />
                            </p:column>
                           

                        </p:dataTable>
                        <f:facet name="footer">
                            <p:commandButton action="#{loginServices.logout}" value="Salir" ajax="false"/>
                            <h:commandLink>  
                                <p:graphicImage value="/resources/imagenes/botones/pdf.png" />  
                                <p:dataExporter type="pdf" target="tblReservacion" fileName="reservacion"/>  
                            </h:commandLink>  
                        </f:facet>
                    </p:panelGrid>


Podemos imprimir el contenido de la tabla

Thursday, September 20, 2012

Felicidades a Pack Publishing

En esta ocasión no escribo sobre Java o NetBeans, directamente , pero si lo hago para felicitar a nuestros amigos de Packt http://www.packtpub.com/ 
Quienes han publicado libros sobre IT de gran calidad, y se acercan a los 1000 títulos publicados prontamente.

Una gran colección de libros sobre Java
Sin duda una editorial que ha colaborado mucho con Open Source.






Wednesday, September 19, 2012

JUnit con DataClassG

Para realizar los test de JUnit con DataClassG en  NetBeans, tenemos varias alternativas.
Tenemos el proyecto rigemapi que contiene los beans, generados

Ahora en el proyecto principal
copiamos el paquete org.rigemapi.properties con sus archivos


Creamos nuestro clase de test con JUnit para comprobar un usuario y password de la tabla usuarios.


la clase test para validar el usuario y password


Ejecución






Tuesday, September 11, 2012

Actualizar la version libreria en maven local

Actualizar la version libreria en maven local
Proyecto:rigemapi


En las propiedades del proyecto, cambiamos el numero de versión

ejecutamos Build with Dependencies

En el otro proyecto

en Dependencias, se muestran la nueva versión y seleccionamos la versión actualizada


Monday, September 10, 2012

Agregar nuestro jar al repositorio local de Maven desde NetBeans

Tenemos un proyecto maven

dar clic derecho seleccionar Buid with Dependecies

esto hara que el jar se almacene en el directorio .m2 de maven.
y en la carpeta target del proyecto


En el otro proyecto seleccionamos Dependencias-> Agregar dependencias

y nos aparece la dependencia.




Thursday, September 06, 2012

Apache Maven con NetBeans

INSTALAR MAVEN
  • Descargarlo desde
http://maven.apache.org/download.html
descomprimir el archivo y copiarlo en /home/avbravo

  • Editar profile
sudo gedit /etc/profile
Agregar
export MAVEN_HOME=/home/avbravo/apache-maven-3.0.4
export PATH=$PATH:${MAVEN_HOME}/bin


Verificar la versión de maven con
mvn –version


En NetBeans
Crear un nuevo proyecto. 
Categorías: Maven
Proyectos: Web Application


Indicamos el nombre del proyecto, el id del grupo

Servidor: Seleccionamos GlassFish Server


Tenemos el esqueleto del proyecto creado
En propiedades del proyecto. Seleccionamos las diversas categorías

Fuentes
 Seleccionamos la versión del JDK que estemos usando

En Configuraciones. 
Seleccionar < configuración predeterminada> y dar clic en Activar

Frameworks
Dar clic en el botón Add, y seleccionar Java Server Faces
En componentes  seleccionar PrimeFaces

Podemos agregar las dependencias desde Maven
En el proyecto. Dar clic derecho en Dependencias y escoger Agregar dependencias

En la pestaña Buscar, y en la casilla de Consulta: escribimos mysql, y seleccionamos el mysql connector


Observamos que el driver se agrego al proyecto


Ejecutamos el proyecto




Entrevista con Geovany Mendoza

Entrevista con Geovany Mendoza En esta ocasión continuamos con las entrevistas a miembros importantes de la comunidad Java, la realizare ...