/* * Copyright 2007 Zhang, Zheng <oldbig@gmail.com> Xu Chuan <xuchuan@gmail.com> * * This file is part of ZOJ. * * ZOJ 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 revision 3 of the License, or (at your option) any later revision. * * ZOJ 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 ZOJ. if not, see * <http://www.gnu.org/licenses/>. */ package cn.edu.zju.acm.onlinejudge.util; import cn.edu.zju.acm.onlinejudge.bean.enumeration.Country; import cn.edu.zju.acm.onlinejudge.persistence.AuthorizationPersistence; import cn.edu.zju.acm.onlinejudge.persistence.ConfigurationPersistence; import cn.edu.zju.acm.onlinejudge.persistence.ContestPersistence; import cn.edu.zju.acm.onlinejudge.persistence.ForumPersistence; import cn.edu.zju.acm.onlinejudge.persistence.LanguagePersistence; import cn.edu.zju.acm.onlinejudge.persistence.PersistenceCreationException; import cn.edu.zju.acm.onlinejudge.persistence.PersistenceException; import cn.edu.zju.acm.onlinejudge.persistence.ProblemPersistence; import cn.edu.zju.acm.onlinejudge.persistence.ReferencePersistence; import cn.edu.zju.acm.onlinejudge.persistence.SubmissionPersistence; import cn.edu.zju.acm.onlinejudge.persistence.UserPersistence; import cn.edu.zju.acm.onlinejudge.persistence.sql.AuthorizationPersistenceImpl; import cn.edu.zju.acm.onlinejudge.persistence.sql.ConfigurationPersistenceImpl; import cn.edu.zju.acm.onlinejudge.persistence.sql.ContestPersistenceImpl; import cn.edu.zju.acm.onlinejudge.persistence.sql.ForumPersistenceImpl; import cn.edu.zju.acm.onlinejudge.persistence.sql.LanguagePersistenceImpl; import cn.edu.zju.acm.onlinejudge.persistence.sql.ProblemPersistenceImpl; import cn.edu.zju.acm.onlinejudge.persistence.sql.ReferencePersistenceImpl; import cn.edu.zju.acm.onlinejudge.persistence.sql.SubmissionPersistenceImpl; import cn.edu.zju.acm.onlinejudge.persistence.sql.UserPersistenceImpl; /** * <p> * PersistenceManager class. * </p> * * @version 2.0 * @author Zhang, Zheng * @author Xu, Chuan */ public class PersistenceManager { /** * UserPersistence. */ private UserPersistence userPersistence = new UserPersistenceImpl(); /** * ContestPersistence. */ private ContestPersistence contestPersistence = new ContestPersistenceImpl(); /** * AuthorizationPersistence. */ private AuthorizationPersistence authorizationPersistence = new AuthorizationPersistenceImpl(); /** * SubmissionPersistence. */ private SubmissionPersistence submissionPersistence = new SubmissionPersistenceImpl(); /** * ForumPersistence. */ private ForumPersistence forumPersistence = new ForumPersistenceImpl(); /** * ConfigurationPersistence. */ private ConfigurationPersistence configurationPersistence = new ConfigurationPersistenceImpl(); /** * ReferencePersistence. */ private ReferencePersistence referencePersistence = new ReferencePersistenceImpl(); /** * ProblemPersistence. */ private ProblemPersistence problemPersistence = new ProblemPersistenceImpl(); private LanguagePersistence languagePersistence = new LanguagePersistenceImpl(); /** * PersistenceManager. */ private static PersistenceManager instance; static { try { PersistenceManager.instance = new PersistenceManager(); } catch (PersistenceCreationException e) { throw new ExceptionInInitializerError(e); } } /** * <p> * Constructor of SQLPersistenceLocator class. * </p> * * @throws PersistenceCreationException * if any exceptions occurs while creating the persistence */ private PersistenceManager() throws PersistenceCreationException { } /** * Gets the singleton instance. * * @return the singleton instance. * @throws PersistenceCreationException * if any exceptions occurs while creating the persistence */ public static PersistenceManager getInstance() { return PersistenceManager.instance; } /** * <p> * Gets a UserPersistence implementation. * </p> * * @return a UserPersistence implementation */ public UserPersistence getUserPersistence() { return this.userPersistence; } /** * <p> * Gets an AuthorizationPersistence implementation. * </p> * * @return an AuthorizationPersistence implementation */ public AuthorizationPersistence getAuthorizationPersistence() { return this.authorizationPersistence; } /** * <p> * Gets a ContestPersistence implementation. * </p> * * @return a ContestPersistence implementation */ public ContestPersistence getContestPersistence() { return this.contestPersistence; } /** * <p> * Gets a ProblemPersistence implementation. * </p> * * @return a ProblemPersistence implementation */ public ProblemPersistence getProblemPersistence() { return this.problemPersistence; } /** * <p> * Gets a SubmissionPersistence implementation. * </p> * * @return a SubmissionPersistence implementation */ public SubmissionPersistence getSubmissionPersistence() { return this.submissionPersistence; } /** * <p> * Gets a ForumPersistence implementation. * </p> * * @return a ForumPersistence implementation */ public ForumPersistence getForumPersistence() { return this.forumPersistence; } /** * <p> * Gets a ConfigurationPersistence implementation. * </p> * * @return a ConfigurationPersistence implementation */ public ConfigurationPersistence getConfigurationPersistence() { return this.configurationPersistence; } /** * <p> * Gets a ReferencePersistence implementation. * </p> * * @return a ReferencePersistence implementation */ public ReferencePersistence getReferencePersistence() { return this.referencePersistence; } /** * <p> * Gets a Country with given id. * </p> * * @return a Country with given id. * @throws PersistenceException */ public Country getCountry(String id) throws PersistenceException { long countryId = -1; try { countryId = Integer.parseInt(id); } catch (Exception e) { return null; } for (Country c : this.userPersistence.getAllCountries()) { if (c.getId() == countryId) { return c; } } return null; } public LanguagePersistence getLanguagePersistence() { return this.languagePersistence; } }