1
2
3
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 }