package edu.caltech.cs2.project04;

import edu.caltech.cs2.datastructures.ArrayDeque;
import edu.caltech.cs2.datastructures.TrieMap;
import edu.caltech.cs2.interfaces.ICollection;
import edu.caltech.cs2.interfaces.IDeque;
import edu.caltech.cs2.interfaces.ITrieMap;

public class TrieMovieAutoCompleter extends AbstractMovieAutoCompleter {
    private static ITrieMap<String, IDeque<String>, IDeque<String>> titles = new TrieMap<>((IDeque<String> s) -> s);

    public static void populateTitles() {
        for (String title : AbstractMovieAutoCompleter.
                getIDMap().keySet()) {
            IDeque<String> indlettersdeque = new ArrayDeque<>();
            //IDeque<String> singletitle = new ArrayDeque<>();
            for (int i = 0; i < title.length(); i++) {
                indlettersdeque.add(String.valueOf(title.charAt(i)));
            }
            //singletitle.add(title);
            titles.put(indlettersdeque, title);
        }
    }

    public static IDeque<String> complete(String term) {
        IDeque<String> possiblemovienames = new ArrayDeque<>();
        IDeque<String> lettersofterm = new ArrayDeque<>();
        for (int i = 0; i < term.length(); i++) {
            lettersofterm.add(String.valueOf(term.charAt(i)));
        }
        possiblemovienames = titles.getCompletions(lettersofterm);
        return possiblemovienames;
    }
}
