001 /**
002 * Jetrix TetriNET Server
003 * Copyright (C) 2001-2004 Emmanuel Bourg
004 *
005 * This program is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU General Public License
007 * as published by the Free Software Foundation; either version 2
008 * of the License, or (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013 * GNU General Public License for more details.
014 *
015 * You should have received a copy of the GNU General Public License
016 * along with this program; if not, write to the Free Software
017 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
018 */
019
020 package net.jetrix.winlist;
021
022 import java.util.*;
023 import java.util.logging.*;
024
025 import net.jetrix.config.*;
026
027 /**
028 * Winlist manager.
029 *
030 * @author Emmanuel Bourg
031 * @version $Revision: 794 $, $Date: 2009-02-17 20:08:39 +0100 (Tue, 17 Feb 2009) $
032 */
033 public class WinlistManager
034 {
035 private static WinlistManager instance = new WinlistManager();
036 private Map<String,Winlist> winlists;
037
038 private Logger log = Logger.getLogger("net.jetrix");
039
040 private WinlistManager()
041 {
042 winlists = new TreeMap<String, Winlist>();
043 }
044
045 public static WinlistManager getInstance()
046 {
047 return instance;
048 }
049
050 /**
051 * Register a new winlist.
052 */
053 protected void addWinlist(Winlist winlist)
054 {
055 if (winlist != null && winlist.getId() != null)
056 {
057 winlists.put(winlist.getId(), winlist);
058 if (log.isLoggable(Level.FINE))
059 {
060 log.fine("registered winlist " + winlist.getId());
061 }
062 }
063 }
064
065 /**
066 * Declare a new winlist.
067 */
068 public void addWinlist(WinlistConfig config)
069 {
070 if (config != null && config.getName() != null && config.getClassname() != null)
071 {
072 try
073 {
074 Class cls = Class.forName(config.getClassname());
075 Winlist winlist = (Winlist) cls.newInstance();
076 winlist.setId(config.getName());
077 winlist.init(config);
078
079 addWinlist(winlist);
080 }
081 catch (Exception e)
082 {
083 log.log(Level.WARNING, "Unable to create the winlist '" + config.getName() + "'", e);
084 }
085 }
086 }
087
088 /**
089 * Return the winlist with the specified id.
090 */
091 public Winlist getWinlist(String id)
092 {
093 return (id == null) ? null : winlists.get(id);
094 }
095
096 /**
097 * Return the registered winlists
098 *
099 * @since 0.2
100 */
101 public Collection<Winlist> getWinlists()
102 {
103 return winlists.values();
104 }
105 }