package com.gmail.dpierron.calibre.opds.indexer;

import com.gmail.dpierron.calibre.configuration.ConfigurationManager;
import com.gmail.dpierron.calibre.datamodel.Book;
import com.gmail.dpierron.calibre.opds.CatalogManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.io.File;
import java.io.IOException;

/**
 * all the algorithms needed to index the model objects are stored here
 */
public class IndexManager {
  private final static Logger logger = LogManager.getLogger(IndexManager.class);
  private static Index index = new Index();

  private IndexManager() {
  }

  public void reset () {
    index = new Index();
  }

  public static void indexBook(Book book, String url, String thumbnailUrl) {
    index.indexBook(book, url, thumbnailUrl);
  }

  public static long size() {
    return index.size();
  }

  private static void exportToJavascript(Index pIndex, String name) throws IOException {
  }
 /*
  public static void exportToJavascript() throws IOException {
    Index index2 = index.filterIndex(ConfigurationManager.getCurrentProfile().getMaxKeywords(),
        ConfigurationManager.getCurrentProfile().getIndexFilterAlgorithm());
    File searchFolder = new File(CatalogManager.getGenerateFolder(), "_search");
    searchFolder.mkdirs();
    index2.exportToJavascript(searchFolder);
  }

  public static void exportToJSON() throws IOException {
    Index index2 = index.filterIndex(ConfigurationManager.getCurrentProfile().getMaxKeywords(),
        ConfigurationManager.getCurrentProfile().getIndexFilterAlgorithm());
    File searchFolder = new File(CatalogManager.getGenerateFolder(), "_search");
    searchFolder.mkdirs();
    index2.exportToJSON(searchFolder);
  }
*/
  /**
   * Export search information to Javascript arrays in files
   * @throws IOException
   */
  public static void exportToJavascriptArrays() throws IOException {
    Index index2 = index.filterIndex(ConfigurationManager.getCurrentProfile().getMaxKeywords(),
        ConfigurationManager.getCurrentProfile().getIndexFilterAlgorithm());
    File searchFolder = new File(CatalogManager.getGenerateFolder(), "_search");
    searchFolder = new File(searchFolder, "database");
    searchFolder.mkdirs();
    index2.exportToJavascriptArrays(searchFolder);
  }
}
