package com.cloutree.modelevaluator; import java.io.File; import java.util.logging.Logger; import com.cloutree.modelevaluator.exception.InvalidModelException; import com.cloutree.modelevaluator.impl.pmml.PmmlPredictiveModel; /** * Cloutree Modelevaluator * A wrapper for different predictive analysis libraries to be used by Java Apps. * * Copyright (C) 2014 Marc Schachtel * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ /** * This is the factory to create a {@link PredictiveModel} for a respective model-type. Please use this as the only way * to instantiate a {@link PredictiveModel}! * * @author marc * * Since 09.08.2013 */ public class PredictiveModelFactory { static Logger log = Logger.getLogger(PredictiveModelFactory.class.getName()); protected static PredictiveModel getPredictiveModel(ModelTypes implementation) throws Exception { if(implementation.equals(ModelTypes.PMML)) { PredictiveModel pmmlModel = new PmmlPredictiveModel(); return pmmlModel; } // TODO Activate as soon as native R is stable // else if(implementation.equals(ModelTypes.NativeR)) { // // // TODO Remove as soon as native R is stable // log.log(Level.WARNING, "Native R not tested yet!"); // // PredictiveModel rModel = new RPredictiveModel(); // // return rModel; // } throw new InvalidModelException(); } /** * Create an instance of {@link PredictiveModel} with given {@link ModelTypes} and a path to the model file. * * @param implementation * @param filePath * @return * @throws Exception */ public static PredictiveModel getPredictiveModel(ModelTypes implementation, String filePath) throws Exception { File file = new File(filePath); return getPredictiveModel(implementation,file); } /** * Create an instance of {@link PredictiveModel} with given {@link ModelTypes} and {@link File}. * * @param implementation * @param filePath * @return * @throws Exception */ public static PredictiveModel getPredictiveModel(ModelTypes implementation, File file) throws Exception { PredictiveModel predModel = getPredictiveModel(implementation); if(predModel == null) throw new InvalidModelException(); // Set File if(!file.exists()) { throw new Exception("Model File not found! " + file.getAbsolutePath()); } PredictiveModelFile modelFile = new PredictiveModelFile(file); predModel.setPredictiveModelFile(modelFile); return predModel; } }