View Javadoc

1   /*
2    * NamesList.java
3    * Created on 4 Август 2006 г., 23:16
4    */
5   
6   package org.weda.common.impl;
7   
8   import java.util.ArrayList;
9   import java.util.Collections;
10  import java.util.List;
11  
12  /**Хранение списка имен
13   *
14   * @author Mikhail Titov
15   */
16  public class NamesList {
17      public enum State {NOT_INITIALIZED, INITIALIZING, INITIALIZED};
18      
19      private String name;
20      private State state = State.NOT_INITIALIZED;
21      private String extendList;
22      private NamesListRegistryImpl namesListReg;
23      //
24      private List<String> names = new ArrayList<String>();
25      private List<String> namesToRemove;
26      
27      public void init() throws NamesListException{
28          try{
29              state = State.INITIALIZING;
30              //
31              if (extendList!=null){
32                  List<String> listToExtend = 
33                          namesListReg.initAndGetNamesList(extendList);
34                  List<String> newList = new ArrayList<String>(listToExtend);
35                  for (String name: names)
36                      if (!newList.contains(name))
37                          newList.add(name);
38                  names = newList;
39              }
40              if (namesToRemove!=null){
41                  for (String nameToRemove: namesToRemove)
42                      names.remove(nameToRemove);
43                  namesToRemove = null;
44              }
45              //
46              state = State.INITIALIZED;
47              names = Collections.unmodifiableList(names);
48          }catch(Exception e){
49              throw new NamesListException(
50                      String.format(
51                          "Error while initializing names list (%s)", name)
52                      , e);
53          }
54      }
55      
56      public List<String> getNames(){
57          return names;
58      }
59      
60      public void addName(String name){
61          names.add(name);
62      }
63      
64      public void removeName(String name){
65          if (namesToRemove == null)
66              namesToRemove = new ArrayList<String>(5);
67          namesToRemove.add(name);
68      }
69  
70      public State getState() {
71          return state;
72      }
73  
74      public String getExtendList() {
75          return extendList;
76      }
77  
78      public void setExtendList(String extendList) {
79          this.extendList = extendList;
80      }
81  
82      public void setNamesListReg(NamesListRegistryImpl namesListReg) {
83          this.namesListReg = namesListReg;
84      }
85  
86      /**Метод возвращает имя списка.
87       */
88      public String getName() {
89          return name;
90      }
91  
92      public void setName(String name) {
93          this.name = name;
94      }
95  }