Advertisement
Guest User

Untitled

a guest
Apr 10th, 2020
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.79 KB | None | 0 0
  1. package it.itsvolta.corsojava.quiz;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.IOException;
  6. import java.nio.file.Files;
  7.  
  8. public class QuizManager implements IQuizManager {
  9.  
  10.     @Override
  11.     public void save(IQuizzes quizzes, String name) throws QuizException {
  12.         // TODO Auto-generated method stub
  13.  
  14.     }
  15.  
  16.     @Override
  17.     public IQuizzes load(String name) throws QuizException {
  18.         File file = new File(name);
  19.         if (!file.exists()) {
  20.             throw new QuizException("Un file con quel nome o in quel percorso non esiste");
  21.         } else if (file.isDirectory()) {
  22.             throw new QuizException("Il percorso indicato è una directory");
  23.         }
  24.  
  25.         IQuizzes quizzes = new Quizzes();
  26.         IQuiz quiz = null;
  27.         Option option;
  28.  
  29.         try (BufferedReader br = new BufferedReader(Files.newBufferedReader(file.toPath()))) {
  30.             String line = null;
  31.             while ((line = br.readLine()) != null) {
  32.                 //Se la linea non inizia con uno spazio, e se la linea non è una linea
  33.                 //completamente vuota, la prende in considerazione
  34.                 if (!line.startsWith(" ") && !line.trim().isEmpty()) {
  35.                     quiz = new Quiz();
  36.                     quiz.setQuestion(line);
  37.  
  38.                     /* Avendo preso in considerazione la prima linea senza spazio, esegue un while
  39.                      * che continua finché la prossima linea esiste (condizione: br.readLine() != null),
  40.                      * e (&&) finché "line" dopo il trim() (e alla quale è stata assegnata la prossima linea
  41.                      * nella prima condizione), NON è vuota. Questa condizione serve a interrompere
  42.                      * il ciclo quando BufferedReader incontra una linea formata solo da spazi.
  43.                      */
  44.                     while ((line = br.readLine()) != null && !(line = line.trim()).isEmpty()) {
  45.                         option = new Option();
  46.  
  47.                         if (line.startsWith("*")) {
  48.                             option.setText(line.substring(1));
  49.                             option.setCorrect(true);
  50.                             quiz.addOption(option);
  51.                         } else {
  52.                             option.setText(line);
  53.                             option.setCorrect(false);
  54.                             quiz.addOption(option);
  55.                         }
  56.                     }
  57.  
  58.                     /* Ho ipotizzato anche una soluzione col for, che però legge un numero
  59.                      * di opzioni fisso indicato nella condizione (i<4):
  60.                      *
  61.                      * for (int i=0; i<4; i++) {
  62.                         option = new Option();
  63.                         line = br.readLine().trim();
  64.  
  65.                         if (line.startsWith("*")) {
  66.                             option.setText(line.substring(1));
  67.                             option.setCorrect(true);
  68.                             quiz.addOption(option);
  69.                         } else {
  70.                             option.setText(line);
  71.                             option.setCorrect(false);
  72.                             quiz.addOption(option);
  73.                         }
  74.                     }
  75.                      *
  76.                      */
  77.  
  78.                     //Aggiunge quiz dopo il while
  79.                     quizzes.add(quiz);
  80.                 }
  81.             }
  82.         } catch (IOException e) {
  83.             throw new QuizException("Il file indicato non è compatibile");
  84.         }
  85.  
  86.         return quizzes;
  87.     }
  88.  
  89.     @Override
  90.     public void start(String name) throws QuizException {
  91.         // TODO Auto-generated method stub
  92.  
  93.     }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement