java.lang.Object
it.unimi.di.prog2.temisvolti.filesystem.Shell

public class Shell extends Object
Classe mutabile che rappreseta una shell
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private Path
    Il path assoluto della directory corrente
    private final FileSystem
    Il filesystem su cui opera la shell.
    private static final String
    Prefisso per l'output.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Costruisce una shell dato il filesystem.
  • Method Summary

    Modifier and Type
    Method
    Description
    Esegue l'interprete di comandi.
    static void
    main(String[] args)
    Istanzia l'interprete in modo che legga il flusso di ingresso standard; se il programma è invocato con degli argomenti, al termine dell'esecuzione emette la storia dei comandi ricevuti.
    private static void
    Emette nel flusso d'scita la direcotry data sotto forma di albero.
    private Path
    Risolve il path rispetto alla directory corrente.
    private void
    tree(Path path)
    Emette nel flusso d'uscita la directory corrispondente al path dato.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • PREFIX

      private static final String PREFIX
      Prefisso per l'output.
      See Also:
    • fs

      private final FileSystem fs
      Il filesystem su cui opera la shell.
    • cwd

      private Path cwd
      Il path assoluto della directory corrente
  • Constructor Details

    • Shell

      public Shell(FileSystem fs)
      Costruisce una shell dato il filesystem.

      La directory corrente è inzialmente la radice del filesystem.

      Parameters:
      fs - il filesystem
      Throws:
      NullPointerException - se il filesystem è null.
  • Method Details

    • resolve

      private Path resolve(String path)
      Risolve il path rispetto alla directory corrente.
      Parameters:
      path - il path.
      Returns:
      il path assoluto ottenuto ri
    • recursiveTree

      private static void recursiveTree(String prefix, Directory d)
      Emette nel flusso d'scita la direcotry data sotto forma di albero.

      Questa funzione richiama ricorsivamente se stessa per emettere le sottodirectory in forma di albero, usa il prefisso per gestire l'indentazione dei sottoalberi.

      Parameters:
      prefix - il prefisso da anteporre ad ogni linea emessa.
      d - la directory il cuil albero è da emettere.
    • tree

      private void tree(Path path) throws FileNotFoundException
      Emette nel flusso d'uscita la directory corrispondente al path dato.
      Parameters:
      path - il percorso di una directory del filesystem.
      Throws:
      FileNotFoundException - se il percorso non individua una directory.
    • interpreter

      public List<String> interpreter(BufferedReader con) throws IOException
      Esegue l'interprete di comandi.

      Questa classe legge una linea alla volta dal BufferedReader fino a quando legge una linea vuota. Per ciascuna linea, interpreta il comando che contiene, riportando gli errori eventualmente riportati durante la sua esecuzione. Al termine dell'esecuzione, restituisce l'elenco dei comandi ricevuti.

      Parameters:
      con - il BufferedReader da cui vengono letti le linee contenenti i comandi.
      Returns:
      l'elenco di comandi ricevuti.
      Throws:
      IOException - se avviene un errore durante la lettura delle linee.
    • main

      public static void main(String[] args) throws IOException
      Istanzia l'interprete in modo che legga il flusso di ingresso standard; se il programma è invocato con degli argomenti, al termine dell'esecuzione emette la storia dei comandi ricevuti.
      Parameters:
      args - gli argomenti del comando, se presenti verrà emesso l'elenco dei comandi.
      Throws:
      IOException - se avviene un errore durante la lettura del flusso di ingresso.