Java - Cambiar valor de fecha actual para depuración

 
Vista:
sin imagen de perfil
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Juan (9 intervenciones) el 27/03/2020 22:22:33
Con el fin de depurar, necesito cambiar el valor de fecha actual, la cual pido con
1
Calendar.getInstance().getTime()
por varias partes del código.
O sea que no es práctico cambiar todos los métodos donde hago esta llamada.
Lo que venía haciendo era cambiar la fecha del sistema de Windows, pero también hay que reiniciar el compilador y el gestor de base de datos (si no se producen errores lógicos), con el tiempo que demora esto.
El debug de NetBeans no me deja editar la variable haciendo doble clik en "value".
Estoy usando: Windows, Net Beans 8.2, Wamp Server 2.2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Franklin (179 intervenciones) el 27/03/2020 22:55:58
te podría servir parsear un String > Date usando SimpleDateFormat, asi no cambias la hora del equipo y solo modificarías el valor del string.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Juan (9 intervenciones) el 27/03/2020 23:26:24
Hola, agradezco la respuesta pero es evidente que no leíste bien la pregunta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar valor de fecha actual para depuración

Publicado por Costero (148 intervenciones) el 28/03/2020 00:08:40
En tus clases llamarias:
1
MyCalendar.getDate()

En el
1
app.properties
file tendrias:
1
date=16/05/2020
. Que puedes cambiar sin restart el servidor.

Tienes que bajar la libreria apache commons configuration.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class MyCalendar {
 
    private static PropertiesConfiguration configuration = null;
 
    public static void main(String[] args) throws ParseException {
        for (int i = 0; i < 9; ++i) {
            System.out.println(MyCalendar.getDate());
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
 
    public static Date getDate() throws ParseException {
        return new SimpleDateFormat("dd/MM/yyyy").parse(MyCalendar.getProperty("date"));
    }
 
    static {
        try {
            configuration = new PropertiesConfiguration("src/main/resources/app.properties");
            configuration.setReloadingStrategy(new FileChangedReloadingStrategy());
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }
 
    public static synchronized String getProperty(final String key) {
        return (String) configuration.getProperty(key);
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Juan (9 intervenciones) el 28/03/2020 01:52:05
Lo voy a intentar, pero debo modificar mucho código ya que hago llamadas a fecha actual en muchísimos métodos. Pero creo que no me va a quedar otra. Ahora el main y el último que dice synchronized se lo puedo quitar no, lo agregaste solo para ejecutar prueba ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar valor de fecha actual para depuración

Publicado por Costero (148 intervenciones) el 28/03/2020 02:05:23
Si lo hice para pruebas.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class MyCalendar {
 
    private static PropertiesConfiguration configuration = null;
 
    public static Date getDate() throws ParseException {
        String key = (String) configuration.getProperty("date");
        return new SimpleDateFormat("dd/MM/yyyy").parse(key);
    }
 
    static {
        try {
            configuration = new PropertiesConfiguration("src/main/resources/app.properties");
            configuration.setReloadingStrategy(new FileChangedReloadingStrategy());
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Rodrigo (623 intervenciones) el 28/03/2020 04:19:40
Una alternativa es que el tiempo (la fecha) sea inyectada a los objetos que quieres probar.
De este modo las pruebas pueden pasar la fecha que queras, mientras que el programa funciona con la fecha de verdad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Juan (9 intervenciones) el 24/04/2020 23:32:17
Perdón por la demora, retomando.. Me podrías decir cual debo descargar de la página oficial? ya que hay dos grupos: binario y fuente. Luego a su vez puede ser .tar o no
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Juan (9 intervenciones) el 27/04/2020 18:56:09
@Costero Me podrías decir cual debo descargar de la página oficial? ya que hay dos grupos: binario y fuente. Luego a su vez puede ser .tar o no
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar valor de fecha actual para depuración

Publicado por Costero (148 intervenciones) el 27/04/2020 20:59:42
Hola. Debes descargar binario tar o zip no importa. Dentro de estos debes de encontrar los jar, que debes de poner en tu classpath
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar valor de fecha actual para depuración

Publicado por Costero (148 intervenciones) el 27/04/2020 23:18:03
El jar que te hace falta se va a llamar asi: commons-configuration2-2.7.jar.
Claro dependiendo que version bajaste
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Juan (9 intervenciones) el 11/05/2020 03:50:50
Disculpa que vuelva a molestar, pero ni compila, agregué el commons-configuration2-2.7.jar como corresponde pero no me reconoce varias clases:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
 
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.ex.ConfigurationException;
 
public class MyCalendar {
 
    private static PropertiesConfiguration configuration = null;
 
    public static Date getDate() throws ParseException {
        String key = (String) configuration.getProperty("date");
        return new SimpleDateFormat("dd/MM/yyyy").parse(key);
    }
 
    static {
        try {
            //me indica que el constructor de PropertiesConfiguration no admite String
            //solo constructor PropertiesConfiguration().
            configuration = new PropertiesConfiguration("src/main/resources/app.properties");
 
            //aqui no me reconoce clase FileChangedReloadingStrategy, tampoco me ofrece
            //el paquete para importar al darle Alt+enter
            configuration.setReloadingStrategy(new FileChangedReloadingStrategy());
 
            //de igual forma con la excepción ConfigurationException
        } catch (ConfigurationException e) {
            JOptionPane.showMessageDialog(null, "Falló Apache Commons Configuration."
                    , "Excepción", JOptionPane.ERROR_MESSAGE);
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar valor de fecha actual para depuración

Publicado por Costero (148 intervenciones) el 11/05/2020 04:52:18
Leyendo la documentacion veo que la version 2 no es compatible con la version 1. Quita la version 2 que bajaste y bajas y pones la version 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Cambiar valor de fecha actual para depuración

Publicado por Juan (9 intervenciones) el 11/05/2020 06:05:06
Si, la versión 1 compila pero da el siguiente error:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableException
at java.lang.ClassLoader.defineClass1(Native Method)


Creo que el problema está en la ruta del properties. No me genera ese archivo app.properties.
Aquí va el código nuevo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
 
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
 
 
 
public class MyCalendar {
 
    private static PropertiesConfiguration configuration = null;
 
    public static Date getDate() throws ParseException {
        String key = (String) configuration.getProperty("date");
        return new SimpleDateFormat("dd/MM/yyyy").parse(key);
    }
 
    static {
        try {
 
            configuration = new PropertiesConfiguration("src/main/resources/app.properties");
            configuration.setReloadingStrategy(new FileChangedReloadingStrategy());
 
        } catch (ConfigurationException e) {
            JOptionPane.showMessageDialog(null, "Falló Apache Commons Configuration.\n"+e
                    , "Excepción", JOptionPane.ERROR_MESSAGE);
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar