package org.iatoki.judgels.raguel.forum.module; import com.google.gson.Gson; import org.iatoki.judgels.raguel.forum.module.exclusive.ForumExclusiveModule; import org.iatoki.judgels.raguel.forum.module.member.ForumMemberModule; import org.iatoki.judgels.raguel.forum.module.thread.ForumThreadModule; public final class ForumModuleFactory { public ForumModule createDefaultForumModule(ForumModules forumModules) { switch (forumModules) { case THREAD: return new ForumThreadModule(); case MEMBER: return new ForumMemberModule(); case EXCLUSIVE: return new ForumExclusiveModule(); default: throw new RuntimeException(); } } public ForumModule parseFromConfig(ForumModules forumModules, String config) { switch (forumModules) { case THREAD: return new Gson().fromJson(config, ForumThreadModule.class); case MEMBER: return new Gson().fromJson(config, ForumMemberModule.class); case EXCLUSIVE: return new Gson().fromJson(config, ForumExclusiveModule.class); default: throw new RuntimeException(); } } }