/*
 * Fichero:     UtilesDirectorio.java
 * Fecha:       20/10/06
 * Autor:       Alvaro Sarmiento Losada
 * Asignatura:  Proyecto Fin de Carrera
 * Descripción: Contiene la clase UtilesDirectorio, que proporciona un método
 *              de borrado de directorios.
 *
 * Este fichero pertenece al proyecto fin de carrera del autor,
 * consistente en el estudio de JXTA y su aplicación al comercio 
 * electrónico b2b.
 */

package com.pfc.lib.utiles;

import java.io.File;

/**
 * Clase que proporciona métodos relacionados con el manejo de directorios.
 *
 * @author  Josef Ignacio Hötz Ordoño
 */
public abstract class UtilesDirectorio {
    /*
     * Esta clase sólo implementa 1 método de borrado de directorio, debido a
     * que el proyecto no ha requerido más métodos de manejo de archivos y
     * directorios.
     */
    
    /**
     * Borra un directorio del sistema de archivos, usando un algoritmo
     * recursivo para eliminar los archivos y directorios contenidos.
     *
     * @param  ruta la ruta absoluta o relativa del directorio que se quiere
     *              eliminar 
     * @return      <code>true</code> si se pudo completar el borrado con exito
     *              o no existe el directorio especificado en <code>ruta</code>
     *              <br><code>false</code> en caso contrario
     */
    public static boolean borrarDirectorio(String ruta) {
        boolean resultado = true;
        File dir = new File(ruta);
        
        //Se comprueba primero que exista el directorio
        if (dir != null) {
            //Obtenemos todos los archivos y directorios del directorio actual
            File[] archivos = dir.listFiles();
            
            if (archivos != null) {
                for (int i = 0; i < archivos.length; i++) {
                    File archivo = archivos[i];
                    
                    //Si es archivo, simplemente se borra
                    if ( archivo.isFile() == true ) {
                        if (!archivo.delete()) {                          
                            resultado = false;
                        }
                    } else {
                        //Si es directorio,llamamos a este metodo recursivamente
                        if ( borrarDirectorio(archivo.getPath()) == false ) {
                            resultado = false;
                        }
                    }
                }
                //Se borra el directorio
                if ( dir.delete() == false )
                    resultado = false;
            }
        }
        return resultado;
    }
    
}