Project

General

Profile

« Previous | Next » 

Revision 9dc896c9

Added by Andreas Müller almost 7 years ago

fix #6368 rename table and class TaxonNameBase

View differences:

cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/tcsxml/in/TcsXmlTaxonNameRelationsImport.java
5 5
*
6 6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7 7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/ 
8
*/
9 9

  
10 10
package eu.etaxonomy.cdm.io.tcsxml.in;
11 11

  
......
30 30
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
31 31
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
32 32
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
33
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
33
import eu.etaxonomy.cdm.model.name.TaxonName;
34 34
import eu.etaxonomy.cdm.model.reference.Reference;
35 35
import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;
36 36

  
......
39 39
	private static final Logger logger = Logger.getLogger(TcsXmlTaxonNameRelationsImport.class);
40 40

  
41 41
	private static int modCount = 5000;
42
	
42

  
43 43
	public TcsXmlTaxonNameRelationsImport(){
44 44
		super();
45 45
	}
46
	
46

  
47 47
	@Override
48 48
	public boolean doCheck(TcsXmlImportState state){
49 49
		boolean result = true;
50 50
		logger.warn("Checking for TaxonNameRelations not yet implemented");
51 51
		//result &= checkArticlesWithoutJournal(tcsConfig);
52 52
		//result &= checkPartOfJournal(tcsConfig);
53
		
53

  
54 54
		return result;
55 55
	}
56
	
56

  
57 57
	@Override
58 58
	public void doInvoke(TcsXmlImportState state){
59
		
60
		
59

  
60

  
61 61
		logger.info("start make taxon name relations ...");
62
		MapWrapper<TaxonNameBase<?,?>> taxonNameMap = (MapWrapper<TaxonNameBase<?,?>>)state.getStore(ICdmIO.TAXONNAME_STORE);
62
		MapWrapper<TaxonName<?,?>> taxonNameMap = (MapWrapper<TaxonName<?,?>>)state.getStore(ICdmIO.TAXONNAME_STORE);
63 63
		MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);
64 64

  
65
		Set<TaxonNameBase> nameStore = new HashSet<TaxonNameBase>();
65
		Set<TaxonName> nameStore = new HashSet<TaxonName>();
66 66

  
67 67
		ResultWrapper<Boolean> success = ResultWrapper.NewInstance(true);
68 68
		String childName;
......
72 72
		TcsXmlImportConfigurator config = state.getConfig();
73 73
		Element elDataSet = super. getDataSetElement(config);
74 74
		Namespace tcsNamespace = config.getTcsXmlNamespace();
75
		
75

  
76 76
		DoubleResult<Element, Boolean> doubleResult;
77 77
		childName = "TaxonNames";
78 78
		obligatory = false;
79 79
		Element elTaxonNames = XmlHelp.getSingleChildElement(success, elDataSet, childName, tcsNamespace, obligatory);
80
		
80

  
81 81
		String tcsElementName = "TaxonName";
82 82
		List<Element> elTaxonNameList =  elTaxonNames == null ? new ArrayList<Element>() : elTaxonNames.getChildren(tcsElementName, tcsNamespace);
83 83

  
84 84
//		Element source = tcsConfig.getSourceRoot();
85
		
85

  
86 86
		int i = 0;
87 87
		int nameRelCount = 0;
88 88
		//for each taxonName
89 89
		for (Element elTaxonName : elTaxonNameList){
90
			
90

  
91 91
			if ((++i % modCount) == 0){ logger.info("Names handled: " + (i-1));}
92 92

  
93 93
			//Basionyms
94 94
			tcsElementName = "Basionym";
95 95
			List<Element> elBasionymList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
96
			
96

  
97 97
			for (Element elBasionym: elBasionymList){
98 98
				nameRelCount++;
99 99
				logger.debug("BASIONYM "+  nameRelCount);
100
				
100

  
101 101
				NameRelationshipType relType = NameRelationshipType.BASIONYM();
102 102
				boolean inverse = false;
103
				
103

  
104 104
				String id = elTaxonName.getAttributeValue("id");
105
//				TaxonNameBase<?,?> fromName = taxonNameMap.get(id);
106
				
105
//				TaxonName fromName = taxonNameMap.get(id);
106

  
107 107
				makeNomenclaturalNoteType(config, elBasionym, relType, taxonNameMap, nameStore, removeVersionOfRef(id), inverse);
108 108
			}// end Basionyms
109
			
109

  
110 110
			//SpellingCorrections
111 111
			tcsElementName = "SpellingCorrectionOf";
112 112
			List<Element> elSpellingCorrectionList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
113
			
113

  
114 114
			for (Element elSpellingCorrection: elSpellingCorrectionList){
115 115
				nameRelCount++;
116 116
				logger.debug("SpellingCorrectionOf "+  nameRelCount);
117
				
117

  
118 118
				NameRelationshipType relType = NameRelationshipType.ORTHOGRAPHIC_VARIANT();
119 119
				boolean inverse = true;
120
				
120

  
121 121
				String id = elTaxonName.getAttributeValue("id");
122 122
				makeNomenclaturalNoteType(config, elSpellingCorrection, relType, taxonNameMap, nameStore, id, inverse);
123 123
			}// end SpellingCorrections
124
			
124

  
125 125
			//LaterHomonymOf
126 126
			tcsElementName = "LaterHomonymOf";
127 127
			List<Element> elLaterHomonymList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
128 128
			for (Element elLaterHomonym: elLaterHomonymList){
129 129
				nameRelCount++;
130 130
				logger.debug("LaterHomonymOf "+  nameRelCount);
131
				
131

  
132 132
				NameRelationshipType relType = NameRelationshipType.LATER_HOMONYM();
133 133
				boolean inverse = false;
134
				
134

  
135 135
				String id = elTaxonName.getAttributeValue("id");
136 136
				makeNomenclaturalNoteType(config, elLaterHomonym, relType, taxonNameMap, nameStore, id, inverse);
137 137
			}// end LaterHomonymOf
138
			
138

  
139 139
			//ReplacementNameFor
140 140
			tcsElementName = "ReplacementNameFor";
141 141
			List<Element> elReplacementNameForList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
142 142
			for (Element elReplacementNameFor: elReplacementNameForList){
143 143
				nameRelCount++;
144 144
				logger.debug("LaterHomonymOf "+  nameRelCount);
145
				
145

  
146 146
				NameRelationshipType relType = NameRelationshipType.REPLACED_SYNONYM();
147 147
				boolean inverse = false;
148
				
148

  
149 149
				String id = elTaxonName.getAttributeValue("id");
150 150
				makeNomenclaturalNoteType(config, elReplacementNameFor, relType, taxonNameMap, nameStore, id, inverse);
151 151
			}// end ReplacementNameFor
152
			
152

  
153 153
			//ConservedAgainst
154 154
			tcsElementName = "ConservedAgainst";
155 155
			List<Element> elConservedAgainstList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
156 156
			for (Element elConservedAgainst: elConservedAgainstList){
157 157
				nameRelCount++;
158 158
				logger.debug("ConservedAgainst "+  nameRelCount);
159
				
159

  
160 160
				NameRelationshipType relType = NameRelationshipType.CONSERVED_AGAINST();
161 161
				boolean inverse = false;
162
				
162

  
163 163
				String id = elTaxonName.getAttributeValue("id");
164 164
				makeNomenclaturalNoteType(config, elConservedAgainst, relType, taxonNameMap, nameStore, id, inverse);
165 165
			}// end ConservedAgainst
166 166

  
167
			
168
			
167

  
168

  
169 169
			//Sanctioned
170 170
			tcsElementName = "Sanctioned";
171 171
			List<Element> elSanctionedList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
172 172
			for (Element elSanctioned: elSanctionedList){
173
				
173

  
174 174
				//nameRelCount++;
175 175
				//TODO sanctioned
176 176
				logger.warn("Sanctioned not yet implemented " );
177
				
177

  
178 178
				///NameRelationshipType relType = NameRelationshipType.XXX
179 179
				//boolean inverse = false;
180 180
				//
181 181
				//String id = elTaxonName.getAttributeValue("id");
182 182
				//makeNomenclaturalNoteType(tcsConfig, elSanctioned, relType, taxonNameMap, nameStore, id, inverse);
183 183
			}// end Sanctioned
184
			
184

  
185 185
			//PublicationStatus
186 186
			tcsElementName = "PublicationStatus";
187 187
			List<Element> elPublicationStatusList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
188 188
			for (Element elPublicationStatus: elPublicationStatusList){
189
				
189

  
190 190
				nameRelCount++;
191 191
				//TODO PublicationStatus
192 192
				//logger.warn("PublicationStatus not yet implemented " );
......
221 221
										//in cdm NameRelationship
222 222
										nameRelType = NameRelationshipType.LATER_ISONYM();
223 223
									}
224
									
224

  
225 225
								}
226 226
							}else if (element.getName().equals("RuleConsidered")){
227 227
								Iterator<Content> iteratorNote = element.getContent().iterator();
......
243 243
							logger.warn(e.getMessage());
244 244
						}
245 245
					}
246
						
246

  
247 247
				}
248
				TaxonNameBase taxonName = null;
248
				TaxonName taxonName = null;
249 249
				if (statusType != null || nameRelType != null){
250 250
					String id = elTaxonName.getAttributeValue("id");
251
					
251

  
252 252
					taxonName=  taxonNameMap.get(removeVersionOfRef(id));
253 253
				}
254 254
				if (taxonName != null){
......
261 261
					}
262 262
					if (nameRelType != null){
263 263
						String id = elTaxonName.getAttributeValue("id");
264
						
265
						TaxonNameBase relatedTaxonName =  taxonNameMap.get(removeVersionOfRef(id));
264

  
265
						TaxonName relatedTaxonName =  taxonNameMap.get(removeVersionOfRef(id));
266 266
						taxonName.addRelationshipFromName(relatedTaxonName, nameRelType, ruleConsidered);
267 267
					}
268 268
				}
269
				
270
				
271
				
272
				
269

  
270

  
271

  
272

  
273 273
			}// end PublicationStatus
274
			
274

  
275 275
			//BasedOn
276 276
			tcsElementName = "BasedOn";
277 277
			List<Element> elBasedOnList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
278 278
			for (Element elBasedOn: elBasedOnList){
279
				
279

  
280 280
				//nameRelCount++;
281 281
				//TODO BasedOn
282 282
				logger.debug("BasedOn not yet implemented " );
......
291 291
				//String id = elTaxonName.getAttributeValue("id");
292 292
				//makeNomenclaturalNoteType(tcsConfig, elBasedOn, relType, taxonNameMap, nameStore, id, inverse);
293 293
			}// end BasedOn
294
			
295
			
296
			
297
			
298
		}	
294

  
295

  
296

  
297

  
298
		}
299 299
		//Other Relations
300 300
		//TODO
301
		
301

  
302 302
		logger.info(nameRelCount + " nameRelations handled");
303 303
		getNameService().save(nameStore);
304 304
		logger.info("end make taxon name relationships ...");
......
307 307
		}
308 308
		return;
309 309
	}
310
	
311 310

  
312
	private  boolean makeNomenclaturalNoteType(TcsXmlImportConfigurator tcsConfig, Element elRelation, NameRelationshipType relType, MapWrapper<TaxonNameBase<?,?>> taxonNameMap, Set<TaxonNameBase> nameStore, String id, boolean inverse){
311

  
312
	private  boolean makeNomenclaturalNoteType(TcsXmlImportConfigurator tcsConfig, Element elRelation, NameRelationshipType relType, MapWrapper<TaxonName<?,?>> taxonNameMap, Set<TaxonName> nameStore, String id, boolean inverse){
313 313
		if (elRelation == null){
314 314
			return false;
315 315
		}
316 316
		Namespace ns = elRelation.getNamespace();
317
		
317

  
318 318
		String ruleConsidered = elRelation.getChildText("RuleConsidered", ns);
319 319
		String note = elRelation.getChildText("Note", ns);
320 320
		String microReference = elRelation.getChildText("MicroReference", ns);
321 321
		Element elRelatedName = elRelation.getChild("RelatedName", ns);
322 322
		//TODO relType
323 323
		String relatedNameId = elRelatedName.getAttributeValue("ref");
324
		
325
		TaxonNameBase<?,?> fromName = taxonNameMap.get(removeVersionOfRef(id));
326
		
327
		TaxonNameBase<?,?> toName = taxonNameMap.get(removeVersionOfRef(relatedNameId));
324

  
325
		TaxonName fromName = taxonNameMap.get(removeVersionOfRef(id));
326

  
327
		TaxonName toName = taxonNameMap.get(removeVersionOfRef(relatedNameId));
328 328
		if (fromName == null){
329 329
			//logger.warn("fromName (" + id + ") not found in Map! Relationship not set!");
330 330
			return false;
......
334 334
			return false;
335 335
		}
336 336

  
337
		
337

  
338 338
		//TODO note, microreference
339 339
		if (inverse == false){
340 340
			toName.addRelationshipToName(fromName, relType, ruleConsidered);
......
344 344
		nameStore.add(fromName);
345 345
		return true;
346 346
	}
347
	
347

  
348 348
	@Override
349 349
	protected boolean isIgnore(TcsXmlImportState state){
350 350
		return ! state.getConfig().isDoRelNames();

Also available in: Unified diff