Las especificaciones para el uso de recursos en formato de fichero de propiedades a través de la API ResourceBundle de Java definen unas reglas para la nomenclatura y ubicación de dichos ficheros que hay que seguir de forma que la JVM pueda localizar y recuperar los recursos definidos en ellos. No obstante, dicha API proporciona mecanismos que permiten personalizar este proceso. En este POST se explica cómo hacerlo. Seguir leyendo OCP7 13 – Localización (II)
Todas las entradas de: xavsal
Error al generar la documentación mediante Swagger
Situación:
Error principal
Al generar el código HTML de Swagger se produce un error en el proceso de compilación.
Discovered module obj-c
Discovered module php
Discovered module ruby
Discovered module xml
Discovered module swagger
Loading config /XXXXXXXXXXXXXXXXXX/_ACTIVE_
[enunciate] warning: The apt tool and its associated API are planned to be
[enunciate] removed in the next major JDK release. These features have been
[enunciate] superseded by javac and the standardized annotation processing API,
[enunciate] javax.annotation.processing and javax.lang.model. Users are
[enunciate] recommended to migrate to the annotation processing features of
[enunciate] javac; see the javac man page for more information.
/XXXXXXXXXXXXXXX/_ACTIVE_
Weblogic 9.2 MP4 – Creating and Configuring WebLogic Domains Using WLST Offline
config
directory, for example, config.xml
) or in a domain template JAR created using Template Builder.Seguir leyendo Weblogic 9.2 MP4 – Creating and Configuring WebLogic Domains Using WLST Offline
Método Unescape en Javascript
En el proyecto actual en el que estoy trabajando, se ha creado una URL mediante la API de Java y se ha transmitido mediante una petición al navegador web.
Se ha producido un error en la transformación y su interpretación del navegador web de dicha URL dado que la cadena de texto obtenida por el navegador ha sido ésta:
http://www.direccion.es/dominio?param1=valor1¶m2=valor2
Para solucionar el problema basta con utilizar el método unescape de Javascript.
Mediante este método se trata la cadena de texto recibida por parámetro de forma literal con lo que se eliminan las codificaciones especiales de la cadena de texto.
Dentro del proyecto, se ha utilizado este método para interpretar los caracteres que conforman la URL literalmente y así poder utilizarla en el método window.open de Javascript correctamente.
El código Javascript queda del siguiente modo:
window.open(unescape(url), "popup2", "left=5,top=5,scrollbars=yes,resizable=yes,status=yes,width=" + (screen.availWidth - 20).toString() + ",height=" + (screen.availHeight - 100).toString());
Al hacer clic en el botón, se abre correctamente el pop up y se carga el contenido indicado por el enlace correctamente dado que el navegador puede interpretar la dirección web (URL) de forma literal y explícita.
A modo de resumen, comentar que si desea que una cadena URL recibida por petición se trate correctamente debe emplearse el método unescape para ser tratada la cadena de forma literal.
Enlace: http://www.w3schools.com/jsref/jsref_unescape.asp
«Perlas del código fuente» ^_^
A día de hoy aún me pregunto cómo puede funcionar la aplicación de forma productiva
: 3
* Caso de misma excepción para distintas casuísticas
Es curioso el detalle que lance la misma excepción en los distintos casos ^^ (en PL/SQL).
IF p_codret != '0' THEN IF p_codret = '5' THEN RAISE ErrorObtDiasDatos; ELSIF p_codret = '6' THEN RAISE ErrorObtDiasDatos; ELSIF RAISE ErrorObtDiasDatos; END IF; END IF;
Supuestamente pretende realizar una comprobación en el código fuente pero en realidad sólo está interesado en asignar un valor 0 de tipo cadena a la variable nia 🙂
if("".equals(nia) || nia==null); { nia = "0"; }
comunicadoNuevo.setCe_cm(fr22.get("CE_CM").toString()); comunicadoNuevo.setCe_cm(comunicadoNuevo.getCe_cm());
* Caso dónde se realiza la aserción de un dato en una variable de objeto
if (codError == 0){ error = 0; } if (error == 0) { // ... Code continues here
Función CONVERT en BBDD Oracle 10g
La función CONVERT permite convertir un carácter de un conjunto específico de caracteres a otro carácter de otro conjunto específico de caracteres.
En el caso concreto de la aplicación en la que se está trabajando se desea realizar una consulta sobre una tabla concreta para recuperar una descripción que contenga la palabra avión, como caso de ejemplo. Las descripciones a recuperar son las siguientes
- Auxiliares de vuelo y camareros de avión, barco y tren
- Mecánicos y ajustadores de motores de avión
mediante la siguiente consulta
SELECT
des.des_dcol
FROM
TABLA_DESCRIPCIONES des
WHERE
UPPER(des.des_dcol) LIKE UPPER(‘%avión%’));
No encuentra ningún resultado dado que realiza la consulta estrictamente con acento y aunque existe en la tabla no lo retorna correctamente.
Aquí es dónde entra la utilización de la función CONVERT. La siguiente consulta busca las descripciones que contengan el valor %avión% mostrando el resultado correctamente.
SELECT
des.des_dcol
FROM
TABLA_DESCRIPCIONES des
WHERE
UPPER(CONVERT(des.des_dcol, ‘US7ASCII‘))
LIKE UPPER(CONVERT(‘%avión%’, ‘US7ASCII‘));
Las descripciones recuperadas son las esperadas como se ha comentado con anterioridad.
- Auxiliares de vuelo y camareros de avión, barco y tren
- Mecánicos y ajustadores de motores de avión
La clave se encuentra en el parámetro que se le pasa, ‘US7ASCII‘, correspondiente una de las codificaciones de caracteres comunes (ASCII US 7-bit) de las que puede gestionar la función..
Hasta aquí la prueba de concepto de esta función de Oracle. Para un mayor detalle de la misma se puede acceder a la siguiente ruta.
Adaptación de librería java-json.jar a JAVA 1.4
Una de las limitaciones más comunes a la hora de programar es la versión del jdk que requiere nuestra aplicación. Cuando los requerimientos exigen una versión un tanto antigua (1.4 por ejemplo), encontramos problemas a la hora de usar tecnologías como AJAX, sobretodo si necesitamos utilizar respuestas de tipo JSON. Para ello existe una librería muy simple «java-json.jar» pero nos encontramos de que es incompatible con el jdk 1.4.
Aquí explicaré en pocos pasos como adaptar y recompilar esta librería para hacerla compatible y funcional para una aplicación que use un jdk 1.4. Necesitaremos descargar el código fuente de la librería y modificar unos pequeños detalles de las clases que contiene.
Se puede descargar el código fuente de aquí
PROCEDIMIENTO:
Primero importaremos el código a nuestro IDE (en este caso uso Eclipse Juno) . Crearemos un proyecto Java.
Y definimos la versión del jdk que usaremos como jdk_4_2_19
Una vez tenemos nuestro proyecto creado, importaremos las clases de la librería que vamos a refactorizar. Para eso vamos a Archivo -> importar -> File System
Y seleccionamos la carpeta donde tenemos las clases descargadas.
Una vez tenemos las clases importadas, abrimos una de estas clases y miramos el «package» donde debería estar incluida la clase.
Creamos en nuestro proyecto este package y movemos todas las clases a este package
Ahora comprobaremos que las clases muestran errores, esto es lo que debemos corregir.
1 – Cambiamos la utilización de la clase «StringBuilder» por «StringBuffer»
2 – Eliminamos las parametrizaciones de las clases «Iterator», «ArrayList», «Set», «Collection», «Enumeration», «Map» i «HashMap»
3 – Al eliminar la parametrización, deberemos añadir unos «casts» ya que al no estar parametrizados, ahora todos seran «Object».
4 – Eliminamos las anotaciones.
5 – Las operaciones de suma entre objetos se deben modificar para que sean entre tipos primitivos, ya que la suma entre objetos no está soportada.
Imagen 1 |
Imagen 2 |
6 – Modificamos las asignaciones directas de tipos primitivos a clases por una instanciación de la propia clase.
Una vez nuestro proyecto esta corregido sin errores, encapsulamos de nuevo todas las clases en un nuevo archivo .jar compilado con el jdk 1.4. Para esto, clickamos sobre el package «org.json» con el botón derecho del ratón i selecionamos «export -> Java-> Jar file».
Finalmente, clickamos a «Finish» y tenemos nuestra librería compilada y totalmente funcional para Java 1.4.
Quick Reference: Oracle DML and DDL Statements
Just a quick reference of DML and DDL Oracle Statements and some links to visit.
DML Statements
Main Site: Oracle DML Statements
Insert
INSERT INTO table_name (list_of_columns)
VALUES (list_of_values);
Update
UPDATE table_name
SET column_name = value [, column_name = value]…
[ WHERE condition ];
Delete
DELETE FROM table_name
[ WHERE condition ];
DDL Statements
Main Site: DDL Oracle Statements
Create
CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
…
column_n datatype [ NULL | NOT NULL ]
);
Alter
ALTER TABLE table_name
ADD column_name column-definition;
Drop
DROP [schema_name].TABLE table_name
[ CASCADE CONSTRAINTS ]
[ PURGE ];
Extra
Some sites which contains interesting information about the last topics: 1, 2, 3.
Not in an application scope – start OC4J with the -userThreads switch if using user-created threads
En el caso concreto comentado es obligatorio utilizar el atributo -userThreads («Enables context lookup support from user-created threads») del servidor OC4J. Esto permite que el servidor sea capaz de gestionar además de los hilos internos propios también los creados manualmente por el usuario desde la aplicación J2EE.
java -jar oc4j.jar -userthreads
Hilite.me – decorador de código fuente para blogs y otras publicaciones
Al acceder a la página principal se muestran dos secciones, una para añadir el código fuente original y la otra para obtener el código fuente formateado en HTML con el estilo escogido .
Como parámetros de configuración se pueden configurar el lenguaje, el estilo, indicar si se desean añadir líneas de código y la opción de aplicar estilos CSS directamente. Todo ello se puede aplicar de forma sencilla y amena.
Por último, una vez establecida la configuración interesada sólo resta hacer clic en el botón Highlight para obtener el código HTML final.
Posteriormente es suficiente con copiar el HTML generado y incrustarlo en el código fuente de la página web destino. Una vez guardado dicho cambio, al acceder a la página debería mostrarse correctamente el código fuente formateado.
Más información en la página oficial: http://hilite.me/api