JuanMtz

Configuracion.java

Mar 30th, 2020
616
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.46 KB | None | 0 0
  1. /**
  2. Proyecto: Juego de la vida.
  3.  * Organiza y gestiona la configuración de la aplicación.
  4.  * Utiliza Properties para organizar y almacenar la configuración de manera persistente en un fichero.
  5.  * Aplica una variante del patrón Singleton.
  6.  * @since: prototipo 0.2.0
  7.  * @source: Configuracion.java
  8.  * @version: 0.2.0 - 2020/03/30
  9.  * @author: ajp
  10.  * @author: JGR, JJMZ, TIP, FGCB
  11.  */
  12.  
  13. package config;
  14.  
  15. import java.io.File;
  16. import java.io.FileInputStream;
  17. import java.io.FileOutputStream;
  18. import java.io.IOException;
  19. import java.io.InputStream;
  20. import java.io.OutputStream;
  21. import java.util.Properties;
  22.  
  23. public class Configuracion {
  24.  
  25.     // Singleton.
  26.     private static Properties configuracion;            // Hashtable <String, String> con persistencia en fichero.
  27.     private File fConfig;                       // Fichero de datos.
  28.  
  29.     /**
  30.      * Método estático de acceso a la instancia única.
  31.      * Si no existe la crea invocando al contructor privado.
  32.      * Utiliza incialización diferida.
  33.      * Sólo se crea una vez; instancia única -patrón singleton-
  34.      * @retun instancia
  35.      */
  36.     public static Properties get() {
  37.         if (configuracion == null) {
  38.             new Configuracion();
  39.         }
  40.         return configuracion;
  41.     }
  42.    
  43.     /**
  44.      * Constructor por defecto de uso interno.
  45.      */
  46.     private Configuracion() {
  47.         configuracion = new Properties();
  48.         fConfig = obtenerRutaFichero();
  49.         try {
  50.             InputStream is = new FileInputStream(fConfig);
  51.             if (fConfig.exists()) {
  52.                 configuracion.load(is);         // Carga configuración desde el fichero.
  53.             }
  54.             else {
  55.                 cargarDatosPredeterminados();   // La primera ejecución genera en fichero la config predeterminada.
  56.                 guardar();
  57.             }
  58.             is.close();
  59.         }
  60.         catch(IOException e) {
  61.             e.printStackTrace();
  62.         }
  63.     }
  64.  
  65.     /**
  66.      * Guarda configuración al fichero.
  67.      */
  68.     public void guardar() {
  69.         try {
  70.             OutputStream os = new FileOutputStream(fConfig);
  71.             configuracion.store(os, "Configuracion actualizada...");
  72.         }
  73.         catch(IOException e) {
  74.             e.printStackTrace();
  75.         }
  76.     }
  77.  
  78.     private void cargarDatosPredeterminados() {
  79.         configuracion.put("usuario.admin", "admin");
  80.         configuracion.put("usuario.invitado", "invitado");
  81.         configuracion.put("claveAcceso.predeterminada", "Miau#0");
  82.         // ...
  83.         // resto de parámetros de configuración predeterminada.
  84.         // ...
  85.        
  86.     }
  87.  
  88.     private File obtenerRutaFichero() {
  89.         new File("datos").mkdirs();             // nombre de directorio.
  90.         return new File("." + File.pathSeparator + "datos" + File.separator + "jv2019.cfg");
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment