Etiqueta: eclipse

birt – add report border pattern

Screenshot from 2019-06-04 15-05-42

I was trying to add a border with a pattern in a report. As it happens, the easiest way to do this is to simply use a background image as recalled here.

First, let’s create our background image with the help of GIMP. Create a new image using the template US-Letter (300 ppp) and adjust the Advanced Settings to set a resolution of 72 ppp.

Screenshot from 2019-06-04 15-11-00

then add the pattern you would like to use. I just pasted an image and scaled it to fit the size of the page. You can use advanced image search from google to specify the size you are looking for 612×792 pixels in this case. You can optimize your image by removing the background and maybe specify a color palette or convert it to black and white and use GIF format, I didn’t need it though. Export the resulting image and copy it to your report project folder.

Screenshot from 2019-06-04 15-12-45

Screenshot from 2019-06-04 15-13-31

Finally, set this image as Background image in the Master Page of your report in the Advanced tab of the Property Editor. You may also want to set the Background size width to cover for a better fit.

Screenshot from 2019-06-04 15-16-04

Depending on the output the results would vary. In our case we only needed it in PDF format which dispplays just fine.

Anuncios

Ubuntu 13.04 – Lanzadores de aplicaciones Java

Cairo Dock es mi lanzador por defecto en las últimas versiones de Ubuntu que he instalado. Me agrada estéticamente y tiene varias funcionalidades.

Este, como otros lanzadores (AWN, Unity Launcher, Docky), tiene problemas con identificar correctamente las ventanas de las aplicaciones Java. De estas, las que utilizo principalmente son Eclipse y WebStorm. Pues me di a la tarea de como resolver este problema y poder poner mi lanzador directamente en la barra de Cairo Dock, pero te debe funcionar también con los otros.

Primero crea tu lanzador (archivo .desktop), por ejemplo para WebStorm

[Desktop Entry]
Type=Application
Name=Web Storm
Comment=Web Development IDE
Icon=/home/cirovladimir/Apps/web-storm-6.0.1/bin/webide.png
Exec=/home/cirovladimir/Apps/web-storm-6.0.1/bin/webstorm.sh
Terminal=false
Categories=Development;IDE;Java;
StartupWMClass=jetbrains-webstorm

La línea importante es la que dice StartupWMClass=jetbrains-webstorm.

Para obtener el valor correcto de esta variable para otras aplicaciones puedes ejecutar el comando

xprops | grep WM_CLASS

y dar clic en la ventana de la aplicación

Fuentes:

http://askubuntu.com/questions/36434/how-can-i-remove-duplicate-icons-for-launched-java-programs-in-the-launcher
https://bugs.launchpad.net/docky/+bug/484610

eclipse – reemplazar texto al autocompletar

Una de las características que nos ayuda a la hora de escribir código es, sin duda, la función de autocompletado. En la mayoría de editores que utilizo esta función me permite seleccionar métodos, clases o propiedades de forma rápida.

En el caso de los métodos, muchas veces el nombre tiene el mismo prefijo, getters y setters, o por ejemplo:

editAudiencia(audiencia);

y lo quiero cambiar a

editNewAudiencia(audiencia);

lo que tienes que hacer es posicionar el cursor justo al terminar el prefijo ‘edit’ y presionar CTRL+SPACE para ver las opciones. Para mi sorpresa, en Eclipse, al seleccionar el nuevo método me quedó algo así

editNewAudiencia(inicio, fin)Audiencia(audiencia);

cómo podemos observar, Eclipse por default inserta el código en vez de reemplazar el sufijo del método. Para cambiar esto, ve a las preferencias de Eclipse->Java->Editor->Content Assist y selecciona ‘Completion overwrites’

Fuentes:
http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftips%2Fjdt_tips.html

Java – Desarrollo en ambientes heterogéneos

git – saltos de línea CRLF

Si en tu equipo de trabajo utilizan computadoras con Windows y Linux (o Mac) para desarrollar, seguramente tendrán un problema con los saltos de línea. Git resuelve este problema mediante el parámetro de configuración ‘core.autocrlf’.

En las computadoras con Windows establece este parámetro en ‘true’ mediante el comando

git config –global core.autocrlf true

En las computadoras con Linux (Mac) debe ser falso (default).

CP-1252

Otro problema que se nos presentó, debido a este ambiente heterogéneo, fue la codificación de los proyectos. La codificacioón por default en Windows (en español) es CP-1252 mientras que Linux utiliza UTF-8. Para que nuestros proyectos Maven puedan ser compilados en ambas plataformas, es necesario agregar el siguiente parámetro de configuración al archivo pom.xml

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Fuentes:
git book
http://stackoverflow.com/questions/9976616/maven-platform-encoding

Maven – Línea de comandos demasiado larga

Tenemos un proyecto de GWT con multiples módulos organizados de forma jerárquica. Para la administración de las dependencias utilizamos Maven, además de que nos ayuda a generar el archivo WAR para instalarlo en un servidor de aplicaciones (JBoss).

Pues cuando intentamos compilar este proyecto en Windows, el plugin maven-datanucleus-plugin nos arrojó un error con un mensaje parecido al siguiente:

La línea de comandos es demasiado larga

Para corregirlo utilizamos la siguiente configuración en el archivo pom.xml

    <build></p><plugins><plugin>                <groupId>org.datanucleus</groupId>
                <artifactId>maven-datanucleus-plugin</artifactId>
                <version>${maven-datanucleus-plugin.version}</version>
                <configuration>
                    <fork>false</fork>
                    <log4jConfiguration>${basedir}/src/main/resources/log4j.properties</log4jConfiguration>
                    <verbose>true</verbose></p><props>${basedir}/src/main/resources/datanucleus.properties</props>                </configuration>
                <executions>
                    <execution></p><phase>process-classes</phase>                        <goals>
                            <goal>enhance</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>        </plugins>    </build>

Lo importante es agregar la opción fork

Fuentes:
http://stackoverflow.com/questions/8353855/the-command-line-is-too-long-standard-error-from-the-datanucleus-tool
https://issues.onehippo.com/browse/REPO-391
http://kindofjava.blogspot.mx/2011/06/java-classpath-via-maven-too-long.html

Eclipse – Mejorar el proceso de compilación en GWT

Las aplicaciones desarrolladas con GWT deben ser compiladas para generar el código javascript que se ejecutará en el navegador. Este proceso puede ser muy tardado.

Normalmente cuando desarrollamos nuestra aplicación, sólo debemos actualizar el navegador (F5) para ver los cambios que hemos hecho al código. Sin embargo, hay ocasiones que necesitamos recompilar el código para que los cambios se vean reflejados. En estos casos podemos especificar un sólo navegador -el que utilicemos para probar la aplicación- para acelerar el proceso de compilación. Basta con agregar la siguiente línea al archivo gwt.xml del módulo

<set-property name="user.agent" value="safari"/>

En este caso, especificamos la compilación para Chrome. La lista completa de opciones la puedes consultar en el código fuente

Fuentes:

stackoverflow – how do i speed up the gwt compiler
stackoverflow – what are the possible user agent values in gwt xml

Eclipse – Consulta dinámica en BIRT

Para modificar la consulta de un DataSet puedes utilizar la sección “Property Binding”

en mi caso necesitaba reemplazar en la conulta el valor de un parámetro.

Para reemplazar una cadena con otra lo puedes hacer en el “Expression Builder” de la siguiente manera



var q=new Packages.java.lang.String("SELECT COUNT(*) AS TOTAL \
FROM @OFICINA.EMPLEADOS A, @OFICINA.PUESTOS R, \
@OFICINA.SALARIOS D, @OFICINA.DEPTOS O \
WHERE A.NID_ACO_EXP= R.NID_ACO \
R.NID_DMD=D.NID_DMD AND R.NORDEN=O.NID_ORDEN \
AND TRUNC(R.FECHA) BETWEEN :INICIO AND :FIN");
q.replaceAll("@OFICINA",params["OFICINA"].value);

el código es javascript, pero podemos utilizar clases Java también. En este caso utilizamos la clase String de Java en vez de Javascript, porque el método de javascript no reemplaza todas las coincidencias.

Fuentes:
birt exchange