15 noviembre 2012

Combos (DropDown) enlazados(lazy) con jquey

Esto es el código para realizar dos combos(dropdown) enlazados(lazy) con jquery a partir de dos matrices multidimensionales constantes.
 

$(document).ready(function(){
var array1=[["01","valueArray101"],["02","valueArray102"],["03","valueArray103"],["04","valueArray104"]];
var array2=[["11","valueArray211"],["12","valueArray212"],["13","valueArray213"],["14","valueArray214"]];
 
 
//Combos enlazados
$("#idselect").change(function () {
//comprueba los valores seleccionados en el select
    if ($('#idselect option:selected[value="01"]').length > 0 || $('#idselect option:selected[value="05"]').length > 0 ||  $('#idselect option:selected[value="10"]').length > 0){
      //Elimina los option de la select
      $('#idselect1').empty();
      //Recorremos el array multidimensional
      for(var val in array1) {
          $("

07 noviembre 2012

Como borrar recursivamente la carpeta .svn del Subversion

Crea un fichero bat con el código de abajo y mételo dentro de la carpeta donde tienes los ficheros del subversión y ejecútalo, se te borraran todos.

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G"

01 noviembre 2012

Ejecutar un proceso, batch(bat) o programa al cerrar o iniciar Windows

Alguna vez has necesitado ejecutar un programa o batch(Bat) cuando se inicie tu windows o cuando se apague, en mi caso necesitaba ejecutar un script de visual basic (vbs) para hacerlo necesitas realizar los siguientes pasos:
  1. Ejecutar gpedit.msc.
  2. Se abrirá la siguiente ventana 


  3. Ve a "Configuración del equipo" / "Configuración de Windows" / "Scripts(Inicio o Apagado)"
  4. Selecciona Inicio o Apagado y añade tu script o programa. Así de fácil.

22 octubre 2012

Operaciones con Decimales en Java (redondeo)

Si necesitáis realizar operaciones con  números decimales tienes que utilizar java.math.BigDecimal, en el siguiente ejemplo comprobamos que la variable numericoDecimal no es 0 y le asignamos la operación multiplicación de un Double y una división por un int redondeado los decimales hacia arriba:
import java.math.BigDecimal;
import java.math.RoundingMode;

public class Prueba {
 public static void main(String[] args) {
  Double numeroDecimal2= new Double(24.2);
  BigDecimal numericoDecimal = new BigDecimal(24.5);

  // comprobacion si el valor del BigDecimal es 0
  numericoDecimal= numericoDecimal.compareTo(BigDecimal.ZERO) != 0 ?
   numericoDecimal.multiply(BigDecimal.valueOf(numeroDecimal2)).divide(BigDecimal.valueOf(12), RoundingMode.HALF_UP) 
   : BigDecimal.ZERO;
  System.out.println(numericoDecimal);
 }
}

La salida da 49.41

05 junio 2012

Scheduler o Programador de tareas en Java Version2

Otra versión de un scheduler o programador de tareas y esta vez para máquinas virtuales jdk 1.4 o anteriores. Las clases utilizadas son  java.util.Timer y   java.util.TimerTask.
Hay dos Timer y dos Task, un Timer que arranca la alarma y otro que la para, una Task que ejecuta un contador y otra que para las Tasks y los Timers

import java.util.Timer;

import java.util.TimerTask;



public class Alarma {

private long tiempoCarenciaMilisegundos = 3000;

private long tiempoEjecucionAlarmaTask = 3000;

private AlarmaTimer alarmaTimer = new AlarmaTimer();

private AlarmaTask alarmaTask = new AlarmaTask();

private AlarmaParaTimer alarmaParaTimer = new AlarmaParaTimer();

private AlarmaParaTask alarmaPararTask = new AlarmaParaTask();



/**

 * @param args

 */

public static void main(String[] args) {

System.out.println("Inicio del Main");

Alarma alarma = new Alarma(1000, 3000);

alarma.arrancaAlarmaTimer();

alarma.arrancaAlarmaParaTimer();

System.out.println("Fin del Main");

}



/**

 * Constructor de la clase

 * @param tiempoCarenciaMilisegundos

 * @param tiempoEjecucionAlarmaTask

 */



public Alarma(long tiempoCarenciaMilisegundos,

long tiempoEjecucionAlarmaTask) {

this.tiempoCarenciaMilisegundos = tiempoCarenciaMilisegundos;

this.tiempoEjecucionAlarmaTask = tiempoEjecucionAlarmaTask;

}

private void arrancaAlarmaTimer() {

alarmaTimer.arrancaTimer();

}

private void arrancaAlarmaParaTimer() {

alarmaParaTimer.arrancaParaTimer();

}

public class AlarmaTask extends TimerTask {

private int contador = 0;

public void run() {

System.out.println("Se ejecuta la alarma " + contador++);

}

}

public class AlarmaTimer extends Timer {

private final Timer tiempo = new Timer();

public void arrancaTimer() {

tiempo.scheduleAtFixedRate(alarmaTask, tiempoCarenciaMilisegundos,

tiempoEjecucionAlarmaTask);

};

}

public class AlarmaParaTask extends TimerTask {

public void run() {

System.out.println("Se ejecuta la cancelacion de la alarma ");

alarmaTask.cancel();

alarmaTimer.cancel();

alarmaTimer.purge();

System.out.println("Se ejecuta el parado de este timer/task ");

alarmaPararTask.cancel();

alarmaParaTimer.cancel();

alarmaParaTimer.purge();

System.exit(0);

}

}

public class AlarmaParaTimer extends Timer {

private final Timer tiempo = new Timer();

public void arrancaParaTimer() {

tiempo.scheduleAtFixedRate(alarmaPararTask, 20000, 1);

};
}
}

01 junio 2012

Scheduler o Programador de tareas en Java

Hoy posteo un pedacito de código de esos que suelo utilizar de vez en cuando para ejecutar en background tareas que se deben de realizar a horas intempestivas sin que moleste a nadie . Se trata de un programador de tareas o scheduler utilizando la clase Executors del paquete java.util.concurrent para versiones iguales o superiores 1.5 de java.

public class Schedule {

private ScheduledExecutorService programador;
private long tiempoRetardo;
private long tiempoEjecucion;
private long tiempoParada;

private static final int NUMERO_THREADS = 1;
private static final boolean PUEDE_PARAR_TAREA_SI_EJECUTA = false;

public static void main(String[] args) {
System.out.println("Inicio de main del proceso");
Schedule execute = new Schedule(3, 1, 20);
execute.activaProcesoYPara();
System.out.println("Fin del main del proceso");
}

/**
* Constructor
* @param tiempoInicial
* @param tiempoEjecucion
* @param tiempoParada
*/
public Schedule(long tiempoRetardo, long tiempoEjecucion, long tiempoParada) {
this.tiempoRetardo = tiempoRetardo;
this.tiempoEjecucion = tiempoEjecucion;
this.tiempoParada = tiempoParada;
programador = Executors.newScheduledThreadPool(NUMERO_THREADS);
}

/**
* Metodo que activa el programador
* el proceso se ejecutara 17 veces(contador = 17) ya que hay
* un retardo de 3 segundos. El proceso de parada tiene un ejecucion de 20
* segundos.
*/
public void activaProcesoYPara() {
Runnable ejecucionTarea = new EjecucionTarea();
ScheduledFuture programadorTareaFutura = programador.scheduleWithFixedDelay(ejecucionTarea, tiempoRetardo,
tiempoEjecucion, TimeUnit.SECONDS);
Runnable paradaProceso = new PararTarea(programadorTareaFutura);
programador.schedule(paradaProceso, tiempoParada, TimeUnit.SECONDS);
}

/**
* Clase que se utiliza para la ejecucion de la tarea
*/
private static final class EjecucionTarea implements Runnable {
/**
* Variable contador
*/
private int contador;

/*
* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run() {
++contador;
System.out.println("valor del contador " + contador);
}
}

/**
* Clase que se utiliza para parar la tarea que se ejecuta en el
* {@link ScheduledFuture}
*/
private final class PararTarea implements Runnable {
private ScheduledFuture programadorFuturo;

/**
* Constructor.
* @param programadorTareaFuturo
*/
public PararTarea(ScheduledFuture programadorTareaFuturo) {
programadorFuturo = programadorTareaFuturo;
}

/*
* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run() {
System.out.println("Parando la tarea");
programadorFuturo.cancel(PUEDE_PARAR_TAREA_SI_EJECUTA);
programador.shutdown();
}
}

}

22 mayo 2012

WAS(websphere) y el charset encoding utf-8

Si quieres que tu servidor websphere( o máquina virtual java) codifique en utf-8 deberás configurar el -Dclient.encoding.override= utf-8  o en ISO-8859-1 -Dclient.encoding.override=ISO-8859-1

17 mayo 2012

Comparar Fechas en Java

Como comparar fechas en java desde una fecha inicial, una final y la actual:

Date fechaHoy = new Date();
if (fechaHoy.after(fechaIni) && fechaHoy.before(fechaFin) ||
     isSameDay(fechaHoy, fechaIni) || isSameDay(fechaHoy, fechaFin)) {
     return true;
}

private static boolean esMismoDia(Date fecha1, Date fecha2) {
        if (fecha1 == null || fecha2 == null) {
            throw new IllegalArgumentException("Las fechas no pueden ser null");
        }
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(fecha1);
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(fecha2);
        return isSameDay(cal1, cal2);
    }
private static boolean esMismoDia(Calendar cal1, Calendar cal2) {
        if (cal1 == null || cal2 == null) {
            throw new IllegalArgumentException("Las fechas no pueden ser null");
        }
        return (cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA) && cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR));
    }

13 mayo 2012

Inicializar una constante del tipo Map-HashMap(HasMap)

Seguro que alguna vez has necesitado inicializar un hasmap desde tu aplicacion java, aqui os dejo un  snippet

private static final Map CONSTANT_MAP = Collections
.unmodifiableMap(new HashMap() {
{
put(1, "one");
put(2, "two");
}
});