Project

General

Profile

Download (4.38 KB) Statistics
| Branch: | Revision:
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 javassist.runtime.Desc;
21

    
22
import org.apache.commons.lang.StringUtils;
23
import org.apache.log4j.Logger;
24
import org.springframework.transaction.TransactionStatus;
25

    
26
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
27
import eu.etaxonomy.cdm.common.media.ImageInfo;
28
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase;
29
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelTaxonNameImport;
30
import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
31
import eu.etaxonomy.cdm.io.common.Source;
32
import eu.etaxonomy.cdm.model.agent.Team;
33
import eu.etaxonomy.cdm.model.common.CdmBase;
34
import eu.etaxonomy.cdm.model.common.Language;
35
import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
36
import eu.etaxonomy.cdm.model.common.TimePeriod;
37
import eu.etaxonomy.cdm.model.description.DescriptionBase;
38
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
39
import eu.etaxonomy.cdm.model.description.Feature;
40
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
41
import eu.etaxonomy.cdm.model.description.State;
42
import eu.etaxonomy.cdm.model.description.TextData;
43
import eu.etaxonomy.cdm.model.location.NamedArea;
44
import eu.etaxonomy.cdm.model.location.Point;
45
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
46
import eu.etaxonomy.cdm.model.location.TdwgArea;
47
import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
48
import eu.etaxonomy.cdm.model.media.Media;
49
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
50
import eu.etaxonomy.cdm.model.occurrence.Collection;
51
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
52
import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
53
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
54
import eu.etaxonomy.cdm.model.reference.Reference;
55

    
56
/**
57
 * @author a.mueller
58
 * @created 12.09.2012
59
 */
60
public abstract class AlgaTerraImageImportBase extends BerlinModelImportBase{
61
	private static final Logger logger = Logger.getLogger(AlgaTerraImageImportBase.class);
62

    
63
	public static final String TERMS_NAMESPACE = "ALGA_TERRA_TERMS";
64

    
65

    
66

    
67
	
68
	/**
69
	 * Creates a media object and 
70
	 * @param rs
71
	 * @param derivedUnit
72
	 * @param state
73
	 * @param partitioner
74
	 * @return
75
	 * @throws SQLException
76
	 */
77
	protected Media handleSingleImage(ResultSet rs, SpecimenOrObservationBase derivedUnit, AlgaTerraImportState state, ResultSetPartitioner partitioner) throws SQLException {
78
		try {
79
			String fileName = rs.getString("fileName");
80
			String figurePhrase = rs.getString("FigurePhrase");
81
			//TODO  publishFlag
82
			Boolean publishFlag = rs.getBoolean("RestrictedFlag");
83
			
84
			
85
			if (isBlank(fileName)){
86
				throw new RuntimeException("FileName is missing");
87
			}
88
			String fullPath = state.getAlgaTerraConfigurator().getImageBaseUrl() + fileName;
89
			
90
			boolean isFigure = false;
91
			Media media = getImageMedia(fullPath, READ_MEDIA_DATA, isFigure);
92
			
93
			if (media == null){
94
				throw new RuntimeException ("Media not found for " +fullPath);
95
			}
96
			if (isNotBlank(figurePhrase)){
97
				media.putTitle(Language.DEFAULT(), figurePhrase);
98
			}
99
			
100
			//TODO ref
101
			Reference<?> ref = null;
102
			if (derivedUnit != null){
103
				SpecimenDescription desc = getSpecimenDescription(derivedUnit, ref, IMAGE_GALLERY, CREATE);
104
				TextData textData = null;
105
				for (DescriptionElementBase descEl : desc.getElements()){
106
					if (descEl.isInstanceOf(TextData.class)){
107
						textData = CdmBase.deproxy(descEl, TextData.class);
108
					}
109
				}
110
				if (textData == null){
111
					textData = TextData.NewInstance(Feature.IMAGE());
112
				}
113
				desc.addElement(textData);
114
				textData.addMedia(media);
115
			}else{
116
				logger.warn("Derived unit is null. Can't add media ");
117
			}
118
			
119
			//notes
120
			
121
			//TODO restrictedFlag
122
			
123
			//TODO id, created for 
124
			//    	this.doIdCreatedUpdatedNotes(state, descriptionElement, rs, id, namespace);
125
		
126
			return media;
127
		} catch (Exception e) {
128
			throw new RuntimeException(e);
129
		}
130
    	
131
	}
132
	
133

    
134
	
135

    
136

    
137
}
(2-2/11)