martes, 28 de diciembre de 2010

Java System.getProperty(String key) System.SetProperty(String key, String value)

Muchas veces resulta útil poder enviar información desde afuera de la aplicación, como por ejemplo en los scripts que se hacen para levantar las aplicaciones, Java nos permite enviar valores que la aplicación puede recuperar y utilizar según sea el caso, estas son propiedades de la forma clave=valor del tipo String.
 se pueden definir en dos lugares diferentes, el primero es donde se llama a Java cuando se levanta la aplicación agregando -D
Por Ej.:
java -Dlogfile="\home\tomcat\log" nombreDelaClaseMain en cuyo caso se le envía a la VM como argumento una propiedad del tipo String llamada "logfile" y cuyo valor es otro String "\home\tomcat\log".

El otro lugar en que se puede definir estas propiedades es dentro del programa, invocando al método estático setProperty de la clase System,
System.setProperty("propiedad","valorDeLaPropiedad");

 Acá hay un ejemplo de cómo se definen y se  recuperan esas propiedades:

public class SystemPropertiesTest {

    public static void main(String[] args) {
      
       //getting the value setted in the jvm launch
        String value = System.getProperty("key");
        System.out.println(value);

        System.out.println("Setting system property in the class : key + value");
        System.setProperty("key", "valueTwo");
        value = System.getProperty("key");
        System.out.println(value);
    }
}

La llamada desde línea de comando sería la siguiente



En este link http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/java.html  hay información sobre las opciones del aplication launcher de java (dentro de ellas esta las que vimos en este post)

Saludos y espero que les haya sido de utilidad
Nacho.-

lunes, 20 de diciembre de 2010

Crear y borrar Sinónimos en tablas de base de datos Oracle - Create and Drop SYNONYM in oracle data base

Si queremos acceder a una tabla pero sin referenciar a su nombre ( schema.nombre de la tabla) lo que debemos hacer es crear un Sinonimo, con el cual haremos referencias a dicha tabla.

La sintaxis para hacer eso es la siguiente:
CREATE PUBLIC SYNONYM [NombredelSinónimo] FOR [schema].[nombreDeLaTabla]

Al no ser una operacion transaccional, esta no requiere commit

Ej:
CREATE PUBLIC SYNONYM autos FOR ORACLE.MODELOSLATAM;

Como vemos en este ejemplo a la tabla ORACLE.MODELOSLATAM. se le creo un sinonimo, con el cual van a poder acceder (finalmente a la tabla ORACLE.MODELOSLATAM)

Ahora bien, si por el contrario, lo que necesitamos es borrar el sinónimo, todo lo que deberemos hacer es un DROP del sinonimo de dicha tabla.

La sintaxis es:

DROP PUBLIC SYNONYM [NombredelSinonimo] ;

Ej:
DROP PUBLIC SYNONYM autos;

viernes, 17 de diciembre de 2010

Arreglo en Java de los nombres de los pasados 12 meses, en formato MMM-AA

Buenas a todos, debajo les dejo un algoritmo que está hecho en base a uno que hizo un compañero de trabajo, devuelve un arreglo de Strings de los pasados 12 meses respecto del actual (el cual no está incluido) en formato MMM-AA.

[Nov-10,Oct-10...]

Me pareció interesante el manejo del offset ya que para la correspondencia de los meses con sus respectivos nombres, los índices deben estar dentro de los límites del arreglo a fin de que el código funcione bien y evitar un java.lang.ArrayIndexOutOfBoundsException.
Sin más preámbulos acá esta el código java:
/**
     *This method returns an array with the names of the past 12 months prior to
     *the current month, MMM-YY format.
     *@author nachojava
     */
    public String[] headers() {
        String[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
                "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
        String[] headers = { "", "", "", "", "", "", "", "", "", "", "", "" };
        int yearOffset = 2000;
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR) - yearOffset;
        int previousMonths = c.get(Calendar.MONTH) - 1;
        int monthOffset = 12;

        for (int index = 0; index <= 11; index++) {
            if (year < 10) {               
                headers[index] = months[previousMonths] + "-" + "0" + year;
            } else {               
                headers[index] = months[previousMonths] + "-" + year;
            }
            previousMonths--;

            if (previousMonths < 0) {
                previousMonths = previousMonths + monthOffset;
                year -= 1;
            }
        }
        return headers;
    }

Espero les haya interesado, saludos!
Nacho.-