/**
 *
 * Copyright INRA-URGI 2009-2010
 * 
 * This software is governed by the CeCILL license under French law and
 * abiding by the rules of distribution of free software. You can use,
 * modify and/ or redistribute the software under the terms of the CeCILL
 * license as circulated by CEA, CNRS and INRIA at the following URL
 * "http://www.cecill.info".
 * 
 * As a counterpart to the access to the source code and rights to copy,
 * modify and redistribute granted by the license, users are provided only
 * with a limited warranty and the software's author, the holder of the
 * economic rights, and the successive licensors have only limited
 * liability.
 * 
 * In this respect, the user's attention is drawn to the risks associated
 * with loading, using, modifying and/or developing or reproducing the
 * software by the user in light of its specific status of free software,
 * that may mean that it is complicated to manipulate, and that also
 * therefore means that it is reserved for developers and experienced
 * professionals having in-depth computer knowledge. Users are therefore
 * encouraged to load and test the software's suitability as regards their
 * requirements in conditions enabling the security of their systems and/or
 * data to be ensured and, more generally, to use and operate it in the
 * same conditions as regards security.
 * 
 * The fact that you are presently reading this means that you have had
 * knowledge of the CeCILL license and that you accept its terms.
 *
 */
import java.util.*;
import java.io.File;
import java.io.*;


public class ProgramFileReader {
  String fileName;
  Vector <Program> programs;


  public ProgramFileReader(String fileName) {
    this.fileName = fileName;  
    this.programs = new Vector <Program> ();
  }


  public boolean read() {
//  File    file    = new File(this.fileName);
//  Program program = null;
//  int     step    = 0;
//  TreeMap <String, ProgramOption> options = new TreeMap <String, ProgramOption> ();

//  try {
//    BufferedReader reader = new BufferedReader(new FileReader(file));
//    String line    = null;
//    String section = null;

//    while ((line = reader.readLine()) != null) {

//      line = line.trim();

//      if (line.length() == 0) {
//        if (program != null) {
//          programs.add(program);
//        }
//        program = null;
//        step = 0;
//        continue;
//      }

//      if ((line.charAt(0) == '[') && (line.charAt(line.length() - 1) == ']')) {
//        section = line.substring(1, line.length() - 1).trim();
//        continue;
//      }
//      switch (step) {
//        case 0:
//        program = new Program();
//          program.setName(line);
//          if (section == null) {
//            System.out.println("Error! Section of program '" + line + "' is not set!");
//          }
//          program.setSection(section);
//          step = 1;
//          break;
//        case 1:
//          program.setShortName(line);
//          step = 2;
//          break;
//        case 2:
//          ProgramOption option = new ProgramOption();

//          String[] elements    = line.split(":");
//          boolean  input       = elements[0].trim().equalsIgnoreCase("input")? true: false;
//          String[] subElements = elements[1].split(";");
//          String   identifier = subElements[0].trim();

//          option.setInput(input);

//          if (input) {

//            if (subElements.length < 4) {
//              System.out.println("Line '" + line + "' is weird...");
//            }

//            String   type       = subElements[1].trim();
//            String   comment    = subElements[2].trim();
//            boolean  compulsory = subElements[3].trim().equalsIgnoreCase("0")? false: true;

//            option.setIdentifier(identifier);
//            option.setType(type);
//            option.setComment(comment);
//            option.setCompulsory(compulsory);

//            if ("file".compareToIgnoreCase(type) == 0) {
//              if (subElements.length < 5) {
//                System.out.println("Line '" + line + "' is weird...");
//              }

//              String formatIdentifier = subElements[4].trim();
//              option.setFormatIdentifier(formatIdentifier);
//            }
//            else if ("choice".compareToIgnoreCase(type) == 0) {
//              if (subElements.length < 5) {
//                System.out.println("Line '" + line + "' is weird...");
//              }

//              String[] choices = subElements[4].trim().split(",");
//              for (int i = 0; i < choices.length; i++) {
//                choices[i] = choices[i].trim();
//              }
//              option.setChoices(choices);
//            }
//            options.put(identifier, option);
//          }
//          else {
//            String format = subElements[1].trim();

//            option.setFormat(format);
//            option.setAssociatedOption(options.get(identifier));
//          }

//          program.addOption(option);

//          break;
//        default:
//          return false;
//      }
//    }

//    reader.close();
//  }
//  catch (FileNotFoundException e) {
//    return false;
//  }
//  catch (IOException e) {
//    return false;
//  }

//  if (program != null) {
//    programs.add(program);
//  }

    return true;
  }

  public int getNbPrograms() {
    return programs.size();
  }

  public Program getProgram(int i) {
    return programs.get(i);
  }
}
