View Javadoc

1   //////////////////////////////////////////////////////////////////////////////
2   // dexterIM - Instant Messaging Framework
3   // Copyright (C) 2003  Christoph Walcher
4   //
5   // This program is free software; you can redistribute it and/or modify
6   // it under the terms of the GNU General Public License as published by
7   // the Free Software Foundation; either version 2 of the License, or
8   // (at your option) any later version.
9   //
10  // This program is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  // GNU General Public License for more details.
14  //
15  // You should have received a copy of the GNU General Public License
16  // along with this program; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  //////////////////////////////////////////////////////////////////////////////
19  package net.sf.dexterim.core;
20  
21  import java.util.ArrayList;
22  import java.util.HashMap;
23  import java.util.Iterator;
24  import java.util.List;
25  import java.util.Map;
26  
27  /***
28   *@author     Christoph Walcher
29   */
30  public abstract class DefaultStatusModel implements StatusModel {
31    private List statusList;
32    private Map statusMap;
33  
34  
35    /***
36     *  Constructor for the DefaultStatusModel object
37     */
38    public DefaultStatusModel() {
39      this.statusMap = new HashMap();
40      
41      synchStatusMap(createStatusList(), statusMap);
42    }
43  
44    /***
45     *  Description of the Method
46     *
47     *@param  statusList  Description of the Parameter
48     *@param  statusMap   Description of the Parameter
49     */
50    private final void synchStatusMap(List statusList, Map statusMap) {
51      // clear statusMap before synching
52      statusMap.clear();
53  
54      Iterator statusIter = statusList.iterator();
55  
56      while (statusIter.hasNext()) {
57        Status status = (Status)statusIter.next();
58  
59        statusMap.put(status.getCode(), status);
60      }
61    }
62  
63    /***
64     *  Gets the status attribute of the DefaultStatusModel object
65     *
66     *@param  code  Description of the Parameter
67     *@return       The status value
68     */
69    public Status getStatus(Object code) {
70      return (Status)statusMap.get(code);
71    }
72  
73    /***
74     *@return     Description of the Return Value
75     *@returns    Sorted List of Status instances
76     */
77    public List listStatus() {
78      return statusList;
79    }
80  
81    /***
82     *@return     Description of the Return Value
83     *@returns    List of Status Codes
84     */
85    public List listStatusCodes() {
86    	return new ArrayList(statusMap.keySet());
87    }
88    
89    protected abstract List createStatusList();
90  }