Project

General

Profile

« Previous | Next » 

Revision 0ada2b24

Added by Andreas Müller about 11 years ago

alga terra: relate pictures to specimen facts and add morphology import classes

View differences:

app-import/src/main/java/eu/etaxonomy/cdm/io/algaterra/AlgaTerraPictureImport.java
19 19
import org.apache.log4j.Logger;
20 20
import org.springframework.stereotype.Component;
21 21

  
22
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
23
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
22 24
import eu.etaxonomy.cdm.io.algaterra.validation.AlgaTerraTypeImportValidator;
23 25
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
24 26
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState;
......
27 29
import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
28 30
import eu.etaxonomy.cdm.model.common.CdmBase;
29 31
import eu.etaxonomy.cdm.model.media.Media;
32
import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
33
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
30 34
import eu.etaxonomy.cdm.model.taxon.Taxon;
31 35
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
32 36

  
......
57 61
	protected String getIdQuery(BerlinModelImportState state) {
58 62
		String result = " SELECT p.PictureId "  
59 63
				+ " FROM Picture p  INNER JOIN Fact f ON p.PictureId = f.ExtensionFk LEFT OUTER JOIN PTaxon pt ON f.PTNameFk = pt.PTNameFk AND f.PTRefFk = pt.PTRefFk " 
60
				+ " WHERE f.FactCategoryFk = 205 "
64
				+ " WHERE f.FactCategoryFk = 205 AND p.RestrictedFlag = 0 "
61 65
				+ " ORDER BY p.PictureId ";
62 66
		return result;
63 67
	}
......
90 94
		
91 95
//		Map<String, DerivedUnitBase> ecoFactMap = (Map<String, DerivedUnitBase>) partitioner.getObjectMap(AlgaTerraSpecimenImportBase.ECO_FACT_DERIVED_UNIT_NAMESPACE);
92 96
		Map<String, TaxonBase> taxonMap = (Map<String, TaxonBase>) partitioner.getObjectMap(BerlinModelTaxonImport.NAMESPACE);
97
		Map<String, DerivedUnitBase<?>> specimenMap = (Map<String, DerivedUnitBase<?>>) partitioner.getObjectMap(AlgaTerraFactEcologyImport.FACT_ECOLOGY_NAMESPACE);
93 98
		
94 99
		ResultSet rs = partitioner.getResultSet();
95 100

  
......
122 127
						
123 128
						Media media = handleSingleImage(rs, taxon, state, partitioner);
124 129
						
125
						handlePictureSpecificFields(rs, media, state);
130
						handlePictureSpecificFields(rs, media, state, specimenMap);
126 131
						
127 132
						taxaToSave.add(taxon); 
128 133
					}
......
150 155

  
151 156

  
152 157

  
153
	private void handlePictureSpecificFields(ResultSet rs, Media media, AlgaTerraImportState state) throws SQLException {
154
		//TODO
158
	private void handlePictureSpecificFields(ResultSet rs, Media media, AlgaTerraImportState state, Map<String, DerivedUnitBase<?>> specimenMap) throws SQLException {
159
		Integer specimenFactId = nullSafeInt(rs, "FactFk");
160
		if (specimenFactId != null){
161
			DerivedUnitBase<?> specimen = specimenMap.get(String.valueOf(specimenFactId));
162
			if (specimen == null){
163
				logger.warn("Specimen not found for FactFK: " + specimenFactId);
164
			}else{
165
				try {
166
					DerivedUnitFacade facade = DerivedUnitFacade.NewInstance(specimen);
167
					facade.addDerivedUnitMedia(media);
168
					getOccurrenceService().saveOrUpdate(specimen);
169
				} catch (DerivedUnitFacadeNotSupportedException e) {
170
					e.printStackTrace();
171
					logger.error(e.getMessage());
172
				}
173
			}
174
		}
155 175
		
156 176
	}
157 177

  
......
167 187
		
168 188
		try{
169 189
			Set<String> taxonIdSet = new HashSet<String>();
190
			Set<String> specimenIdSet = new HashSet<String>();
170 191
			
171 192
			while (rs.next()){
172 193
				handleForeignKey(rs, taxonIdSet, "RIdentifier");
......
179 200
			Map<String, TaxonBase> taxonMap = (Map<String,TaxonBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
180 201
			result.put(nameSpace, taxonMap);
181 202

  
203
			//fact specimen map
204
			nameSpace = AlgaTerraFactEcologyImport.FACT_ECOLOGY_NAMESPACE;
205
			cdmClass = SpecimenOrObservationBase.class;
206
			idSet = specimenIdSet;
207
			Map<String, SpecimenOrObservationBase> specimenMap = (Map<String,SpecimenOrObservationBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
208
			result.put(nameSpace, specimenMap);
209

  
182 210
			
183 211
		} catch (SQLException e) {
184 212
			throw new RuntimeException(e);

Also available in: Unified diff