1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.platform.camel.core.builder;
17
18 import org.apache.camel.Endpoint;
19 import org.apache.camel.Processor;
20 import org.apache.camel.builder.Builder;
21 import org.apache.camel.builder.RouteBuilder;
22 import org.apache.camel.processor.aggregate.AggregationStrategy;
23 import org.apache.camel.util.CamelContextHelper;
24 import org.openehealth.ipf.commons.core.modules.api.*;
25 import org.openehealth.ipf.commons.xml.SchematronValidator;
26 import org.openehealth.ipf.commons.xml.XsdValidator;
27 import org.openehealth.ipf.platform.camel.core.adapter.*;
28 import org.openehealth.ipf.platform.camel.core.process.Enricher;
29 import org.openehealth.ipf.platform.camel.core.process.Validation;
30
31 import javax.xml.transform.stream.StreamSource;
32
33
34
35
36
37
38 public class RouteHelper {
39
40 private RouteBuilder routeBuilder;
41
42 public RouteHelper(RouteBuilder routeBuilder) {
43 this.routeBuilder = routeBuilder;
44 }
45
46
47
48
49 public void setRouteBuilder(RouteBuilder routeBuilder) {
50 this.routeBuilder = routeBuilder;
51 }
52
53
54
55
56
57 public PredicateAdapter predicate(Predicate predicate) {
58 return new PredicateAdapter(predicate);
59 }
60
61
62
63
64
65
66
67
68
69 public PredicateAdapter predicate(String predicateBeanName) {
70 return new PredicateAdapter(routeBuilder.getContext().getRegistry()
71 .lookupByNameAndType(predicateBeanName, Predicate.class));
72 }
73
74
75
76
77
78
79
80
81
82
83 public ConverterAdapter converter(String converterBeanName) {
84 return new ConverterAdapter(routeBuilder.getContext().getRegistry()
85 .lookupByNameAndType(converterBeanName, Converter.class));
86 }
87
88
89
90
91
92
93
94
95
96
97 public ParserAdapter parser(String parserBeanName) {
98 return new ParserAdapter(routeBuilder.getContext().getRegistry()
99 .lookupByNameAndType(parserBeanName, Parser.class));
100 }
101
102 public ParserAdapter parser(Parser<?> parser) {
103 return new ParserAdapter(parser);
104 }
105
106
107
108
109
110
111
112
113
114
115 public RendererAdapter renderer(String rendererBeanName) {
116 return new RendererAdapter(routeBuilder.getContext().getRegistry()
117 .lookupByNameAndType(rendererBeanName, Renderer.class));
118 }
119
120
121
122
123
124
125
126
127 public RendererAdapter renderer(Renderer<?> renderer) {
128 return new RendererAdapter(renderer);
129 }
130
131
132
133
134
135
136
137
138
139
140 public TransmogrifierAdapter transmogrifier(String transmogrifierBeanName) {
141 return new TransmogrifierAdapter(routeBuilder.getContext().getRegistry()
142 .lookupByNameAndType(transmogrifierBeanName, Transmogrifier.class));
143 }
144
145
146
147
148
149
150
151
152
153 public TransmogrifierAdapter transmogrifier(Transmogrifier<?, ?> transmogrifier) {
154 return new TransmogrifierAdapter(transmogrifier);
155 }
156
157
158
159
160
161
162
163
164
165
166 public ValidatorAdapter validator(String validatorBeanName) {
167 return new ValidatorAdapter(routeBuilder.getContext().getRegistry()
168 .lookupByNameAndType(validatorBeanName, Validator.class));
169 }
170
171
172
173
174
175
176
177
178
179 public ValidatorAdapter validator(Validator<?, ?> validator) {
180 return new ValidatorAdapter(validator);
181 }
182
183
184
185
186
187
188
189 public ValidatorAdapter xsdValidator() {
190 ValidatorAdapter adapter = new ValidatorAdapter(new XsdValidator());
191 adapter.input(Builder.bodyAs(StreamSource.class));
192 return adapter;
193 }
194
195
196
197
198
199
200
201 public ValidatorAdapter schematronValidator() {
202 ValidatorAdapter adapter = new ValidatorAdapter(new SchematronValidator());
203 adapter.input(Builder.bodyAs(StreamSource.class));
204 return adapter;
205 }
206
207
208
209
210
211
212
213
214
215 public AggregatorAdapter aggregationStrategy(Aggregator aggregator) {
216 return new AggregatorAdapter(aggregator);
217 }
218
219
220
221
222
223
224
225
226
227
228
229 public AggregatorAdapter aggregationStrategy(String aggregatorBeanName) {
230 return new AggregatorAdapter(routeBuilder.getContext().getRegistry()
231 .lookupByNameAndType(aggregatorBeanName, Aggregator.class));
232 }
233
234 public DataFormatAdapter dataFormatParser(Parser<?> parser) {
235 return new DataFormatAdapter(parser);
236 }
237
238 public DataFormatAdapter dataFormatParser(String parserBeanName) {
239 return new DataFormatAdapter(routeBuilder.getContext().getRegistry()
240 .lookupByNameAndType(parserBeanName, Parser.class));
241 }
242
243 public DataFormatAdapter dataFormatRenderer(Renderer<?> renderer) {
244 return new DataFormatAdapter(renderer);
245 }
246
247 public DataFormatAdapter dataFormatRenderer(String rendererBeanName) {
248 return new DataFormatAdapter(routeBuilder.getContext().getRegistry()
249 .lookupByNameAndType(rendererBeanName, Renderer.class));
250 }
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269 public Enricher enricher(AggregationStrategy aggregationStrategy, String resourceUri) throws Exception {
270 Endpoint endpoint = CamelContextHelper.getMandatoryEndpoint(routeBuilder.getContext(), resourceUri);
271 return new Enricher(aggregationStrategy, endpoint.createProducer());
272 }
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291 public Enricher enricher(String aggregatorBeanName, String resourceUri) throws Exception {
292 Endpoint endpoint = CamelContextHelper.getMandatoryEndpoint(routeBuilder.getContext(), resourceUri);
293 return new Enricher(aggregationStrategy(aggregatorBeanName).aggregationInput(routeBuilder.body()), endpoint.createProducer());
294 }
295
296
297
298
299
300
301
302
303
304
305
306 public Validation validation(String validatorUri) throws Exception {
307 Endpoint endpoint = CamelContextHelper.getMandatoryEndpoint(routeBuilder.getContext(), validatorUri);
308 return new Validation(endpoint.createProducer());
309 }
310
311
312
313
314
315
316
317
318 public Validation validation(Processor validator) {
319 return new Validation(validator);
320 }
321
322 }