Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- Proyecto: Juego de la vida.
- * Organiza y gestiona la configuración de la aplicación.
- * Utiliza Properties para organizar y almacenar la configuración de manera persistente en un fichero.
- * Aplica una variante del patrón Singleton.
- * @since: prototipo 0.2.0
- * @source: Configuracion.java
- * @version: 0.2.0 - 2020/03/30
- * @author: ajp
- * @author: JGR, JJMZ, TIP, FGCB
- */
- package config;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Properties;
- public class Configuracion {
- // Singleton.
- private static Properties configuracion; // Hashtable <String, String> con persistencia en fichero.
- private File fConfig; // Fichero de datos.
- /**
- * Método estático de acceso a la instancia única.
- * Si no existe la crea invocando al contructor privado.
- * Utiliza incialización diferida.
- * Sólo se crea una vez; instancia única -patrón singleton-
- * @retun instancia
- */
- public static Properties get() {
- if (configuracion == null) {
- new Configuracion();
- }
- return configuracion;
- }
- /**
- * Constructor por defecto de uso interno.
- */
- private Configuracion() {
- configuracion = new Properties();
- fConfig = obtenerRutaFichero();
- try {
- InputStream is = new FileInputStream(fConfig);
- if (fConfig.exists()) {
- configuracion.load(is); // Carga configuración desde el fichero.
- }
- else {
- cargarDatosPredeterminados(); // La primera ejecución genera en fichero la config predeterminada.
- guardar();
- }
- is.close();
- }
- catch(IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * Guarda configuración al fichero.
- */
- public void guardar() {
- try {
- OutputStream os = new FileOutputStream(fConfig);
- configuracion.store(os, "Configuracion actualizada...");
- }
- catch(IOException e) {
- e.printStackTrace();
- }
- }
- private void cargarDatosPredeterminados() {
- configuracion.put("usuario.admin", "admin");
- configuracion.put("usuario.invitado", "invitado");
- configuracion.put("claveAcceso.predeterminada", "Miau#0");
- // ...
- // resto de parámetros de configuración predeterminada.
- // ...
- }
- private File obtenerRutaFichero() {
- new File("datos").mkdirs(); // nombre de directorio.
- return new File("." + File.pathSeparator + "datos" + File.separator + "jv2019.cfg");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment