/*
* Seldon -- open source prediction engine
* =======================================
*
* Copyright 2011-2015 Seldon Technologies Ltd and Rummble Ltd (http://www.seldon.io/)
*
* ********************************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* ********************************************************************************************
*/
package io.seldon.recommendation;
import io.seldon.recommendation.combiner.AlgorithmResultsCombiner;
import java.util.List;
import java.util.Map;
/**
* Client strategy when using rec tags.
* @author firemanphil
* Date: 04/03/15
* Time: 11:10
*/
public class RecTagClientStrategy implements ClientStrategy {
private static final String DEFAULT_REC_TAG = "";
private final ClientStrategy defaulStrategy;
private final Map<String, ClientStrategy> recTagToStrategy;
public RecTagClientStrategy(ClientStrategy defaulStrategy, Map<String, ClientStrategy> recTagToStrategy) {
this.defaulStrategy = defaulStrategy;
this.recTagToStrategy = recTagToStrategy;
}
@Override
public Double getDiversityLevel(String userId, String recTag) {
return getStrategy(recTag).getDiversityLevel(userId, recTag);
}
@Override
public List<AlgorithmStrategy> getAlgorithms(String userId, String recTag) {
return getStrategy(recTag).getAlgorithms(userId, recTag);
}
@Override
public AlgorithmResultsCombiner getAlgorithmResultsCombiner(String userId, String recTag) {
return getStrategy(recTag).getAlgorithmResultsCombiner(userId, recTag);
}
@Override
public String getName(String userId, String recTag) {
return getStrategy(recTag).getName(userId,recTag);
}
@Override
public Map<Integer, Double> getActionsWeights(String userId, String recTag) {
return getStrategy(recTag).getActionsWeights(userId, recTag);
}
private ClientStrategy getStrategy(String recTag){
if(recTag!=null && !recTag.equals(DEFAULT_REC_TAG)){
// we have a rectag...
ClientStrategy recTagStrat = recTagToStrategy.get(recTag);
if(recTagStrat!=null){
return recTagStrat;
}
}
return defaulStrategy;
}
}