/*
 * Copyright (c) 1997-2001 Centro de Informática - UFPE
 */

/**
 * Esta classe implementa um Registro.
 */
public abstract class Registro {

    // O nome do Registro.
    private String nome;

    // O propietário do Registro.
    private Usuario proprietario;

    // O código de permissão do Registro.
    private int permissao;

    /**
     * Cria um novo Registro, a partir do seu nome e propietário e instancia o
     * atributo permissão com o valor 3.
     *
     * @param nome         Nome do Registro.
     * @param proprietario Proprietário do Registro.
     */
    public Registro(String nome, Usuario proprietario) {

        this.nome = nome;
        this.proprietario = proprietario;
        this.permissao = 3;
    }


    /**
     * Retorna o nome do Registro.
     *
     * @return Nome do Registro.
     */
    public String getNome() {
        return this.nome;
    }


    /**
     * Retorna true se o Registro for um Diretório e false caso contrário.
     *
     * @return true caso seja um diretório, false caso contrário.
     */
    public abstract boolean isdir();


    /**
     * Retorna o propietário do Registro.
     *
     * @return Proprietário do Registro.
     */
    public Usuario getProprietario() {
        return this.proprietario;
    }


    /**
     * Retorna o código da permissão do Registro.
     *
     * @return Código de permissão do Registro.
     */
    public int getPermissao() {
        return this.permissao;
    }


    /**
     * Compara dois registros.
     *
     * @return true se são iguais, false se são diferentes.
     */
    public abstract boolean equals(Registro registro);

}