/**
   * Devuelve la lista de ficheros de paletas, en caso de que no exista la paleta y se especifique
   * forceCreate a true, se creara la paleta por defecto.
   *
   * @param palettesBasePath
   * @param forceCreate
   * @return
   */
  public static ArrayList getPaletteFileList(String palettesBasePath, boolean forceCreate) {
    ArrayList fileList = getPaletteFileListDisc(palettesBasePath);

    if (forceCreate && (fileList.size() == 0)) {
      ColorTableLibraryPersistence persistence = new ColorTableLibraryPersistence();
      createVersionFromXML(palettesBasePath, persistence.getDefaultPaletteXML());
      fileList = getPaletteFileListDisc(palettesBasePath);
    }

    return fileList;
  }
  /**
   * Si existe la version de paleta 1.1, no lo actualizará, en caso contrario, buscara la version
   * 1.0 y si lo encuentra lo subirá a la 1.1
   *
   * @param palettesPath
   */
  public static void updateVersion_1_0_to_1_1(String palettesBasePath) {
    // Si no existe la paleta antigua, pero si que existe la copia de seguridad,
    // la restauramos
    File palettesFile =
        new File(
            new File(palettesBasePath).getParent().toString() + File.separator + "palettes.xml");
    if (!palettesFile.exists()) {
      // Cambiar nombre a antiguo fichero
      File oldFile =
          new File(
              new File(palettesBasePath).getParent().toString() + File.separator + "palettes.xml~");
      if (oldFile.exists()) {
        oldFile.renameTo(
            new File(
                new File(palettesBasePath).getParent().toString()
                    + File.separator
                    + "palettes.xml"));
      } else {
        ColorTableLibraryPersistence ctlp = new ColorTableLibraryPersistence();
        String text = ctlp.getDefaultPaletteXML();
        palettesFile =
            new File(
                new File(palettesBasePath).getParent().toString()
                    + File.separator
                    + "palettes.xml");
        try {
          FileWriter writer = new FileWriter(palettesFile);
          writer.write(text);
          writer.close();
        } catch (IOException e) {
        }
      }
    }

    // Si existe el directorio de la version 1.1 no hacemos la migración
    File directoryFile = new File(palettesBasePath);
    if (directoryFile.exists()) return;

    // Si no encontramos la paleta antigua, nos olvidamos de continuar
    palettesFile =
        new File(
            new File(palettesBasePath).getParent().toString() + File.separator + "palettes.xml");
    if (!palettesFile.exists()) return;

    // Paleta antigua encontrada, podemos migrar a la versión nueva
    try {
      FileInputStream inputStream = new FileInputStream(palettesFile);

      StringBuffer contents = new StringBuffer();
      try {

        int i;
        while (true) {
          i = inputStream.read();
          if (i == -1) break;
          char c = (char) i;
          contents.append(c);
        }
      } catch (IOException e) {
        e.printStackTrace();
      }

      createVersionFromXML(palettesBasePath, contents.toString());

      inputStream.close();

    } catch (FileNotFoundException fnfEx) {
      fnfEx.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }