image imports for AlgaTerra (cont.)
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / io / algaterra / AlgaTerraImageImportBase.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
10 package eu.etaxonomy.cdm.io.algaterra;
11
12 import java.net.URI;
13 import java.sql.Date;
14 import java.sql.ResultSet;
15 import java.sql.SQLException;
16 import java.util.Map;
17 import java.util.Set;
18 import java.util.UUID;
19
20 import org.apache.commons.lang.StringUtils;
21 import org.apache.log4j.Logger;
22 import org.springframework.transaction.TransactionStatus;
23
24 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
25 import eu.etaxonomy.cdm.common.media.ImageInfo;
26 import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase;
27 import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelTaxonNameImport;
28 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
29 import eu.etaxonomy.cdm.io.common.Source;
30 import eu.etaxonomy.cdm.model.agent.Team;
31 import eu.etaxonomy.cdm.model.common.Language;
32 import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
33 import eu.etaxonomy.cdm.model.common.TimePeriod;
34 import eu.etaxonomy.cdm.model.description.DescriptionBase;
35 import eu.etaxonomy.cdm.model.description.Feature;
36 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
37 import eu.etaxonomy.cdm.model.description.State;
38 import eu.etaxonomy.cdm.model.location.NamedArea;
39 import eu.etaxonomy.cdm.model.location.Point;
40 import eu.etaxonomy.cdm.model.location.ReferenceSystem;
41 import eu.etaxonomy.cdm.model.location.TdwgArea;
42 import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
43 import eu.etaxonomy.cdm.model.media.Media;
44 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
45 import eu.etaxonomy.cdm.model.occurrence.Collection;
46 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
47 import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
48 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
49 import eu.etaxonomy.cdm.model.reference.Reference;
50
51 /**
52 * @author a.mueller
53 * @created 12.09.2012
54 */
55 public abstract class AlgaTerraImageImportBase extends BerlinModelImportBase{
56 private static final Logger logger = Logger.getLogger(AlgaTerraImageImportBase.class);
57
58 public static final String TERMS_NAMESPACE = "ALGA_TERRA_TERMS";
59
60
61
62
63 protected Media handleSingleImage(ResultSet rs, SpecimenOrObservationBase derivedUnit, AlgaTerraImportState state, ResultSetPartitioner partitioner) throws SQLException {
64 try {
65 String fileName = rs.getString("fileName");
66 String figurePhrase = rs.getString("FigurePhrase");
67 Integer refFk = nullSafeInt(rs, "refFk");
68 Integer refDetailFk = nullSafeInt(rs, "refDetailFk");
69 Boolean publishFlag = rs.getBoolean("RestrictedFlag");
70
71
72 if (isBlank(fileName)){
73 throw new RuntimeException("FileName is missing");
74 }
75 String fullPath = state.getAlgaTerraConfigurator().getImageBaseUrl() + fileName;
76
77 boolean isFigure = false;
78 Media media = getImageMedia(fullPath, READ_MEDIA_DATA, isFigure);
79
80 if (media == null){
81 throw new RuntimeException ("Media not found for " +fullPath);
82 }
83 if (isNotBlank(figurePhrase)){
84 media.putTitle(Language.DEFAULT(), figurePhrase);
85 }
86
87 //TODO ref
88 Reference<?> ref = null;
89 if (derivedUnit != null){
90 getSpecimenDescription(derivedUnit, ref, IMAGE_GALLERY, CREATE);
91 }else{
92 logger.warn("Derived unit is null. Can't add media ");
93 }
94
95 //notes
96
97 //TODO restrictedFlag
98
99 //TODO id, created for
100 // this.doIdCreatedUpdatedNotes(state, descriptionElement, rs, id, namespace);
101
102 return media;
103 } catch (Exception e) {
104 throw new RuntimeException(e);
105 }
106
107 }
108
109
110
111
112
113 }