import java.io.*;
import javax.swing.*;

public class TabellaConsumi {
  public static void main(String[] args) throws IOException {
    System.out.println("Benvenuto! \n" + 
      "premi N per creare un nuovo file\n" + 
      "premi C per cancellare il file\n" +
      "premi A per aggiungere letture\n" +
      "premi H per creare la tabella in HTML\n" +
      "premi E per uscire dal programma");
    
    InputStreamReader flussoTesto = new InputStreamReader(System.in);
    BufferedReader bufferTastiera = new BufferedReader(flussoTesto);
    File fileConsumi = new File("consumienel.txt");
    File fileHTML = new File("tabellaenel.html"); 
    String lineaLetta;
    
    for(;;) {
      System.out.print("PRONTO> ");
      lineaLetta = bufferTastiera.readLine();
      
      switch(lineaLetta.charAt(0)) {
        case 'E':
          System.exit(0);
          break;
        case 'N':
          if (fileConsumi.exists() == true) {
            System.out.println("Attenzione, esiste gia' un file dei consumi!");
            System.out.println("Vuoi cancellarlo? Premi S per confermare");
            lineaLetta = bufferTastiera.readLine();
            if (lineaLetta.charAt(0) == 'S') {
              fileConsumi.delete();
              fileConsumi.createNewFile();
            }
          }
          else
            fileConsumi.createNewFile();
          break;
        case 'C':
          System.out.println("Sei sicuro di voler cancellare il file?" +
            " Premi S per confermare");
          lineaLetta = bufferTastiera.readLine();
          if (lineaLetta.charAt(0) == 'S') {
            fileConsumi.delete();
          }
          break;
        case 'A':
          // Notate il valore true nel costruttore dello stream FileWriter 
          // che serve per aggiungere i dati a partire dalla fine del file.
          PrintWriter streamFileConsumi = 
            new PrintWriter(new FileWriter(fileConsumi,true));
          System.out.print("Giorno della lettura: ");
          streamFileConsumi.print(Integer.parseInt(bufferTastiera.readLine()) + 
            "\t");
          System.out.print("Mese della lettura: ");
          streamFileConsumi.print(Integer.parseInt(bufferTastiera.readLine()) + 
            "\t");
          System.out.print("Anno della lettura: ");
          streamFileConsumi.print(Integer.parseInt(bufferTastiera.readLine()) + 
            "\t");
          System.out.print("kW della lettura: ");
          streamFileConsumi.print(Double.parseDouble(bufferTastiera.readLine()) + 
            "\n");
          streamFileConsumi.close();
          break;
        case 'H':
          PrintWriter streamHTML = new PrintWriter (new FileWriter(fileHTML));
          streamHTML.print("<html>\n<head>\n<title>Tabella consumi enel</title>\n" + 
            "</head>\n");
          streamHTML.print("<body>\n<table border=1>\n");
          streamHTML.print("<tr>\n<th>#</th>\n<th>Data</th>\n<th>kW</th>\n</tr>\n");
          BufferedReader streamTXT = new BufferedReader(new FileReader(fileConsumi));
          int lineeLette=0;
          while( (lineaLetta = streamTXT.readLine()) != null ) {
            lineeLette++; 
            String[] porzioniLineaLetta = lineaLetta.split("\t");
            streamHTML.print("<tr>\n<td>" + lineeLette + "</td>\n");
            streamHTML.print("<td>" + porzioniLineaLetta[0] + "/" + 
              porzioniLineaLetta[1] + "/" + porzioniLineaLetta[1] + "</td>\n");
            streamHTML.print("<td>" + porzioniLineaLetta[3] + "</td>\n</tr>\n");
          }
          streamHTML.print("</table>\n</body>\n</html>");
          streamHTML.close();
        break;
      }
    }
  }
}