import java.io.File;

import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.similarity.UncenteredCosineSimilarity;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;


public class Client {
    public static void main(String[] args) throws Exception {
        DataModel model = new FileDataModel(new File("data/data.txt"));
        UserSimilarity similar = new UncenteredCosineSimilarity(model);
        UserNeighborhood neighbor = new NearestNUserNeighborhood(model.getNumUsers(), similar, model);
        UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighbor, similar);

        LongPrimitiveIterator users = model.getUserIDs();

        while(users.hasNext()) {
            long user = users.next();
            System.out.println(user + " -> " + recommender.recommend(user, 10));


            /*
            LongPrimitiveIterator items = model.getItemIDs();

            while(items.hasNext()) {
                long item = items.next();
                System.out.println(user + " -> " + item + " = " + recommender.estimatePreference(user, item));
            }
            */
        }
    }
}