1 package org.cateproject.controller.editor;
2
3 import java.util.UUID;
4
5 import org.apache.commons.logging.Log;
6 import org.apache.commons.logging.LogFactory;
7 import org.cateproject.controller.flow.action.media.KeyType;
8 import org.cateproject.controller.flow.action.media.PhylogenyType;
9 import org.cateproject.controller.flow.action.taxon.EditSynonymMethod;
10 import org.cateproject.controller.flow.action.taxon.RemovalMethod;
11 import org.joda.time.DateTime;
12 import org.joda.time.Partial;
13 import org.springframework.beans.PropertyEditorRegistrar;
14 import org.springframework.beans.PropertyEditorRegistry;
15 import org.springframework.beans.factory.annotation.Autowired;
16 import org.springframework.beans.propertyeditors.StringTrimmerEditor;
17 import org.springframework.stereotype.Component;
18
19 import eu.etaxonomy.cdm.api.service.IAgentService;
20 import eu.etaxonomy.cdm.api.service.ICollectionService;
21 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
22 import eu.etaxonomy.cdm.api.service.IMediaService;
23 import eu.etaxonomy.cdm.api.service.INameService;
24 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
25 import eu.etaxonomy.cdm.api.service.IReferenceService;
26 import eu.etaxonomy.cdm.api.service.ITaxonService;
27 import eu.etaxonomy.cdm.api.service.ITermService;
28 import eu.etaxonomy.cdm.api.service.IVocabularyService;
29 import eu.etaxonomy.cdm.model.agent.AgentBase;
30 import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;
31 import eu.etaxonomy.cdm.model.agent.Institution;
32 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
33 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
34 import eu.etaxonomy.cdm.model.common.LSID;
35 import eu.etaxonomy.cdm.model.common.Language;
36 import eu.etaxonomy.cdm.model.common.MarkerType;
37 import eu.etaxonomy.cdm.model.common.TermVocabulary;
38 import eu.etaxonomy.cdm.model.description.FeatureTree;
39 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
40 import eu.etaxonomy.cdm.model.description.Sex;
41 import eu.etaxonomy.cdm.model.description.Stage;
42 import eu.etaxonomy.cdm.model.location.NamedArea;
43 import eu.etaxonomy.cdm.model.media.Media;
44 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
45 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
46 import eu.etaxonomy.cdm.model.name.Rank;
47 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
48 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
49 import eu.etaxonomy.cdm.model.occurrence.Collection;
50 import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
51 import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
52 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
53 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
54 import eu.etaxonomy.cdm.model.reference.Book;
55 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
56 import eu.etaxonomy.cdm.model.reference.IReferenceBase;
57 import eu.etaxonomy.cdm.model.reference.Journal;
58 import eu.etaxonomy.cdm.model.reference.Proceedings;
59 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
60 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
61 import eu.etaxonomy.cdm.persistence.query.OrderHint;
62 import eu.etaxonomy.cdm.remote.editor.LSIDPropertyEditor;
63
64 @Component("propertyEditorRegistrar")
65 public class CatePropertyEditorRegistrar implements PropertyEditorRegistrar {
66
67 private ITermService termService;
68
69 private ITaxonService taxonService;
70
71 private IVocabularyService vocabularyService;
72
73 private IAgentService agentService;
74
75 private IReferenceService referenceService;
76
77 private INameService nameService;
78
79 private IOccurrenceService occurrenceService;
80
81 private ICollectionService collectionService;
82
83 private IFeatureTreeService featureTreeService;
84
85 private IMediaService mediaService;
86
87 private static Log log = LogFactory.getLog(CatePropertyEditorRegistrar.class);
88
89 @Autowired
90 public void setVocabularyService(IVocabularyService vocabularyService) {
91 this.vocabularyService = vocabularyService;
92 }
93
94 @Autowired
95 public void setTermService(ITermService termService) {
96 this.termService = termService;
97 }
98
99 @Autowired
100 public void setTaxonService(ITaxonService taxonService) {
101 this.taxonService = taxonService;
102 }
103
104 @Autowired
105 public void setReferenceService(IReferenceService referenceService) {
106 this.referenceService = referenceService;
107 }
108
109 @Autowired
110 public void setAgentService(IAgentService agentService) {
111 this.agentService = agentService;
112 }
113
114 @Autowired
115 public void setNameService(INameService nameService) {
116 this.nameService = nameService;
117 }
118
119 @Autowired
120 public void setOccurrenceService(IOccurrenceService occurrenceService) {
121 this.occurrenceService = occurrenceService;
122 }
123
124 @Autowired
125 public void setCollectionService(ICollectionService collectionService) {
126 this.collectionService = collectionService;
127 }
128
129 @Autowired
130 public void setMediaService(IMediaService mediaService) {
131 this.mediaService = mediaService;
132 }
133
134 public void registerCustomEditors(PropertyEditorRegistry registry) {
135 registry.registerCustomEditor(java.lang.Class.class, new ClassPropertyEditor());
136 registry.registerCustomEditor(DateTime.class, new DateTimeEditor());
137 registry.registerCustomEditor(MarkerType.class, new MarkerTypePropertyEditor());
138 registry.registerCustomEditor(java.lang.String.class, new StringTrimmerEditor(true));
139 registry.registerCustomEditor(UUID.class, new UUIDPropertyEditor());
140 registry.registerCustomEditor(Partial.class, new PartialPropertyEditor());
141 registry.registerCustomEditor(LSID.class, new LSIDPropertyEditor());
142 registry.registerCustomEditor(OrderHint.class, new OrderHintPropertyEditor());
143 registry.registerCustomEditor(NomenclaturalCode.class, new NomenclaturalCodePropertyEditor());
144 registry.registerCustomEditor(RemovalMethod.class, new RemovalMethodPropertyEditor());
145 registry.registerCustomEditor(EditSynonymMethod.class, new EditSynonymMethodPropertyEditor());
146 registry.registerCustomEditor(KeyType.class, new KeyTypePropertyEditor());
147 registry.registerCustomEditor(PhylogenyType.class, new PhylogenyTypePropertyEditor());
148
149 registry.registerCustomEditor(Rank.class, new DefinedTermPropertyEditor(Rank.class,termService));
150 registry.registerCustomEditor(Language.class, new DefinedTermPropertyEditor(Language.class,termService));
151 registry.registerCustomEditor(PresenceAbsenceTermBase.class, new DefinedTermPropertyEditor(PresenceAbsenceTermBase.class,termService));
152 registry.registerCustomEditor(NamedArea.class, new DefinedTermPropertyEditor(NamedArea.class,termService));
153 registry.registerCustomEditor(SpecimenTypeDesignationStatus.class, new DefinedTermPropertyEditor(SpecimenTypeDesignationStatus.class, termService));
154 registry.registerCustomEditor(NameTypeDesignationStatus.class, new DefinedTermPropertyEditor(NameTypeDesignationStatus.class, termService));
155 registry.registerCustomEditor(Sex.class, new DefinedTermPropertyEditor(Sex.class, termService));
156 registry.registerCustomEditor(Stage.class, new DefinedTermPropertyEditor(Stage.class, termService));
157 registry.registerCustomEditor(PreservationMethod.class, new DefinedTermPropertyEditor(PreservationMethod.class, termService));
158 registry.registerCustomEditor(DerivationEventType.class, new DefinedTermPropertyEditor(DerivationEventType.class, termService));
159 registry.registerCustomEditor(DefinedTermBase.class, new DefinedTermPropertyEditor(DefinedTermBase.class, termService));
160
161 registry.registerCustomEditor(FeatureTree.class,new FeatureTreePropertyEditor(FeatureTree.class, featureTreeService));
162 registry.registerCustomEditor(Media.class, new MediaPropertyEditor(Media.class,mediaService));
163 registry.registerCustomEditor(TermVocabulary.class, new VocabularyPropertyEditor(TermVocabulary.class,vocabularyService));
164 registry.registerCustomEditor(Collection.class, new CollectionPropertyEditor(Collection.class,collectionService));
165 registry.registerCustomEditor(TaxonNameBase.class, new TaxonNameBasePropertyEditor(TaxonNameBase.class,nameService));
166 registry.registerCustomEditor(TaxonBase.class, new TaxonBasePropertyEditor(TaxonBase.class,taxonService));
167 registry.registerCustomEditor(AgentBase.class, new AgentBasePropertyEditor(AgentBase.class, agentService));
168 registry.registerCustomEditor(INomenclaturalAuthor.class, new AgentBasePropertyEditor(TeamOrPersonBase.class, agentService));
169 registry.registerCustomEditor(TeamOrPersonBase.class, new AgentBasePropertyEditor(TeamOrPersonBase.class, agentService));
170 registry.registerCustomEditor(Institution.class, new AgentBasePropertyEditor(Institution.class, agentService));
171
172 registry.registerCustomEditor(Proceedings.class, new ReferenceBasePropertyEditor(Proceedings.class,referenceService));
173 registry.registerCustomEditor(Book.class, new ReferenceBasePropertyEditor(Book.class,referenceService));
174 registry.registerCustomEditor(Journal.class, new ReferenceBasePropertyEditor(Journal.class,referenceService));
175 registry.registerCustomEditor(ReferenceBase.class, new ReferenceBasePropertyEditor(ReferenceBase.class,referenceService));
176 registry.registerCustomEditor(IReferenceBase.class, new ReferenceBasePropertyEditor(ReferenceBase.class,referenceService));
177 registry.registerCustomEditor(INomenclaturalReference.class, new ReferenceBasePropertyEditor(ReferenceBase.class,referenceService));
178
179 registry.registerCustomEditor(DerivedUnitBase.class, new SpecimenOrObservationBasePropertyEditor(DerivedUnitBase.class,occurrenceService));
180 registry.registerCustomEditor(SpecimenOrObservationBase.class, new SpecimenOrObservationBasePropertyEditor(SpecimenOrObservationBase.class,occurrenceService));
181 }
182 }