1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package edu.internet2.middleware.shibboleth.common.config.attribute.resolver.dataConnector;
18
19 import java.util.List;
20 import java.util.Map;
21
22 import javax.sql.DataSource;
23
24 import org.opensaml.xml.util.DatatypeHelper;
25
26 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.RDBMSColumnDescriptor;
27 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.RDBMSDataConnector;
28 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.TemplateEngine;
29
30
31
32
33 public class RDBMSDataConnectorFactoryBean extends BaseDataConnectorFactoryBean {
34
35
36 private TemplateEngine templateEngine;
37
38
39 private DataSource connectionDataSource;
40
41
42 private String queryTemplate;
43
44
45 private List<RDBMSColumnDescriptor> columnDescriptors;
46
47
48 private boolean readOnlyConnections;
49
50
51 private boolean queryUsesStoredProcedures;
52
53
54 private boolean noResultsIsError;
55
56
57 private boolean cacheResults;
58
59
60 public Class getObjectType() {
61 return RDBMSDataConnector.class;
62 }
63
64
65
66
67
68
69 public boolean isNoResultIsError() {
70 return noResultsIsError;
71 }
72
73
74
75
76
77
78 public void setNoResultIsError(boolean b) {
79 noResultsIsError = b;
80 }
81
82
83
84
85
86
87 public boolean getCacheResults() {
88 return cacheResults;
89 }
90
91
92
93
94
95
96 public void setCacheResults(boolean cache) {
97 cacheResults = cache;
98 }
99
100
101
102
103
104
105 public List<RDBMSColumnDescriptor> getColumnDescriptors() {
106 return columnDescriptors;
107 }
108
109
110
111
112
113
114 public void setColumnDescriptors(List<RDBMSColumnDescriptor> descriptors) {
115 columnDescriptors = descriptors;
116 }
117
118
119
120
121
122
123 public DataSource getConnectionDataSource() {
124 return connectionDataSource;
125 }
126
127
128
129
130
131
132 public void setConnectionDataSource(DataSource source) {
133 connectionDataSource = source;
134 }
135
136
137
138
139
140
141 public String getQueryTemplate() {
142 return queryTemplate;
143 }
144
145
146
147
148
149
150 public void setQueryTemplate(String template) {
151 queryTemplate = DatatypeHelper.safeTrimOrNullString(template);
152 }
153
154
155
156
157
158
159 public boolean getQueryUsesStoredProcedures() {
160 return queryUsesStoredProcedures;
161 }
162
163
164
165
166
167
168 public void setQueryUsesStoredProcedures(boolean storedProcedures) {
169 queryUsesStoredProcedures = storedProcedures;
170 }
171
172
173
174
175
176
177 public boolean isReadOnlyConnections() {
178 return readOnlyConnections;
179 }
180
181
182
183
184
185
186 public void setReadOnlyConnections(boolean readOnly) {
187 readOnlyConnections = readOnly;
188 }
189
190
191
192
193
194
195 public TemplateEngine getTemplateEngine() {
196 return templateEngine;
197 }
198
199
200
201
202
203
204 public void setTemplateEngine(TemplateEngine engine) {
205 templateEngine = engine;
206 }
207
208
209 protected Object createInstance() throws Exception {
210 RDBMSDataConnector connector = new RDBMSDataConnector(getConnectionDataSource(), getCacheResults());
211 populateDataConnector(connector);
212 connector.setTemplateEngine(getTemplateEngine());
213 connector.setQueryTemplate(getQueryTemplate());
214 connector.setUsesStoredProcedure(getQueryUsesStoredProcedures());
215 connector.setConnectionReadOnly(isReadOnlyConnections());
216 connector.setNoResultIsError(isNoResultIsError());
217
218 if (getColumnDescriptors() != null) {
219 Map<String, RDBMSColumnDescriptor> columnDecriptors = connector.getColumnDescriptor();
220 for (RDBMSColumnDescriptor descriptor : getColumnDescriptors()) {
221 columnDecriptors.put(descriptor.getColumnName(), descriptor);
222 }
223 }
224
225 connector.initialize();
226
227 return connector;
228 }
229 }