Class HashTableIndex

java.lang.Object
AEDs3.DataBase.Index.HashTableIndex
All Implemented Interfaces:
ForwardIndex

public class HashTableIndex extends Object implements ForwardIndex
Implementação de um índice de tabela hash extensível. Gerencia a inserção, busca e remoção de registros em uma estrutura de hash.
  • Field Details

    • dirFilePath

      String dirFilePath
      Caminho para o arquivo de diretório.
    • bucketFilePath

      String bucketFilePath
      Caminho para o arquivo de cestos.
    • metaFilePath

      String metaFilePath
      Caminho para o arquivo de metadados.
    • dirFile

      Arquivo de acesso aleatório para o diretório.
    • bucketFile

      RandomAccessFile bucketFile
      Arquivo de acesso aleatório para os cestos.
    • bucketNumElements

      int bucketNumElements
      Número máximo de elementos por cesto.
    • directory

      Diretório da tabela hash.
  • Constructor Details

    • HashTableIndex

      public HashTableIndex(String nc, String nd, String nm) throws IOException
      Construtor que inicializa o índice de tabela hash a partir de arquivos existentes.
      Parameters:
      nc - Caminho para o arquivo de cestos.
      nd - Caminho para o arquivo de diretório.
      nm - Caminho para o arquivo de metadados.
      Throws:
      IOException - Se ocorrer um erro de I/O.
    • HashTableIndex

      public HashTableIndex(int bucketCapacity, String nc, String nd, String nm) throws IOException
      Construtor que inicializa um novo índice de tabela hash.
      Parameters:
      bucketCapacity - Número máximo de elementos por cesto.
      nc - Caminho para o arquivo de cestos.
      nd - Caminho para o arquivo de diretório.
      nm - Caminho para o arquivo de metadados.
      Throws:
      IOException - Se ocorrer um erro de I/O.
  • Method Details

    • destruct

      public void destruct() throws IOException
      Destrói o índice de tabela hash, fechando arquivos e removendo-os do sistema.
      Specified by:
      destruct in interface ForwardIndex
      Throws:
      IOException - Se ocorrer um erro de I/O.
    • insert

      public void insert(int id, long pos) throws IOException
      Insere um novo registro no índice de tabela hash.
      Specified by:
      insert in interface ForwardIndex
      Parameters:
      id - Identificador do registro.
      pos - Posição do registro no arquivo de dados.
      Throws:
      IOException - Se ocorrer um erro de I/O.
    • insert

      private void insert(ForwardIndexRegister elem) throws IOException
      Método auxiliar que insere um registro no índice de tabela hash.
      Parameters:
      elem - Registro a ser inserido.
      Throws:
      IOException - Se ocorrer um erro de I/O.
    • search

      public long search(int id) throws IOException
      Busca um registro no índice de tabela hash.
      Specified by:
      search in interface ForwardIndex
      Parameters:
      id - Identificador do registro a ser buscado.
      Returns:
      A posição do registro no arquivo de dados, ou -1 se não encontrado.
      Throws:
      IOException - Se ocorrer um erro de I/O.
    • delete

      public void delete(int id) throws IOException
      Remove um registro do índice de tabela hash.
      Specified by:
      delete in interface ForwardIndex
      Parameters:
      id - Identificador do registro a ser removido.
      Throws:
      IOException - Se ocorrer um erro de I/O.
    • getBucketCapacity

      public int getBucketCapacity()
      Retorna a capacidade máxima de elementos por cesto.
      Returns:
      Capacidade máxima de elementos por cesto.
    • listFilePaths

      public String[] listFilePaths()
      Retorna os caminhos dos arquivos associados ao índice de tabela hash.
      Specified by:
      listFilePaths in interface ForwardIndex
      Returns:
      Array de strings contendo os caminhos dos arquivos de diretório, cestos e metadados.