package hex.genmodel; import hex.genmodel.algos.deepwater.DeepwaterMojoReader; import hex.genmodel.algos.drf.DrfMojoReader; import hex.genmodel.algos.gbm.GbmMojoReader; import hex.genmodel.algos.glm.GlmMojoReader; import hex.genmodel.algos.glrm.GlrmMojoReader; import hex.genmodel.algos.klime.KLimeMojoReader; import hex.genmodel.algos.kmeans.KMeansMojoReader; import hex.genmodel.algos.word2vec.Word2VecMojoReader; /** * Factory class for instantiating specific MojoGenmodel classes based on the algo name. */ public class ModelMojoFactory { public static ModelMojoReader getMojoReader(String algo) { if (algo == null) throw new IllegalArgumentException("Algorithm not specified."); switch (algo) { case "Distributed Random Forest": return new DrfMojoReader(); case "Gradient Boosting Method": case "Gradient Boosting Machine": return new GbmMojoReader(); case "Deep Water": return new DeepwaterMojoReader(); case "Generalized Low Rank Modeling": case "Generalized Low Rank Model": return new GlrmMojoReader(); case "Generalized Linear Modeling": case "Generalized Linear Model": return new GlmMojoReader(); case "Word2Vec": return new Word2VecMojoReader(); case "K-means": return new KMeansMojoReader(); case "k-LIME": return new KLimeMojoReader(); default: throw new IllegalStateException("Unsupported MOJO algorithm: " + algo); } } }