cleanup
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / dto / assembler / DozerBeanMapperFactoryBean.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.cdm.remote.dto.assembler;
10
11 import java.util.ArrayList;
12 import java.util.List;
13 import java.util.Map;
14
15 import org.dozer.BeanFactory;
16 import org.dozer.CustomConverter;
17 import org.dozer.CustomFieldMapper;
18 import org.dozer.DozerBeanMapper;
19 import org.dozer.DozerEventListener;
20 import org.dozer.Mapper;
21 import org.springframework.beans.factory.FactoryBean;
22 import org.springframework.beans.factory.InitializingBean;
23 import org.springframework.core.io.Resource;
24
25 /**
26 * extended version of Sören Chittka's DozerBeanMapperFactoryBean, allowing other
27 * properties to be set.
28 * @author Sören Chittka
29 */
30 public class DozerBeanMapperFactoryBean implements FactoryBean, InitializingBean {
31
32 private DozerBeanMapper beanMapper;
33 private Resource[] mappingFiles;
34 private List<CustomConverter> customConverters;
35 private Map<String,CustomConverter> customConvertersWithId;
36 private List<DozerEventListener> eventListeners;
37 private Map<String, BeanFactory> factories;
38 private CustomFieldMapper customFieldMapper;
39
40
41 public final void setMappingFiles(final Resource[] mappingFiles) {
42 this.mappingFiles = mappingFiles;
43 }
44
45 public final void setCustomConverters(final List<CustomConverter> customConverters) {
46 this.customConverters = customConverters;
47 }
48
49 public final void setEventListeners(final List<EventListener> eventListeners) {
50 this.eventListeners = eventListeners;
51 }
52
53 public final void setFactories(final Map<String, BeanFactory> factories) {
54 this.factories = factories;
55 }
56
57 public final void setCustomFieldMapper(final CustomFieldMapper customFieldMapper) {
58 this.customFieldMapper = customFieldMapper;
59 }
60
61 public final void setCustomConvertersWithId(final Map<String,CustomConverter> customConvertersWithId) {
62 this.customConvertersWithId = customConvertersWithId;
63 }
64
65 // ==================================================================================================================================
66 // interface 'FactoryBean'
67 // ==================================================================================================================================
68 public final Object getObject() throws Exception {
69 return this.beanMapper;
70 }
71
72 @Override
73 public final Class<Mapper> getObjectType() {
74 return Mapper.class;
75 }
76
77 @Override
78 public final boolean isSingleton() {
79 return true;
80 }
81
82 // ==================================================================================================================================
83 // interface 'InitializingBean'
84 // ==================================================================================================================================
85 @Override
86 public final void afterPropertiesSet() throws Exception {
87
88 DozerBeanMapperBuilder beanMapperBuilder = DozerBeanMapperBuilder.create();
89
90 final List<String> mappings = new ArrayList<>(this.mappingFiles.length);
91 if (this.mappingFiles != null) {
92 for (Resource mappingFile : this.mappingFiles) {
93 mappings.add(mappingFile.getURL().toString());
94 }
95 beanMapperBuilder.withMappingFiles(mappings);
96 }
97
98 if (this.customConverters != null) {
99 beanMapperBuilder.withCustomConverters(customConverters);
100 }
101 if (this.eventListeners != null) {
102 beanMapperBuilder.withEventListeners(eventListeners);
103 }
104 if (this.factories != null) {
105 beanMapperBuilder.withBeanFactorys(factories);
106 }
107
108 if(this.customFieldMapper != null) {
109 beanMapperBuilder.withCustomFieldMapper(customFieldMapper);
110 }
111
112 if(this.customConvertersWithId != null) {
113 beanMapperBuilder.withCustomConvertersWithIds(customConvertersWithId);
114 }
115 }
116 }