1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.pluto.portalImpl.om.common.impl;
21
22 import java.util.Collection;
23 import java.util.HashSet;
24 import java.util.Iterator;
25 import java.util.List;
26
27 import javax.portlet.PreferencesValidator;
28
29 import org.apache.pluto.om.common.Preference;
30 import org.apache.pluto.om.common.PreferenceSet;
31 import org.apache.pluto.om.common.PreferenceSetCtrl;
32 import org.apache.pluto.portalImpl.services.log.Log;
33 import org.apache.pluto.services.log.Logger;
34 import org.apache.pluto.util.StringUtils;
35
36 public class PreferenceSetImpl extends HashSet
37 implements PreferenceSet, PreferenceSetCtrl, java.io.Serializable {
38
39 private String castorPreferencesValidator;
40 private ClassLoader classLoader;
41 private Logger log;
42
43 public PreferenceSetImpl() {
44 this.log = Log.getService().getLogger(getClass());
45 }
46
47
48
49 public Preference get(String name)
50 {
51 Iterator iterator = this.iterator();
52 while (iterator.hasNext()) {
53 Preference preference = (Preference)iterator.next();
54 if (preference.getName().equals(name)) {
55 return preference;
56 }
57 }
58 return null;
59 }
60
61 public PreferencesValidator getPreferencesValidator()
62 {
63 if (this.classLoader == null)
64 throw new IllegalStateException("Portlet class loader not yet available to load preferences validator.");
65
66 if (castorPreferencesValidator == null)
67 return null;
68
69 try {
70 Object validator = classLoader.loadClass(castorPreferencesValidator).newInstance();
71 if (validator instanceof PreferencesValidator)
72 return(PreferencesValidator)validator;
73 else
74 log.error("Specified class " + castorPreferencesValidator +" is no preferences validator.");
75 } catch (Exception e) {
76 log.error(e.getMessage(), e);
77 }
78
79 return null;
80 }
81
82
83
84 public Preference add(String name, List values)
85 {
86 PreferenceImpl preference = new PreferenceImpl();
87 preference.setName(name);
88 preference.setValues(values);
89
90 super.add(preference);
91
92 return preference;
93 }
94
95 public Preference remove(String name)
96 {
97 Iterator iterator = this.iterator();
98 while (iterator.hasNext()) {
99 Preference preference = (Preference)iterator.next();
100 if (preference.getName().equals(name)) {
101 super.remove(preference);
102 return preference;
103 }
104 }
105 return null;
106 }
107
108 public void remove(Preference preference)
109 {
110 super.remove(preference);
111 }
112
113
114
115 public String toString()
116 {
117 return toString(0);
118 }
119
120 public String toString(int indent)
121 {
122 StringBuffer buffer = new StringBuffer(50);
123 StringUtils.newLine(buffer,indent);
124 buffer.append(getClass().toString());
125 buffer.append(": ");
126 Iterator iterator = this.iterator();
127 while (iterator.hasNext()) {
128 buffer.append(((PreferenceImpl)iterator.next()).toString(indent+2));
129 }
130 return buffer.toString();
131 }
132
133
134
135
136 public String getCastorPreferencesValidator()
137 {
138 return castorPreferencesValidator;
139 }
140
141 public void setCastorPreferencesValidator(String castorPreferencesValidator)
142 {
143 this.castorPreferencesValidator = castorPreferencesValidator;
144 }
145
146 public Collection getCastorPreferences()
147 {
148 return this;
149 }
150
151 public void setClassLoader(ClassLoader loader)
152 {
153 this.classLoader = loader;
154 }
155
156 /***
157 * @see java.util.Collection#addAll(Collection)
158 * makes a deep copy
159 */
160 public boolean addAll(Collection c) {
161 Iterator it = c.iterator();
162 while (it.hasNext()) {
163 PreferenceImpl pref = (PreferenceImpl) it.next();
164 this.add(pref.getName(), pref.getClonedCastorValuesAsList());
165 }
166
167 return true;
168 }
169
170 }