Fetishcode…Thinking in objects

Thinking in objects

Archivo para la categoría "ADF"

Integración de JasperReports en ADF.

sin comentarios

En este post explicaremos como poder lanzar los reports que hayamos diseñado con Ireport en nuestras aplicaciones de ADF.

public void launchReport(String reportName,Map params) {
 ExternalContext econtext = FacesContext.getCurrentInstance().getExternalContext();
 InputStream inputStream=null;

 try {
 inputStream = new FileInputStream(new File("/Reports/"+reportName);
 } catch (FileNotFoundException e) {System.out.println("Error al cargar el report");}

 FacesContext fcontext = FacesContext.getCurrentInstance();
 try {
   JRExporter exporter = null;
   JasperPrint jasperPrint =JasperFillManager.fillReport(inputStream, params, conn);
   HttpServletResponse response =(HttpServletResponse)econtext.getResponse();
   response.setHeader("Content-disposition", "attachment; filename=report.pdf");
   response.setContentType("application/x-download");
   response.addHeader("Content-Type", "application/x-download");

   exporter = new JRPdfExporter();
   exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
   exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,response.getOutputStream());

   if (exporter != null) {
     exporter.exportReport();
   }
 }catch (Exception ex) {System.out.println("---->"+ex);}
 fcontext.responseComplete();
 }

Nota: No hemos mostrado como obtener la conexión, para ello pueden mirar el siguiente post.

Escrito por fetishcode

Noviembre 8, 2009 a 7:09 pm

Escrito en ADF

Etiquetado con ,

ProcessScope o PageFlowScope

sin comentarios

En la versión 11g de la API de ADF, el método processScope ha sido deprecated.

Ahora se debe hacer uso del nuevo scope pageFlowScope.

pageFlowScope es un mapa de pares de nombres/valores donde los valores del parámetro de datos del flujo de tareas pueden guardarse mientras dure el flujo de tarea

Mas info:http://forums.oracle.com/

Escrito por fetishcode

Octubre 16, 2009 a 9:58 am

Escrito en ADF

Etiquetado con ,

Duplicación de Registros en LOV´s de ADF 11g.

sin comentarios

Trabajando con el componente inputListOfValues de ADF he visto que se duplicaban los registros al hacer un suggest o autocompletar.
El tema es que tenía una LOV(List Of Values ) típica de Código-Descripción donde la descripción era un campo tipo  Transient.

Hasta aquí todo normal, pero el tema es que se tenían comportamientos extraños a la hora de autocompletar y la LOV mostraba registros duplicados.

Bueno teniendo en cuenta que ya en JHS10g existían problemas con LOV´s que no eran PK, me ha dado por probar y efectivamente si ponemos que el campo del VO del cual hacemos la LOV sea “Key Attribute” problema solucionado.

Parece ser que es un bug reconocido en metalink y que será arreglado. Pero de momento que sepan que al hacer lovs necesitamos que el VO de la lov tenga una PK sino no se tiene un funcionamiento 100% correcto

Escrito por fetishcode

Octubre 15, 2009 a 12:18 pm

Escrito en ADF

Etiquetado con ,

Encoding UTF-8 en ADF Faces.

sin comentarios

En la versión actual de JDeveloper (11.1.1.1.0), las aplicaciones por defecto están codificadas en “windows-1252”. Codificación que nos dará problemas cuando tengamos textos con acentos en nuestra base de datos.

Afortunadamente esto se puede cambiar en cada una de las páginas, mediante la propiedad contentType.


<jsp:directive.page contentType="text/html;charset=utf-8"/>

O también podemos modificar las preferencias por defecto del IDE, para que de esta forma todas las aplicaciones que desarrollemos hagan uso de UTF-8 o de la codificación que queramos. Tal como explica didier.laurent en su blog.

Pues esta tontería es lo que me dio problemas, el otro día, durante varias horas.

Según informa didier.laurent en su blog, en la próxima versión de JDeveloper tendremos UTF-8 como charset por defecto.

Escrito por fetishcode

Octubre 8, 2009 a 5:01 pm

Escrito en ADF

Etiquetado con ,

Despliegue de Aplicaciones en ADF 11g.

sin comentarios

En las aplicaciones que hacemos en JDeveloper 11g,  a la hora de crear archivos de despliegue para nuestras aplicaciones observamos que la opción de EAR (Enterprise Application Archive) esta deshabilitada.

El origen de esto es porque cada Aplicación que construimos está formada  por varios Proyectos. En el caso de una aplicación de tipo  Fusion Web Application ADF tendremos como  mínimo dos proyectos (Model, ViewController).

Cada uno de estos proyectos debería estar desplegado en un WAR y estos agrupados a nivel de aplicación en un descriptor genérico de tipo EAR. El cual se crea a nivel de Aplicación.

Creación de EAR a nivel de Aplicación:

En Application Navigator nos posicionamos en el  combo donde se muestran las Aplicaciones.

Botón derecho–>Application Properties–>Deployment.

Mas info:

Escrito por fetishcode

Septiembre 22, 2009 a 7:41 am

Escrito en ADF

Etiquetado con ,

Cambiar splash de Cargando en ADF 11g.

con un comentario

Seguimos con el tema de Skining. En este artículo Fank Nimphius nos explica como poder cambiar la pagina de splash que trae por defecto ADF en su versión 11g. Esa imagen que sale al inicio de las aplicaciones con el texto: Cargando…

Afortunadamente se puede customizar desde el skin, por lo que tenemos gran libertad.

Estos son los selectores:

  • af|document::splash-screen-content
  • af|document::splash-screen
  • af|document::splash-screen-cell
  • af|document::splash-screen-icon

Mas info: Articulo de F.Nimphius donde explica como modifcar splash

Escrito por fetishcode

Septiembre 21, 2009 a 10:47 am

Escrito en ADF

Etiquetado con ,

Desarrollo de Skins en ADF 11g.

con un comentario

Para el desarrollo de Skins, JDeveloper nos aporta todo lo necesario para hacer de esta tarea una tarea cómoda y rápida.

Para ello deberemos tener marcado CheckADF Faces Extension En Tools–> Preferences–>CSS Editor

Esta opción habilitara en nuestros ficheros css de skins una serie de funciones o utilidades:

  • Syntax Help: ctrl+Space
  • Image selection
  • Code Completion: ctrl+Enter
  • Code Folding: Agrupación de definiciones e información Mouse-Over

Mas info:http://www.jdeveloperla.com/skins.pdf

Escrito por fetishcode

Septiembre 20, 2009 a 3:13 pm

Escrito en ADF

Etiquetado con ,

Claves alternativas en Adf 11g

sin comentarios

Una de las nuevas características o funcionalidades que aporta la API de ADF BC en la versión 11g, es el poder definir claves alternativas para VO´s y Entidades.

Esto  nos aporta un valor añadido a la hora de hacer búsquedas optimizadas mediante métodos como el findByAltKey, pero en campos que nos son PK  y que en tiempo de diseño  hemos marcado como Alternate Key.

De esta forma podemos definir como claves alternativas aquellos campos que por nuestras reglas de negocio o por cuestiones varias, no son PK  y seguir usando métodos especializados de búsquedas por clave.

Mas info: API findByAltKey

Escrito por fetishcode

Septiembre 17, 2009 a 7:46 pm

Escrito en ADF

Etiquetado con ,

ADF Faces Demo.Skinning

con un comentario

Hace algún tiempo comentábamos el lanzamiento de la demo de ADF faces 11g.

En esta demo podemos ver todos sus componentes y sobretodo podemos ver  en la pestaña de Skinning cada uno de los selectores disponibles para cada componente. La verdad que es una opción cómoda y rapida para crear nuestro propio Skin y saber que estilos y como los tenemos que aplicar.

Durante el dia de hoy la demo on-line que esta desplegada en Oracle no ha funcionado. Es por eso que desde aquí recomiendo que os bajéis el WAR y los despleguéis en un servidor o sino simplemente podemos crear un proyecto en JDeveloper desde un WAR, mediante la opción Project from WAR File (en tipos de proyectos)

Quizá esta ultima sea la forma mas rápida y cómoda

Más info: doc/demo/adf_faces_rc_demo.html

Escrito por fetishcode

Septiembre 14, 2009 a 10:07 pm

Escrito en ADF

Etiquetado con , ,

Obtener el label de un SelectOneChoice

sin comentarios

Muchas veces el label no se corresponde con el valor interno de un SelectOneChoice o Combo.

Aunque lo habitual es querer obtener el valor puede ser que en algun caso necesitemos obtener el label.

Aqui publico un codigo que cumple con dicho objetivo mediante el valueChangeListener del SelectOneChoice


public void cambioCombo(ValueChangeEvent valueChangeEvent) {

   //cogemos el objeto combo
   CoreSelectOneChoice csoc = (CoreSelectOneChoice) valueChangeEvent.getSource();
   List childList = csoc.getChildren();
   for (int i = 0; i < childList.size(); i++) {
     if (childList.get(i) instanceof  CoreSelectItem){
         CoreSelectItem csi = (CoreSelectItem) childList.get(i);
         if (((String)csi.getValue()).equals((String) valueChangeEvent.getNewValue()) ){
            // valor del label
           System.out.println("------------>"+csi.getLabel());
          }
     }
   }
}

Escrito por fetishcode

Septiembre 7, 2009 a 6:27 pm

Escrito en ADF

Etiquetado con ,