/*
 * Copyright (c) 1997-1999 Departamento de Informática - UFPE
 */

/**
 * Esta classe simula o comportamento de um diretório do sistema unix.
 */
class Diretorio{

    /**
     * O nome do diretório.
     */
    private String nome;

    /**
     * Os arquivos deste diretório.
     */
    private Lista_arq arquivos;

    /**
     * Os subdiretórios criados abaixo deste.
     */
    private Lista_dir subdiretorios;

    /**
     * Cria um novo diretório, a partir de seu nome.
     */
    public Diretorio(String nome){
        this.nome = nome;
        arquivos = new Lista_arq();
        subdiretorios = new Lista_dir();
    }

    /**
     * Retorna o nome do diretório.
     */
    public String nome() {
        return nome;
    }

    /**
     * Insere um novo arquivo neste diretório.
     */
    public void insere_arquivo(Arquivo arq){
        arquivos.inserir(arq);
    }

    /**
     * Exclui um dado arquivo deste diretório.
     */
    public void remove_arquivo(Arquivo arq) {
        arquivos.excluir(arq);
    }

    /**
     * Gera uma listagem deste diretório.
     */
    public void ls(){
        arquivos.listar();
        subdiretorios.listar();
    }

    /**
     * Verifica se um dado arquivo pertence a este diretório.
     */
    public boolean pertence(Arquivo arq) {
        return arquivos.existe(arq);
    }

    /**
     * Cria um novo subdiretório.
     */
    public void mkdir(Diretorio dir) {
        subdiretorios.inserir(dir);
    }

    /**
     * Apaga um subdiretório.
     */
    public void rmdir(Diretorio dir) {
        subdiretorios.excluir(dir);
    }

}
