Repository: incubator-predictionio-template-java-ecom-recommender
Updated Branches:
  refs/heads/master ae23d8cae -> 36995dfce


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/DataSource.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/DataSource.java 
b/src/main/java/org/template/recommendation/DataSource.java
deleted file mode 100644
index b9648c3..0000000
--- a/src/main/java/org/template/recommendation/DataSource.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.template.recommendation;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.java.PJavaDataSource;
-import io.prediction.data.storage.Event;
-import io.prediction.data.storage.PropertyMap;
-import io.prediction.data.store.java.OptionHelper;
-import io.prediction.data.store.java.PJavaEventStore;
-import org.apache.spark.SparkContext;
-import org.apache.spark.api.java.JavaPairRDD;
-import org.apache.spark.api.java.JavaRDD;
-import org.apache.spark.api.java.function.Function;
-import org.apache.spark.api.java.function.PairFunction;
-import org.apache.spark.rdd.RDD;
-import org.joda.time.DateTime;
-import scala.Option;
-import scala.Tuple2;
-import scala.Tuple3;
-import scala.collection.JavaConversions;
-import scala.collection.JavaConversions$;
-import scala.collection.Seq;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-public class DataSource extends PJavaDataSource<TrainingData, EmptyParams, 
Query, Set<String>> {
-
-    private final DataSourceParams dsp;
-
-    public DataSource(DataSourceParams dsp) {
-        this.dsp = dsp;
-    }
-
-    @Override
-    public TrainingData readTraining(SparkContext sc) {
-        JavaPairRDD<String,User> usersRDD = 
PJavaEventStore.aggregateProperties(
-                dsp.getAppName(),
-                "user",
-                OptionHelper.<String>none(),
-                OptionHelper.<DateTime>none(),
-                OptionHelper.<DateTime>none(),
-                OptionHelper.<List<String>>none(),
-                sc)
-                .mapToPair(new PairFunction<Tuple2<String, PropertyMap>, 
String, User>() {
-                    @Override
-                    public Tuple2<String, User> call(Tuple2<String, 
PropertyMap> entityIdProperty) throws Exception {
-                        Set<String> keys = 
JavaConversions$.MODULE$.setAsJavaSet(entityIdProperty._2().keySet());
-                        Map<String, String> properties = new HashMap<>();
-                        for (String key : keys) {
-                            properties.put(key, entityIdProperty._2().get(key, 
String.class));
-                        }
-
-                        User user = new User(entityIdProperty._1(), 
ImmutableMap.copyOf(properties));
-
-                        return new Tuple2<>(user.getEntityId(), user);
-                    }
-                });
-
-        JavaPairRDD<String, Item> itemsRDD = 
PJavaEventStore.aggregateProperties(
-                dsp.getAppName(),
-                "item",
-                OptionHelper.<String>none(),
-                OptionHelper.<DateTime>none(),
-                OptionHelper.<DateTime>none(),
-                OptionHelper.<List<String>>none(),
-                sc)
-                .mapToPair(new PairFunction<Tuple2<String, PropertyMap>, 
String, Item>() {
-                    @Override
-                    public Tuple2<String, Item> call(Tuple2<String, 
PropertyMap> entityIdProperty) throws Exception {
-                        List<String> categories = 
entityIdProperty._2().getStringList("categories");
-                        Item item = new Item(entityIdProperty._1(), 
ImmutableSet.copyOf(categories));
-
-                        return new Tuple2<>(item.getEntityId(), item);
-                    }
-                });
-
-        JavaRDD<UserItemEvent> viewEventsRDD = PJavaEventStore.find(
-                dsp.getAppName(),
-                OptionHelper.<String>none(),
-                OptionHelper.<DateTime>none(),
-                OptionHelper.<DateTime>none(),
-                OptionHelper.some("user"),
-                OptionHelper.<String>none(),
-                OptionHelper.some(Collections.singletonList("view")),
-                OptionHelper.<Option<String>>none(),
-                OptionHelper.<Option<String>>none(),
-                sc)
-                .map(new Function<Event, UserItemEvent>() {
-                    @Override
-                    public UserItemEvent call(Event event) throws Exception {
-                        return new UserItemEvent(event.entityId(), 
event.targetEntityId().get(), event.eventTime().getMillis(), 
UserItemEventType.VIEW);
-                    }
-                });
-
-        JavaRDD<UserItemEvent> buyEventsRDD = PJavaEventStore.find(
-                dsp.getAppName(),
-                OptionHelper.<String>none(),
-                OptionHelper.<DateTime>none(),
-                OptionHelper.<DateTime>none(),
-                OptionHelper.some("user"),
-                OptionHelper.<String>none(),
-                OptionHelper.some(Collections.singletonList("buy")),
-                OptionHelper.<Option<String>>none(),
-                OptionHelper.<Option<String>>none(),
-                sc)
-                .map(new Function<Event, UserItemEvent>() {
-                    @Override
-                    public UserItemEvent call(Event event) throws Exception {
-                        return new UserItemEvent(event.entityId(), 
event.targetEntityId().get(), event.eventTime().getMillis(), 
UserItemEventType.BUY);
-                    }
-                });
-
-        return new TrainingData(usersRDD, itemsRDD, viewEventsRDD, 
buyEventsRDD);
-    }
-
-    @Override
-    public Seq<Tuple3<TrainingData, EmptyParams, RDD<Tuple2<Query, 
Set<String>>>>> readEval(SparkContext sc) {
-        TrainingData all = readTraining(sc);
-        double[] split = {0.5, 0.5};
-        JavaRDD<UserItemEvent>[] trainingAndTestingViews = 
all.getViewEvents().randomSplit(split, 1);
-        JavaRDD<UserItemEvent>[] trainingAndTestingBuys = 
all.getBuyEvents().randomSplit(split, 1);
-
-        RDD<Tuple2<Query, Set<String>>> queryActual = 
JavaPairRDD.toRDD(trainingAndTestingViews[1].union(trainingAndTestingBuys[1]).groupBy(new
 Function<UserItemEvent, String>() {
-            @Override
-            public String call(UserItemEvent event) throws Exception {
-                return event.getUser();
-            }
-        }).mapToPair(new PairFunction<Tuple2<String, Iterable<UserItemEvent>>, 
Query, Set<String>>() {
-            @Override
-            public Tuple2<Query, Set<String>> call(Tuple2<String, 
Iterable<UserItemEvent>> userEvents) throws Exception {
-                Query query = new Query(userEvents._1(), 10, 
Collections.<String>emptySet(), Collections.<String>emptySet(), 
Collections.<String>emptySet());
-                Set<String> actualSet = new HashSet<>();
-                for (UserItemEvent event : userEvents._2()) {
-                    actualSet.add(event.getItem());
-                }
-                return new Tuple2<>(query, actualSet);
-            }
-        }));
-
-        Tuple3<TrainingData, EmptyParams, RDD<Tuple2<Query, Set<String>>>> 
setData = new Tuple3<>(new TrainingData(all.getUsers(), all.getItems(), 
trainingAndTestingViews[0], trainingAndTestingBuys[0]), new EmptyParams(), 
queryActual);
-
-        return 
JavaConversions.asScalaIterable(Collections.singletonList(setData)).toSeq();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/DataSourceParams.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/DataSourceParams.java 
b/src/main/java/org/template/recommendation/DataSourceParams.java
deleted file mode 100644
index 25ac426..0000000
--- a/src/main/java/org/template/recommendation/DataSourceParams.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.template.recommendation;
-
-import io.prediction.controller.Params;
-
-public class DataSourceParams implements Params{
-    private final String appName;
-
-    public DataSourceParams(String appName) {
-        this.appName = appName;
-    }
-
-    public String getAppName() {
-        return appName;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/Item.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/Item.java 
b/src/main/java/org/template/recommendation/Item.java
deleted file mode 100644
index 1365045..0000000
--- a/src/main/java/org/template/recommendation/Item.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.template.recommendation;
-
-import java.io.Serializable;
-import java.util.Set;
-
-public class Item implements Serializable{
-    private final Set<String> categories;
-    private final String entityId;
-
-    public Item(String entityId, Set<String> categories) {
-        this.categories = categories;
-        this.entityId = entityId;
-    }
-
-    public String getEntityId() {
-        return entityId;
-    }
-
-    public Set<String> getCategories() {
-        return categories;
-    }
-
-    @Override
-    public String toString() {
-        return "Item{" +
-                "categories=" + categories +
-                ", entityId='" + entityId + '\'' +
-                '}';
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/ItemScore.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/ItemScore.java 
b/src/main/java/org/template/recommendation/ItemScore.java
deleted file mode 100644
index a3fca92..0000000
--- a/src/main/java/org/template/recommendation/ItemScore.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.template.recommendation;
-
-import java.io.Serializable;
-
-public class ItemScore implements Serializable, Comparable<ItemScore> {
-    private final String itemEntityId;
-    private final double score;
-
-    public ItemScore(String itemEntityId, double score) {
-        this.itemEntityId = itemEntityId;
-        this.score = score;
-    }
-
-    public String getItemEntityId() {
-        return itemEntityId;
-    }
-
-    public double getScore() {
-        return score;
-    }
-
-    @Override
-    public String toString() {
-        return "ItemScore{" +
-                "itemEntityId='" + itemEntityId + '\'' +
-                ", score=" + score +
-                '}';
-    }
-
-    @Override
-    public int compareTo(ItemScore o) {
-        return Double.valueOf(score).compareTo(o.score);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/Model.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/Model.java 
b/src/main/java/org/template/recommendation/Model.java
deleted file mode 100644
index 129cb2a..0000000
--- a/src/main/java/org/template/recommendation/Model.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.template.recommendation;
-
-import io.prediction.controller.Params;
-import io.prediction.controller.PersistentModel;
-import org.apache.spark.SparkContext;
-import org.apache.spark.api.java.JavaPairRDD;
-import org.apache.spark.api.java.JavaRDD;
-import org.apache.spark.api.java.JavaSparkContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import scala.Tuple2;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.Map;
-
-public class Model implements Serializable, PersistentModel<AlgorithmParams> {
-    private static final Logger logger = LoggerFactory.getLogger(Model.class);
-    private final JavaPairRDD<Integer, double[]> userFeatures;
-    private final JavaPairRDD<Integer, Tuple2<String, double[]>> 
indexItemFeatures;
-    private final JavaPairRDD<String, Integer> userIndex;
-    private final JavaPairRDD<String, Integer> itemIndex;
-    private final JavaRDD<ItemScore> itemPopularityScore;
-    private final Map<String, Item> items;
-
-    public Model(JavaPairRDD<Integer, double[]> userFeatures, 
JavaPairRDD<Integer, Tuple2<String, double[]>> indexItemFeatures, 
JavaPairRDD<String, Integer> userIndex, JavaPairRDD<String, Integer> itemIndex, 
JavaRDD<ItemScore> itemPopularityScore, Map<String, Item> items) {
-        this.userFeatures = userFeatures;
-        this.indexItemFeatures = indexItemFeatures;
-        this.userIndex = userIndex;
-        this.itemIndex = itemIndex;
-        this.itemPopularityScore = itemPopularityScore;
-        this.items = items;
-    }
-
-    public JavaPairRDD<Integer, double[]> getUserFeatures() {
-        return userFeatures;
-    }
-
-    public JavaPairRDD<Integer, Tuple2<String, double[]>> 
getIndexItemFeatures() {
-        return indexItemFeatures;
-    }
-
-    public JavaPairRDD<String, Integer> getUserIndex() {
-        return userIndex;
-    }
-
-    public JavaPairRDD<String, Integer> getItemIndex() {
-        return itemIndex;
-    }
-
-    public JavaRDD<ItemScore> getItemPopularityScore() {
-        return itemPopularityScore;
-    }
-
-    public Map<String, Item> getItems() {
-        return items;
-    }
-
-    @Override
-    public boolean save(String id, AlgorithmParams params, SparkContext sc) {
-        userFeatures.saveAsObjectFile("/tmp/" + id + "/userFeatures");
-        indexItemFeatures.saveAsObjectFile("/tmp/" + id + 
"/indexItemFeatures");
-        userIndex.saveAsObjectFile("/tmp/" + id + "/userIndex");
-        itemIndex.saveAsObjectFile("/tmp/" + id + "/itemIndex");
-        itemPopularityScore.saveAsObjectFile("/tmp/" + id + 
"/itemPopularityScore");
-        new 
JavaSparkContext(sc).parallelize(Collections.singletonList(items)).saveAsObjectFile("/tmp/"
 + id + "/items");
-
-        logger.info("Saved model to /tmp/" + id);
-        return true;
-    }
-
-    public static Model load(String id, Params params, SparkContext sc) {
-        JavaSparkContext jsc = JavaSparkContext.fromSparkContext(sc);
-        JavaPairRDD<Integer, double[]> userFeatures = JavaPairRDD.<Integer, 
double[]>fromJavaRDD(jsc.<Tuple2<Integer, double[]>>objectFile("/tmp/" + id + 
"/userFeatures"));
-        JavaPairRDD<Integer, Tuple2<String, double[]>> indexItemFeatures = 
JavaPairRDD.<Integer, Tuple2<String, double[]>>fromJavaRDD(jsc.<Tuple2<Integer, 
Tuple2<String, double[]>>>objectFile("/tmp/" + id + "/indexItemFeatures"));
-        JavaPairRDD<String, Integer> userIndex = JavaPairRDD.<String, 
Integer>fromJavaRDD(jsc.<Tuple2<String, Integer>>objectFile("/tmp/" + id + 
"/userIndex"));
-        JavaPairRDD<String, Integer> itemIndex = JavaPairRDD.<String, 
Integer>fromJavaRDD(jsc.<Tuple2<String, Integer>>objectFile("/tmp/" + id + 
"/itemIndex"));
-        JavaRDD<ItemScore> itemPopularityScore = jsc.objectFile("/tmp/" + id + 
"/itemPopularityScore");
-        Map<String, Item> items = jsc.<Map<String, Item>>objectFile("/tmp/" + 
id + "/items").collect().get(0);
-
-        logger.info("loaded model");
-        return new Model(userFeatures, indexItemFeatures, userIndex, 
itemIndex, itemPopularityScore, items);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/PredictedResult.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/PredictedResult.java 
b/src/main/java/org/template/recommendation/PredictedResult.java
deleted file mode 100644
index b89c3a9..0000000
--- a/src/main/java/org/template/recommendation/PredictedResult.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.template.recommendation;
-
-import java.io.Serializable;
-import java.util.List;
-
-public class PredictedResult implements Serializable{
-    private final List<ItemScore> itemScores;
-
-    public PredictedResult(List<ItemScore> itemScores) {
-        this.itemScores = itemScores;
-    }
-
-    public List<ItemScore> getItemScores() {
-        return itemScores;
-    }
-
-    @Override
-    public String toString() {
-        return "PredictedResult{" +
-                "itemScores=" + itemScores +
-                '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/Preparator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/Preparator.java 
b/src/main/java/org/template/recommendation/Preparator.java
deleted file mode 100644
index 003855b..0000000
--- a/src/main/java/org/template/recommendation/Preparator.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.template.recommendation;
-
-import io.prediction.controller.java.PJavaPreparator;
-import org.apache.spark.SparkContext;
-
-public class Preparator extends PJavaPreparator<TrainingData, PreparedData> {
-
-    @Override
-    public PreparedData prepare(SparkContext sc, TrainingData trainingData) {
-        return new PreparedData(trainingData);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/PreparedData.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/PreparedData.java 
b/src/main/java/org/template/recommendation/PreparedData.java
deleted file mode 100644
index 6f732cc..0000000
--- a/src/main/java/org/template/recommendation/PreparedData.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.template.recommendation;
-
-import java.io.Serializable;
-
-public class PreparedData implements Serializable {
-    private final TrainingData trainingData;
-
-    public PreparedData(TrainingData trainingData) {
-        this.trainingData = trainingData;
-    }
-
-    public TrainingData getTrainingData() {
-        return trainingData;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/Query.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/Query.java 
b/src/main/java/org/template/recommendation/Query.java
deleted file mode 100644
index 316553d..0000000
--- a/src/main/java/org/template/recommendation/Query.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.template.recommendation;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.Set;
-
-public class Query implements Serializable{
-    private final String userEntityId;
-    private final int number;
-    private final Set<String> categories;
-    private final Set<String> whitelist;
-    private final Set<String> blacklist;
-
-    public Query(String userEntityId, int number, Set<String> categories, 
Set<String> whitelist, Set<String> blacklist) {
-        this.userEntityId = userEntityId;
-        this.number = number;
-        this.categories = categories;
-        this.whitelist = whitelist;
-        this.blacklist = blacklist;
-    }
-
-    public String getUserEntityId() {
-        return userEntityId;
-    }
-
-    public int getNumber() {
-        return number;
-    }
-
-    public Set<String> getCategories() {
-        if (categories == null) return Collections.emptySet();
-        return categories;
-    }
-
-    public Set<String> getWhitelist() {
-        if (whitelist == null) return Collections.emptySet();
-        return whitelist;
-    }
-
-    public Set<String> getBlacklist() {
-        if (blacklist == null) return Collections.emptySet();
-        return blacklist;
-    }
-
-    @Override
-    public String toString() {
-        return "Query{" +
-                "userEntityId='" + userEntityId + '\'' +
-                ", number=" + number +
-                ", categories=" + categories +
-                ", whitelist=" + whitelist +
-                ", blacklist=" + blacklist +
-                '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/RecommendationEngine.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/template/recommendation/RecommendationEngine.java 
b/src/main/java/org/template/recommendation/RecommendationEngine.java
deleted file mode 100644
index d757737..0000000
--- a/src/main/java/org/template/recommendation/RecommendationEngine.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.template.recommendation;
-
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.Engine;
-import io.prediction.controller.EngineFactory;
-import io.prediction.core.BaseAlgorithm;
-import io.prediction.core.BaseEngine;
-
-import java.util.Collections;
-import java.util.Set;
-
-public class RecommendationEngine extends EngineFactory {
-
-    @Override
-    public BaseEngine<EmptyParams, Query, PredictedResult, Set<String>> 
apply() {
-        return new Engine<>(
-                DataSource.class,
-                Preparator.class,
-                Collections.<String, Class<? extends 
BaseAlgorithm<PreparedData, ?, Query, PredictedResult>>>singletonMap("algo", 
Algorithm.class),
-                Serving.class
-        );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/Serving.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/Serving.java 
b/src/main/java/org/template/recommendation/Serving.java
deleted file mode 100644
index 6a122da..0000000
--- a/src/main/java/org/template/recommendation/Serving.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.template.recommendation;
-
-import io.prediction.controller.java.LJavaServing;
-import scala.collection.Seq;
-
-public class Serving extends LJavaServing<Query, PredictedResult> {
-
-    @Override
-    public PredictedResult serve(Query query, Seq<PredictedResult> 
predictions) {
-        return predictions.head();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/TrainingData.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/TrainingData.java 
b/src/main/java/org/template/recommendation/TrainingData.java
deleted file mode 100644
index 7b800f1..0000000
--- a/src/main/java/org/template/recommendation/TrainingData.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.template.recommendation;
-
-import io.prediction.controller.SanityCheck;
-import org.apache.spark.api.java.JavaPairRDD;
-import org.apache.spark.api.java.JavaRDD;
-
-import java.io.Serializable;
-
-public class TrainingData implements Serializable, SanityCheck {
-    private final JavaPairRDD<String, User> users;
-    private final JavaPairRDD<String, Item> items;
-    private final JavaRDD<UserItemEvent> viewEvents;
-    private final JavaRDD<UserItemEvent> buyEvents;
-
-    public TrainingData(JavaPairRDD<String, User> users, JavaPairRDD<String, 
Item> items, JavaRDD<UserItemEvent> viewEvents, JavaRDD<UserItemEvent> 
buyEvents) {
-        this.users = users;
-        this.items = items;
-        this.viewEvents = viewEvents;
-        this.buyEvents = buyEvents;
-    }
-
-    public JavaPairRDD<String, User> getUsers() {
-        return users;
-    }
-
-    public JavaPairRDD<String, Item> getItems() {
-        return items;
-    }
-
-    public JavaRDD<UserItemEvent> getViewEvents() {
-        return viewEvents;
-    }
-
-    public JavaRDD<UserItemEvent> getBuyEvents() {
-        return buyEvents;
-    }
-
-    @Override
-    public void sanityCheck() {
-        if (users.isEmpty()) {
-            throw new AssertionError("User data is empty");
-        }
-        if (items.isEmpty()) {
-            throw new AssertionError("Item data is empty");
-        }
-        if (viewEvents.isEmpty()) {
-            throw new AssertionError("View Event data is empty");
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/User.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/User.java 
b/src/main/java/org/template/recommendation/User.java
deleted file mode 100644
index f5f3cc1..0000000
--- a/src/main/java/org/template/recommendation/User.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.template.recommendation;
-
-import java.io.Serializable;
-import java.util.Map;
-
-public class User implements Serializable {
-    private final String entityId;
-    private final Map<String, String> properties;
-
-    public User(String entityId, Map<String, String> properties) {
-        this.entityId = entityId;
-        this.properties = properties;
-    }
-
-    public String getEntityId() {
-        return entityId;
-    }
-
-    public Map<String, String> getProperties() {
-        return properties;
-    }
-
-    @Override
-    public String toString() {
-        return "User{" +
-                "entityId='" + entityId + '\'' +
-                ", properties=" + properties +
-                '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/UserItemEvent.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/UserItemEvent.java 
b/src/main/java/org/template/recommendation/UserItemEvent.java
deleted file mode 100644
index 3da56ca..0000000
--- a/src/main/java/org/template/recommendation/UserItemEvent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.template.recommendation;
-
-import java.io.Serializable;
-
-public class UserItemEvent implements Serializable {
-    private final String user;
-    private final String item;
-    private final long time;
-    private final UserItemEventType type;
-
-    public UserItemEvent(String user, String item, long time, 
UserItemEventType type) {
-        this.user = user;
-        this.item = item;
-        this.time = time;
-        this.type = type;
-    }
-
-    public String getUser() {
-        return user;
-    }
-
-    public String getItem() {
-        return item;
-    }
-
-    public long getTime() {
-        return time;
-    }
-
-    public UserItemEventType getType() {
-        return type;
-    }
-
-    @Override
-    public String toString() {
-        return "UserItemEvent{" +
-                "user='" + user + '\'' +
-                ", item='" + item + '\'' +
-                ", time=" + time +
-                ", type=" + type +
-                '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/UserItemEventType.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/template/recommendation/UserItemEventType.java 
b/src/main/java/org/template/recommendation/UserItemEventType.java
deleted file mode 100644
index 6728cef..0000000
--- a/src/main/java/org/template/recommendation/UserItemEventType.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.template.recommendation;
-
-public enum UserItemEventType {
-    VIEW, BUY
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java 
b/src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java
deleted file mode 100644
index da15a77..0000000
--- 
a/src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.template.recommendation.evaluation;
-
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.EngineParams;
-import io.prediction.controller.java.JavaEngineParamsGenerator;
-import org.template.recommendation.AlgorithmParams;
-import org.template.recommendation.DataSourceParams;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-public class EvaluationParameter extends JavaEngineParamsGenerator {
-    public EvaluationParameter() {
-        this.setEngineParamsList(
-                Collections.singletonList(
-                        new EngineParams(
-                                "",
-                                new DataSourceParams("javadase"),
-                                "",
-                                new EmptyParams(),
-                                Collections.singletonMap("algo", new 
AlgorithmParams(1, 10, 10, 0.01, "javadase", Collections.singletonList("view"), 
true, Arrays.asList("buy", "view"))),
-                                "",
-                                new EmptyParams()
-                        )
-                )
-        );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java 
b/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java
deleted file mode 100644
index bfecca1..0000000
--- a/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.template.recommendation.evaluation;
-
-import io.prediction.controller.Engine;
-import io.prediction.controller.java.JavaEvaluation;
-import io.prediction.core.BaseAlgorithm;
-import org.template.recommendation.Algorithm;
-import org.template.recommendation.DataSource;
-import org.template.recommendation.PredictedResult;
-import org.template.recommendation.Preparator;
-import org.template.recommendation.PreparedData;
-import org.template.recommendation.Query;
-import org.template.recommendation.Serving;
-
-import java.util.Collections;
-
-public class EvaluationSpec extends JavaEvaluation {
-    public EvaluationSpec() {
-        this.setEngineMetric(
-                new Engine<>(
-                        DataSource.class,
-                        Preparator.class,
-                        Collections.<String, Class<? extends 
BaseAlgorithm<PreparedData, ?, Query, PredictedResult>>>singletonMap("algo", 
Algorithm.class),
-                        Serving.class
-                ),
-                new PrecisionMetric()
-        );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java 
b/src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java
deleted file mode 100644
index 277925d..0000000
--- a/src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.template.recommendation.evaluation;
-
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.Metric;
-import io.prediction.controller.java.SerializableComparator;
-import org.apache.spark.SparkContext;
-import org.apache.spark.api.java.function.Function;
-import org.apache.spark.rdd.RDD;
-import org.template.recommendation.ItemScore;
-import org.template.recommendation.PredictedResult;
-import org.template.recommendation.Query;
-import scala.Tuple2;
-import scala.Tuple3;
-import scala.collection.JavaConversions;
-import scala.collection.Seq;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public class PrecisionMetric extends Metric<EmptyParams, Query, 
PredictedResult, Set<String>, Double> {
-
-    private static final class MetricComparator implements 
SerializableComparator<Double> {
-        @Override
-        public int compare(Double o1, Double o2) {
-            return o1.compareTo(o2);
-        }
-    }
-
-    public PrecisionMetric() {
-        super(new MetricComparator());
-    }
-
-    @Override
-    public Double calculate(SparkContext sc, Seq<Tuple2<EmptyParams, 
RDD<Tuple3<Query, PredictedResult, Set<String>>>>> qpas) {
-        List<Tuple2<EmptyParams, RDD<Tuple3<Query, PredictedResult, 
Set<String>>>>> sets = JavaConversions.asJavaList(qpas);
-        List<Double> allSetResults = new ArrayList<>();
-
-        for (Tuple2<EmptyParams, RDD<Tuple3<Query, PredictedResult, 
Set<String>>>> set : sets) {
-            List<Double> setResults = set._2().toJavaRDD().map(new 
Function<Tuple3<Query, PredictedResult, Set<String>>, Double>() {
-                @Override
-                public Double call(Tuple3<Query, PredictedResult, Set<String>> 
qpa) throws Exception {
-                    Set<String> predicted = new HashSet<>();
-                    for (ItemScore itemScore : qpa._2().getItemScores()) {
-                        predicted.add(itemScore.getItemEntityId());
-                    }
-                    Set<String> intersection = new HashSet<>(predicted);
-                    intersection.retainAll(qpa._3());
-
-                    return 1.0 * intersection.size() / 
qpa._2().getItemScores().size();
-                }
-            }).collect();
-
-            allSetResults.addAll(setResults);
-        }
-        double sum = 0.0;
-        for (Double value : allSetResults) sum += value;
-
-        return sum / allSetResults.size();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-template-java-ecom-recommender/blob/36995dfc/template.json
----------------------------------------------------------------------
diff --git a/template.json b/template.json
index 7f97fce..d076ec5 100644
--- a/template.json
+++ b/template.json
@@ -1 +1 @@
-{"pio": {"version": { "min": "0.9.3" }}}
+{"pio": {"version": { "min": "0.10.0-incubating" }}}

Reply via email to