/**
* Copyright 2012 plista GmbH (http://www.plista.com/)
*
* 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 org.plista.kornakapi.core.config;
import com.google.common.collect.Lists;
import com.thoughtworks.xstream.XStream;
import java.util.List;
/** basic configuration object for the weblayer */
public class Configuration {
/** directory to store the models in */
private String modelDirectory;
/** number of cores to use for training */
private int numProcessorsForTraining;
/** if true, preference values can only be overwritten by bigger values*/
private boolean maxPersistence;
/** linear rating decay*/
private float ratingDecay;
private StorageConfiguration storageConfiguration;
private List<ItembasedRecommenderConfig> itembasedRecommenders = Lists.newArrayList();
private List<FactorizationbasedRecommenderConfig> factorizationbasedRecommenders = Lists.newArrayList();
private List<StreamingKMeansClustererConfig> streamingKMeansClusterers = Lists.newArrayList();
public static Configuration fromXML(String xml) {
XStream serializer = new XStream();
serializer.alias("configuration", Configuration.class);
serializer.alias("itembasedRecommender", ItembasedRecommenderConfig.class);
serializer.alias("factorizationbasedRecommender", FactorizationbasedRecommenderConfig.class);
serializer.alias("streamingKMeansClusterer", StreamingKMeansClustererConfig.class);
return (Configuration) serializer.fromXML(xml);
}
public String getModelDirectory() {
return modelDirectory;
}
public List<ItembasedRecommenderConfig> getItembasedRecommenders() {
return itembasedRecommenders;
}
public void addItembasedRecommender(ItembasedRecommenderConfig itembasedRecommender) {
itembasedRecommenders.add(itembasedRecommender);
}
public List<FactorizationbasedRecommenderConfig> getFactorizationbasedRecommenders() {
return factorizationbasedRecommenders;
}
public List<StreamingKMeansClustererConfig> getStreamingKMeansClusterer() {
return streamingKMeansClusterers;
}
public void addStreamingKMeansClusterer(StreamingKMeansClustererConfig StreamingKMeansClusterer){
streamingKMeansClusterers.add(StreamingKMeansClusterer);
}
public void addFactorizationbasedRecommender(FactorizationbasedRecommenderConfig factorizationbasedRecommender) {
factorizationbasedRecommenders.add(factorizationbasedRecommender);
}
public void setModelDirectory(String modelDirectory) {
this.modelDirectory = modelDirectory;
}
public StorageConfiguration getStorageConfiguration() {
return storageConfiguration;
}
public void setStorageConfiguration(StorageConfiguration storageConfiguration) {
this.storageConfiguration = storageConfiguration;
}
public int getNumProcessorsForTraining() {
return numProcessorsForTraining;
}
public void setNumProcessorsForTraining(int numProcessorsForTraining) {
this.numProcessorsForTraining = numProcessorsForTraining;
}
public boolean getMaxPersistence(){
return maxPersistence;
}
}