1
2
3
4
5
6
7
8
9
10
11 package eu.etaxonomy.cdm.io.common.mapping;
12
13 import java.sql.ResultSet;
14 import java.sql.SQLException;
15 import java.util.Set;
16
17 import javax.mail.MethodNotSupportedException;
18
19 import org.apache.log4j.Logger;
20
21 import eu.etaxonomy.cdm.api.service.ITermService;
22 import eu.etaxonomy.cdm.common.CdmUtils;
23 import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState;
24 import eu.etaxonomy.cdm.io.common.DbImportStateBase;
25 import eu.etaxonomy.cdm.model.common.CdmBase;
26 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
27 import eu.etaxonomy.cdm.model.description.Feature;
28 import eu.etaxonomy.cdm.model.description.TaxonDescription;
29 import eu.etaxonomy.cdm.model.description.TextData;
30 import eu.etaxonomy.cdm.model.media.Media;
31 import eu.etaxonomy.cdm.model.taxon.Synonym;
32 import eu.etaxonomy.cdm.model.taxon.Taxon;
33 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
34
35
36
37
38
39
40
41
42
43 public class DbImportImageGalleryMapper extends DbSingleAttributeImportMapperBase<DbImportStateBase<?,?>, Taxon> implements IDbImportMapper<DbImportStateBase<?,?>,Taxon>{
44 private static final Logger logger = Logger.getLogger(DbImportImageGalleryMapper.class);
45
46 /
47
48
49
50
51
52
53
54
55
56 public static DbImportImageGalleryMapper NewInstance(String dbAttributeString){
57 return new DbImportImageGalleryMapper(dbAttributeString);
58 }
59
60 /
61
62
63 /
64
65
66
67
68
69 private DbImportImageGalleryMapper(String dbAttributeString) {
70 super(dbAttributeString, dbAttributeString);
71 }
72
73 /
74
75
76
77
78
79
80 public void initialize(ITermService service, BerlinModelImportState state, Class<? extends CdmBase> destinationClass) {
81 importMapperHelper.initialize(state, destinationClass);
82 try {
83 if ( checkDbColumnExists()){
84
85 }else{
86 ignore = true;
87 }
88 } catch (MethodNotSupportedException e) {
89
90 }
91 }
92
93
94
95
96
97 public TaxonBase invoke(ResultSet rs, TaxonBase taxonBase) throws SQLException {
98 String dbValue = rs.getString(getSourceAttribute());
99 return invoke(dbValue, taxonBase);
100 }
101
102
103
104
105
106
107 private TaxonBase invoke(String dbValue, TaxonBase taxonBase){
108 if (ignore || CdmUtils.isEmpty(dbValue)){
109 return taxonBase;
110 }
111 boolean createNew = true;
112 Taxon taxon;
113 if (taxonBase.isInstanceOf(Synonym.class)){
114 Synonym synonym = taxonBase.deproxy(taxonBase, Synonym.class);
115 if (synonym.getAcceptedTaxa().size() > 0){
116 logger.warn("Media will be added to a synonyms accepted taxon");
117 taxon = synonym.getAcceptedTaxa().iterator().next();
118 }else{
119 throw new IllegalArgumentException("TaxonBase was of type synonym and does not belong to an accepted taxon");
120 }
121 }else{
122 taxon = taxonBase.deproxy(taxonBase, Taxon.class);
123 }
124
125 TaxonDescription imageGallery = taxon.getImageGallery(createNew);
126 Set<DescriptionElementBase> elements = imageGallery.getElements();
127 DescriptionElementBase element = null;
128 if (elements.size() != 1 ){
129 element = TextData.NewInstance(Feature.IMAGE());
130 imageGallery.addElement(element);
131 }else {
132 element = elements.iterator().next();
133 }
134 String uri = dbValue;
135 Integer size = null;
136 String mimeType = null;
137 String suffix = null;
138 Media media = Media.NewInstance(uri, size, mimeType, suffix);
139 element.addMedia(media);
140 return taxon;
141 }
142
143
144
145
146
147 public Class<String> getTypeClass(){
148 return String.class;
149 }
150
151
152
153
154 @Override
155 public void initialize(DbImportStateBase<?,?> state, Class<? extends CdmBase> destinationClass) {
156 super.importMapperHelper.initialize(state, destinationClass);
157 }
158
159
160 }