Project

General

Profile

« Previous | Next » 

Revision 3ef2e1bd

Added by Andreas Müller over 7 years ago

ref #5974 Remove synonym relationships (not finished yet)

View differences:

app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/UseImport.java
149 149
				ArrayList<String> lstTaxon = new ArrayList<String>();
150 150
				while (cells.hasNext()) {
151 151
					Cell cell = cells.next();
152
				
152

  
153 153
					int intCellType = cell.getCellType();
154 154
					switch (intCellType) {
155 155
						case 0:
156
							int cellValue = (int) cell.getNumericCellValue(); 
156
							int cellValue = (int) cell.getNumericCellValue();
157 157
							lstTaxon.add(Integer.toString(cellValue));
158 158
							break;
159 159
						case 1:
......
162 162
					}
163 163
				}
164 164
				lstUpdates.add(lstTaxon);
165
				lstTaxonIDs.add(Integer.parseInt(lstTaxon.get(0)));	
165
				lstTaxonIDs.add(Integer.parseInt(lstTaxon.get(0)));
166 166
			}
167
			
167

  
168 168
			List<TaxonBase> taxa = service.findTaxaByID(lstTaxonIDs);
169 169
			for(TaxonBase idTaxa : taxa) {
170 170
				//System.out.println(idTaxa.getUuid().toString());
171 171
				System.out.println(idTaxa.getName());
172 172
			}
173
			
174
			
173

  
174

  
175 175
			MarkerType useMarkerType = (MarkerType) termService.find(UUID.fromString("2e6e42d9-e92a-41f4-899b-03c0ac64f039"));
176 176
			Marker useMarker = Marker.NewInstance(useMarkerType, true);
177 177
			for (ArrayList<String> lstUpdate : lstUpdates) {
......
185 185
				authorTeam.setTitleCache(lstUpdate.get(3));
186 186
				citation.setAuthorship(authorTeam);
187 187
				citation.setTitle(lstUpdate.get(4));
188
				
188

  
189 189
				//citation.
190 190
				TimePeriod year = TimePeriod.NewInstance(Integer.parseInt(lstUpdate.get(5)));
191 191
				citation.setDatePublished(year);
192 192
				citation.setTitleCache(lstUpdate.get(6));
193 193
				//citation.
194 194
				for(TaxonBase taxon : taxa) {
195
					String taxonUUID = taxon.getUuid().toString(); 
195
					String taxonUUID = taxon.getUuid().toString();
196 196
					//System.out.println(idTaxonToUpdate + "|" + taxonUUID);
197 197
					if(idTaxonToUpdate.equals(taxonUUID)) {
198 198
						logger.info("Processing Taxn " + taxon.getTitleCache() + " with UUID: " + taxon.getUuid());
199 199
						if(taxon.isInstanceOf(Synonym.class)) {
200 200
							Taxon bestCandidate = null;
201 201
							Synonym synonym = CdmBase.deproxy(taxon, Synonym.class);
202
							Set<Taxon> acceptetdCandidates = synonym.getAcceptedTaxa();
203
							if(!acceptetdCandidates.isEmpty()){
204
								bestCandidate = acceptetdCandidates.iterator().next();
205
								if(acceptetdCandidates.size() == 1){
206
									logger.info(acceptetdCandidates.size() + " Accepted taxa found for synonym " + taxon.getTitleCache() + ", using first one: " + bestCandidate.getTitleCache());
207
									Set<TaxonDescription> taxonDescriptions = bestCandidate.getDescriptions();
208
									if(!taxonDescriptions.isEmpty()) {
209
										TaxonDescription firstDescription = taxonDescriptions.iterator().next();
210
										//newUseSummary.addSource(null, null, citation, null);
211
										//firstDescription.addElement(newUseSummary);
212
									}
213
									else {
214
										logger.warn("No description container for: " + bestCandidate.getName());
215
										
216
									}
217
								} else {
218
									logger.info("using accepted Taxon " +  bestCandidate.getTitleCache() + "for synonym " + taxon.getTitleCache());
219
									//List<DescriptionElementBase> descriptionElements = descService.getDescriptionElementsForTaxon((Taxon) bestCandidate, null, null, null, null, null);
220
									Set<TaxonDescription> taxonDescriptions = bestCandidate.getDescriptions();
221
									if(!taxonDescriptions.isEmpty()) {
222
										TaxonDescription firstDescription = taxonDescriptions.iterator().next();
223
										//newUseSummary.addSource(null, null, citation, null);
224
										//firstDescription.addElement(newUseSummary);
225
									}
226
									else {
227
										logger.warn("No description container for: " + bestCandidate.getName());
228
										
229
									}
202
							Taxon acceptetdTaxon = synonym.getAcceptedTaxon();
203
							if(acceptetdTaxon != null){
204
								Set<TaxonDescription> taxonDescriptions = acceptetdTaxon.getDescriptions();
205
								if(!taxonDescriptions.isEmpty()) {
206
									TaxonDescription firstDescription = taxonDescriptions.iterator().next();
207
									//newUseSummary.addSource(null, null, citation, null);
208
									//firstDescription.addElement(newUseSummary);
209
								}
210
								else {
211
									logger.warn("No description container for: " + acceptetdTaxon.getName());
230 212
								}
231 213
							}
232 214
						}
......
243 225
							}*/
244 226
							taxonAccepted.addDescription(newUseDescription);
245 227
							service.saveOrUpdate(taxonAccepted);
246
							
228

  
247 229
						}
248 230
					}
249 231
				}
250
				
232

  
251 233
			}
252 234
			conversation.commit(false);
253
			
235

  
254 236
		} catch (IOException e) {
255 237
			success = false;
256 238
			e.printStackTrace();
......
259 241
		return success;
260 242

  
261 243
	}
262
	
244

  
263 245
	private boolean loadUses() throws InvalidFormatException {
264 246
		boolean success = true;
265 247
		//String xslUseSummaryPathString = "C://workspace//Matched_UseSummary_referenceIdTaxEd_TaxonName.xls";
266 248
		//String xslUseSummaryPathString = "C://workspace//testUseSummaries.xls";
267
		
268
		
249

  
250

  
269 251
		String xslUseSummaryPathString = "//Users//alextheys//Projects//CDM_Trunk//Palm_Use_Data_Extension//CDMLib-apps//cdmlib-apps//UseImport//src//main//resources//Matched_UseSummary_referenceIdTaxEd_TaxonName.xls";
270
		
252

  
271 253
		//String xslUseRecordPathString = "C://workspace//UseRecordTerms_UseSummaryId.xls";
272 254
		//String xslUseRecordPathString = "C://workspace//testUseRecords.xls";
273 255
		//String xslUseRecordPathString = "C://workspace//test_useRecord.xls";
274 256
		String xslUseRecordPathString = "//Users//alextheys//Projects//CDM_Trunk//Palm_Use_Data_Extension//CDMLib-apps//cdmlib-apps//UseImport//src//main//resources//UseRecordTerms_UseSummaryId.xls";
275
		
257

  
276 258
		InputStream inputStream = null;
277
		
278
		
259

  
260

  
279 261
		CdmApplicationController applicationController = CdmApplicationController.NewInstance(dataSource());
280 262
		ConversationHolder conversation = applicationController.NewConversation();
281 263
		conversation.startTransaction();
282
		
264

  
283 265
		ITaxonService taxonService = applicationController.getTaxonService();
284 266
		ITermService termService = applicationController.getTermService();
285 267
		IDescriptionService descService = applicationController.getDescriptionService();
286 268
		IReferenceService referenceService = applicationController.getReferenceService();
287
			
288
		
269

  
270

  
289 271
		ArrayList<ArrayList<String>> lstUseSummaries = loadSpreadsheet(xslUseSummaryPathString);
290 272
		ArrayList<ArrayList<String>> lstUseRecords = loadSpreadsheet(xslUseRecordPathString);
291
		
273

  
292 274
		MarkerType useMarkerType = (MarkerType) termService.find(UUID.fromString("2e6e42d9-e92a-41f4-899b-03c0ac64f039"));
293 275
		Feature featureUseRecord = (Feature) termService.find(UUID.fromString("8125a59d-b4d5-4485-89ea-67306297b599"));
294 276
		Feature featureUseSummary = (Feature) termService.find(UUID.fromString("6acb0348-c070-4512-a37c-67bcac016279"));
295
		Pager<DefinedTermBase>  notAvailModPager = (Pager<DefinedTermBase> ) termService.findByTitle(DefinedTerm.class, "N/A", null, null, null, null, null, null);
296
		Pager<DefinedTermBase>  notAvailStatePager = (Pager<DefinedTermBase> ) termService.findByTitle(State.class, "N/A", null, null, null, null, null, null);
277
		Pager<DefinedTermBase>  notAvailModPager = termService.findByTitle(DefinedTerm.class, "N/A", null, null, null, null, null, null);
278
		Pager<DefinedTermBase>  notAvailStatePager = termService.findByTitle(State.class, "N/A", null, null, null, null, null, null);
297 279
		DefinedTerm notAvailMod = (DefinedTerm) notAvailModPager.getRecords().get(0);
298 280
		State notAvailState = (State) notAvailStatePager.getRecords().get(0);
299
		
281

  
300 282
		int i = 0;
301 283
		int j = 0;
302 284
		try {
......
343 325
								stateCatData.putModifyingText(Language.ENGLISH(), "Use Category");
344 326
								modifyingText += useCategory.toString() + ";";
345 327
								useRecord.addStateData(stateCatData);
346
								
347
								 
328

  
329

  
348 330
								//useRecord.addState(stateData);
349 331
							} else {
350 332
								State useCategory = notAvailState;
......
353 335
								stateCatData.putModifyingText(Language.ENGLISH(), "Use Category");
354 336
								modifyingText += useCategory.toString() + ";";
355 337
								useRecord.addStateData(stateCatData);
356
								
338

  
357 339
							}
358
							
340

  
359 341
							if(lstUseRecord.get(4) != null && lstUseRecord.get(4).length() > 0) {
360 342
								Pager<DefinedTermBase> useSubCategoryPager = termService.findByTitle(State.class, lstUseRecord.get(4), null, null, null, null, null, null);
361 343
								State useSubCategory = null;
362 344
								if(useSubCategoryPager.getCount() > 0) {
363 345
									useSubCategory = (State) useSubCategoryPager.getRecords().get(0);
364
								
346

  
365 347
								} else {
366 348
									useSubCategory = notAvailState;
367 349
								}
......
370 352
								stateSubCatData.putModifyingText(Language.ENGLISH(), "Use SubCategory");
371 353
								modifyingText += useSubCategory.toString() + ";";
372 354
								useRecord.addStateData(stateSubCatData);
373
								
355

  
374 356
							}
375 357
							else {
376 358
								State useSubCategory = notAvailState;
......
379 361
								stateSubCatData.putModifyingText(Language.ENGLISH(), "Use SubCategory");
380 362
								modifyingText += useSubCategory.toString() + ";";
381 363
								useRecord.addStateData(stateSubCatData);
382
								
364

  
383 365
							}
384 366
							if(lstUseRecord.get(5) != null && lstUseRecord.get(5).length() > 0) {
385 367
								Pager<DefinedTermBase> countryPager = termService.findByTitle(DefinedTerm.class, lstUseRecord.get(5), null, null, null, null, null, null);
......
396 378
								modifyingText += country.toString() + ";";
397 379
								useRecord.addModifier(country);
398 380
							}
399
							
381

  
400 382
							if(lstUseRecord.get(6) != null && lstUseRecord.get(6).length() > 0) {
401 383
								Pager<DefinedTermBase> plantPartPager = termService.findByTitle(DefinedTerm.class, lstUseRecord.get(6), null, null, null, null, null, null);
402 384
								DefinedTerm plantPart = null;
......
448 430
							newUseDescription.addElement(useRecord);
449 431
						}
450 432
					}
451
					
452
					
453
					
433

  
434

  
435

  
454 436
					if (taxon.isInstanceOf(Synonym.class)){
455 437
						Taxon bestCandidate = null;
456 438
						Synonym synonym = CdmBase.deproxy(taxon, Synonym.class);
457
						Set<Taxon> acceptetdCandidates = synonym.getAcceptedTaxa();
458
						if(!acceptetdCandidates.isEmpty()){
459
							bestCandidate = acceptetdCandidates.iterator().next();
460
							if(acceptetdCandidates.size() == 1){
461
								logger.info(acceptetdCandidates.size() + " Accepted taxa found for synonym " + taxon.getTitleCache() + ", using first one: " + bestCandidate.getTitleCache());
462
								bestCandidate.addDescription(newUseDescription);
463
								taxonService.saveOrUpdate(bestCandidate);
464
								conversation.commit();
465
							}
466
							else {
467
								logger.info("using accepted Taxon " +  bestCandidate.getTitleCache() + "for synonym " + taxon.getTitleCache());
468
								bestCandidate.addDescription(newUseDescription);
469
								taxonService.saveOrUpdate(bestCandidate);
470
								conversation.commit();
471
							}
439
						Taxon acceptedTaxon = synonym.getAcceptedTaxon();
440
						if(acceptedTaxon != null){
441
						    acceptedTaxon.addDescription(newUseDescription);
442
							taxonService.saveOrUpdate(bestCandidate);
443
							conversation.commit();
472 444
						}
473 445
					} else {
474 446
						Taxon taxonAccepted = (Taxon) taxon;
......
481 453
					System.out.println("Processing UseSummary#: " + i + " ID:" + lstUseSummary.get(0));
482 454
				}
483 455
			}
484
			
456

  
485 457
			conversation.close();
486 458
			applicationController.close();
487
		
459

  
488 460
		} catch (Exception e) {
489 461
			success = false;
490 462
			e.printStackTrace();
491 463
		}
492 464
		return success;
493
		
465

  
494 466
	}
495
	
467

  
496 468
	//Completed and tested!
497 469
	private boolean loadTerms() throws InvalidFormatException {
498 470
		boolean success = true;
499
		
471

  
500 472
		//String xslPathString = "C://workspace//terms.xls";
501 473
		String xslPathString = "//Users//alextheys//Projects//CDM_Trunk//Palm_Use_Data_Extension//CDMLib-apps//cdmlib-apps//UseImport//src//main//resources//terms.xls";
502
		
474

  
503 475
		CdmApplicationController applicationController = CdmApplicationController.NewInstance(dataSource());
504 476
		ConversationHolder conversation = applicationController.NewConversation();
505 477
		conversation.startTransaction();
506
		
478

  
507 479
		ITaxonService service = applicationController.getTaxonService();
508 480
		ITermService termService = applicationController.getTermService();
509 481
		IVocabularyService vocabularyService = applicationController.getVocabularyService();
510
		IReferenceService referenceService = applicationController.getReferenceService();	
511
		
512
		TermVocabulary<State> stateVocabulary =  (TermVocabulary<State>) vocabularyService.find(UUID.fromString("67430d7c-fd43-4e9d-af5e-d0dca3f74931")); 
513
		TermVocabulary<DefinedTermBase<?>> countryVocabulary = (TermVocabulary<DefinedTermBase<?>>) vocabularyService.find(UUID.fromString("116c51f1-e63a-46f7-a258-e1149a42868b"));  
514
		TermVocabulary<DefinedTerm> plantPartVocabulary = (TermVocabulary<DefinedTerm>) vocabularyService.find(UUID.fromString("369914fe-d54b-4063-99ce-abc81d30ad35"));  
515
		TermVocabulary<DefinedTerm> humanGroupVocabulary =  (TermVocabulary<DefinedTerm>) vocabularyService.find(UUID.fromString("ca46cea5-bdf7-438d-9cd8-e2793d2178dc"));
516
		
482
		IReferenceService referenceService = applicationController.getReferenceService();
483

  
484
		TermVocabulary<State> stateVocabulary =  vocabularyService.find(UUID.fromString("67430d7c-fd43-4e9d-af5e-d0dca3f74931"));
485
		TermVocabulary<DefinedTermBase<?>> countryVocabulary = vocabularyService.find(UUID.fromString("116c51f1-e63a-46f7-a258-e1149a42868b"));
486
		TermVocabulary<DefinedTerm> plantPartVocabulary = vocabularyService.find(UUID.fromString("369914fe-d54b-4063-99ce-abc81d30ad35"));
487
		TermVocabulary<DefinedTerm> humanGroupVocabulary =  vocabularyService.find(UUID.fromString("ca46cea5-bdf7-438d-9cd8-e2793d2178dc"));
488

  
517 489
		IDescriptionService descService = applicationController.getDescriptionService();
518 490
		InputStream inputStream = null;
519
		
491

  
520 492
		try {
521 493
			inputStream = new FileInputStream(xslPathString);
522 494

  
......
547 519
				ArrayList<String> lstTerms = new ArrayList<String>();
548 520
				while (cells.hasNext()) {
549 521
					Cell cell = cells.next();
550
				
522

  
551 523
					int intCellType = cell.getCellType();
552 524
					switch (intCellType) {
553 525
						case 0:
554
							int cellValue = (int) cell.getNumericCellValue(); 
526
							int cellValue = (int) cell.getNumericCellValue();
555 527
							lstTerms.add(Integer.toString(cellValue));
556 528
							break;
557 529
						case 1:
......
560 532
					}
561 533
				}
562 534
				lstUpdates.add(lstTerms);
563
				//lstTaxonIDs.add(Integer.parseInt(lstTaxon.get(0)));	
535
				//lstTaxonIDs.add(Integer.parseInt(lstTaxon.get(0)));
564 536
			}
565 537
			for (ArrayList<String> lstUpdate : lstUpdates) {
566
				int termType = Integer.parseInt(lstUpdate.get(0)); 
538
				int termType = Integer.parseInt(lstUpdate.get(0));
567 539
				switch (termType) {
568 540
				//Case 0 = UseCategory
569 541
				case 0:
......
642 614
					}
643 615
					conversation.commit(true);
644 616
					break;
645
					
617

  
646 618
				}
647 619
			}
648
			conversation.close();	
620
			conversation.close();
649 621
			applicationController.close();
650
			
622

  
651 623
		} catch (IOException e) {
652 624
			success = false;
653 625
			e.printStackTrace();
654 626
		}
655 627
		return success;
656
		
628

  
657 629
	}
658
	
630

  
659 631
	private ArrayList<ArrayList<String>> loadSpreadsheet(String xslPathString) throws InvalidFormatException {
660 632
		ArrayList<ArrayList<String>> lstUpdates = new ArrayList<ArrayList<String>>();
661 633
		InputStream inputStream = null;
662
		
634

  
663 635
		try {
664 636
			inputStream = new FileInputStream(xslPathString);
665 637

  
......
689 661
				ArrayList<String> lstTerms = new ArrayList<String>();
690 662
				while (cells.hasNext()) {
691 663
					Cell cell = cells.next();
692
				
664

  
693 665
					int intCellType = cell.getCellType();
694 666
					switch (intCellType) {
695 667
						case 0:
696
							int cellValue = (int) cell.getNumericCellValue(); 
668
							int cellValue = (int) cell.getNumericCellValue();
697 669
							lstTerms.add(Integer.toString(cellValue));
698 670
							break;
699 671
						case 1:
......
702 674
					}
703 675
				}
704 676
				lstUpdates.add(lstTerms);
705
				//lstTaxonIDs.add(Integer.parseInt(lstTaxon.get(0)));	
677
				//lstTaxonIDs.add(Integer.parseInt(lstTaxon.get(0)));
706 678
			}
707 679
		} catch (IOException e) {
708 680
			e.printStackTrace();
709 681
		}
710 682
		return lstUpdates;
711 683
	}
712
	
713
	
684

  
685

  
714 686
	private boolean setupNecessaryItems() {
715 687
		boolean success = false;
716 688
		CdmApplicationController applicationController = CdmApplicationController.NewInstance(dataSource());
717 689
		ConversationHolder conversation = applicationController.NewConversation();
718
		
719
		
690

  
691

  
720 692
		ITaxonService service = applicationController.getTaxonService();
721 693
		ITermService termService = applicationController.getTermService();
722 694
		IVocabularyService vocabularyService = applicationController.getVocabularyService();
723 695
		IFeatureTreeService featureTreeService = applicationController.getFeatureTreeService();
724
		
696

  
725 697
		MarkerType existingMarkertype = (MarkerType)termService.find(UUID.fromString("2e6e42d9-e92a-41f4-899b-03c0ac64f039"));
726 698
		Feature featureUseRecord = (Feature) termService.find(UUID.fromString("8125a59d-b4d5-4485-89ea-67306297b599"));
727 699
		Feature featureUseSummary = (Feature) termService.find(UUID.fromString("6acb0348-c070-4512-a37c-67bcac016279"));
728
		TermVocabulary<State> stateVocabulary =  (TermVocabulary<State>) vocabularyService.find(UUID.fromString("67430d7c-fd43-4e9d-af5e-d0dca3f74931")); 
729
		TermVocabulary<DefinedTerm> countryVocabulary = (TermVocabulary<DefinedTerm>) vocabularyService.find(UUID.fromString("116c51f1-e63a-46f7-a258-e1149a42868b"));  
730
		TermVocabulary<DefinedTerm> plantPartVocabulary = (TermVocabulary<DefinedTerm>) vocabularyService.find(UUID.fromString("369914fe-d54b-4063-99ce-abc81d30ad35"));  
731
		TermVocabulary<DefinedTerm> humanGroupVocabulary =  (TermVocabulary<DefinedTerm>) vocabularyService.find(UUID.fromString("ca46cea5-bdf7-438d-9cd8-e2793d2178dc"));
732
		Pager<DefinedTermBase>  notAvailModPager = (Pager<DefinedTermBase> ) termService.findByTitle(DefinedTerm.class, "N/A", null, null, null, null, null, null);
733
		Pager<DefinedTermBase>  notAvailStatePager = (Pager<DefinedTermBase> ) termService.findByTitle(State.class, "N/A", null, null, null, null, null, null);
734
		
700
		TermVocabulary<State> stateVocabulary =  vocabularyService.find(UUID.fromString("67430d7c-fd43-4e9d-af5e-d0dca3f74931"));
701
		TermVocabulary<DefinedTerm> countryVocabulary = vocabularyService.find(UUID.fromString("116c51f1-e63a-46f7-a258-e1149a42868b"));
702
		TermVocabulary<DefinedTerm> plantPartVocabulary = vocabularyService.find(UUID.fromString("369914fe-d54b-4063-99ce-abc81d30ad35"));
703
		TermVocabulary<DefinedTerm> humanGroupVocabulary =  vocabularyService.find(UUID.fromString("ca46cea5-bdf7-438d-9cd8-e2793d2178dc"));
704
		Pager<DefinedTermBase>  notAvailModPager = termService.findByTitle(DefinedTerm.class, "N/A", null, null, null, null, null, null);
705
		Pager<DefinedTermBase>  notAvailStatePager = termService.findByTitle(State.class, "N/A", null, null, null, null, null, null);
706

  
735 707
		conversation.startTransaction();
736 708
		if (existingMarkertype == null) {
737 709
			existingMarkertype = MarkerType.NewInstance("use", "use", null);
738 710
			existingMarkertype.setUuid( UUID.fromString("2e6e42d9-e92a-41f4-899b-03c0ac64f039"));
739
			TermVocabulary<MarkerType> markerTypeVocabulary = (TermVocabulary<MarkerType>)vocabularyService.find((UUID.fromString("19dffff7-e142-429c-a420-5d28e4ebe305")));
711
			TermVocabulary<MarkerType> markerTypeVocabulary = vocabularyService.find((UUID.fromString("19dffff7-e142-429c-a420-5d28e4ebe305")));
740 712
			markerTypeVocabulary.addTerm(existingMarkertype);
741 713
			vocabularyService.saveOrUpdate(markerTypeVocabulary);
742 714
			conversation.commit(true);
743 715
		}
744 716
		if (stateVocabulary == null) {
745
			
717

  
746 718
			URI termSourceUri = null;
747 719
			try {
748 720
				termSourceUri = new URI("eu.etaxonomy.cdm.model.description.State");
......
792 764
			conversation.commit(true);
793 765
		}
794 766
		if(featureUseRecord == null|| featureUseSummary == null) {
795
			TermVocabulary<Feature> featureVocabulary = (TermVocabulary<Feature>)vocabularyService.find((UUID.fromString("b187d555-f06f-4d65-9e53-da7c93f8eaa8")));
767
			TermVocabulary<Feature> featureVocabulary = vocabularyService.find((UUID.fromString("b187d555-f06f-4d65-9e53-da7c93f8eaa8")));
796 768
			FeatureTree palmWebFeatureTree = featureTreeService.find(UUID.fromString("72ccce05-7cc8-4dab-8e47-bf3f5fd848a0"));
797 769
			//List<FeatureTree> featureTrees = CdmStore.getService(IFeatureTreeService.class).list(FeatureTree.class, null, null, null, null);
798
			
770

  
799 771
			if (featureUseRecord == null ) {
800 772
				featureUseRecord = Feature.NewInstance("Use Record", "Use Record", null);
801 773
				featureUseRecord.setUuid(UUID.fromString("8125a59d-b4d5-4485-89ea-67306297b599"));

Also available in: Unified diff