import static org.junit.Assert.assertEquals;\r
import static org.junit.Assert.assertNull;\r
\r
+import java.util.List;\r
import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
public final void testChangeSynonymToAcceptedTaxon(){\r
Rank rank = Rank.SPECIES();\r
//HomotypicalGroup group = HomotypicalGroup.NewInstance();\r
- Taxon tax1 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test1", null, null, null, null, null, null, null), null);\r
- Taxon tax2 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null);\r
+ Taxon taxWithoutSyn = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test1", null, null, null, null, null, null, null), null);\r
+ Taxon taxWithSyn = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null);\r
Synonym synonym = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null);\r
Synonym synonym2 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test4", null, null, null, null, null, null, null), null);\r
synonym2.getName().setHomotypicalGroup(synonym.getHomotypicGroup());\r
//tax2.addHeterotypicSynonymName(synonym.getName());\r
- tax2.addSynonym(synonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());\r
- tax2.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());\r
+ taxWithSyn.addSynonym(synonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());\r
+ taxWithSyn.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());\r
\r
- service.save(tax1);\r
+ service.save(taxWithoutSyn);\r
UUID uuidSyn = service.save(synonym);\r
service.save(synonym2);\r
- service.save(tax2);\r
+ service.save(taxWithSyn);\r
\r
- Taxon taxon = service.changeSynonymToAcceptedTaxon(synonym, tax2, true, true, null, null);\r
+ Taxon taxon = service.changeSynonymToAcceptedTaxon(synonym, taxWithSyn, true, true, null, null);\r
//test flush (resave deleted object)\r
TaxonBase<?> syn = service.find(uuidSyn);\r
assertNull(syn);\r
Assert.assertEquals("New taxon should have 1 synonym relationship (the old homotypic synonym)", 1, taxon.getSynonymRelations().size());\r
+ }\r
+\r
+ @Test\r
+ public final void testGetHeterotypicSynonymyGroups(){\r
+ Rank rank = Rank.SPECIES();\r
+ Reference<?> ref1 = ReferenceFactory.newGeneric();\r
+ //HomotypicalGroup group = HomotypicalGroup.NewInstance();\r
+ Taxon taxon1 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null);\r
+ Synonym synonym0 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null);\r
+ Synonym synonym1 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null);\r
+ Synonym synonym2 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test4", null, null, null, null, null, null, null), null);\r
+ synonym0.getName().setHomotypicalGroup(taxon1.getHomotypicGroup());\r
+ synonym2.getName().setHomotypicalGroup(synonym1.getHomotypicGroup());\r
+ //tax2.addHeterotypicSynonymName(synonym.getName());\r
+ taxon1.addSynonym(synonym1, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());\r
+ taxon1.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());\r
+ \r
+ service.save(synonym1);\r
+ service.save(synonym2);\r
+ service.save(taxon1);\r
\r
+ List<List<Synonym>> heteroSyns = service.getHeterotypicSynonymyGroups(taxon1, null);\r
+ Assert.assertEquals("There should be 1 heterotypic group", 1, heteroSyns.size());\r
+ List<Synonym> synList = heteroSyns.get(0);\r
+ Assert.assertEquals("There should be 2 heterotypic syns in group 1", 2, synList.size());\r
\r
+ //test sec\r
+ synonym2.setSec(ref1); \r
+ heteroSyns = service.getHeterotypicSynonymyGroups(taxon1, null);\r
+ Assert.assertEquals("There should be 1 heterotypic group", 1, heteroSyns.size());\r
+ synList = heteroSyns.get(0);\r
+ Assert.assertEquals("getHeterotypicSynonymyGroups should be independent of sec reference", 2, synList.size());\r
\r
}\r
+ \r
\r
+ @Test\r
+ public final void testGetHomotypicSynonymsByHomotypicGroup(){\r
+ Rank rank = Rank.SPECIES();\r
+ Reference<?> ref1 = ReferenceFactory.newGeneric();\r
+ //HomotypicalGroup group = HomotypicalGroup.NewInstance();\r
+ Taxon taxon1 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null);\r
+ Synonym synonym0 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null);\r
+ Synonym synonym1 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null);\r
+ Synonym synonym2 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test4", null, null, null, null, null, null, null), null);\r
+ synonym0.getName().setHomotypicalGroup(taxon1.getHomotypicGroup());\r
+ synonym2.getName().setHomotypicalGroup(synonym1.getHomotypicGroup());\r
+ //tax2.addHeterotypicSynonymName(synonym.getName());\r
+ taxon1.addSynonym(synonym0, SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF());\r
+ taxon1.addSynonym(synonym1, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());\r
+ taxon1.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());\r
+ \r
+ service.save(synonym1);\r
+ service.save(synonym2);\r
+ service.save(taxon1);\r
+ \r
+ List<Synonym> homoSyns = service.getHomotypicSynonymsByHomotypicGroup(taxon1, null);\r
+ Assert.assertEquals("There should be 1 heterotypic group", 1, homoSyns.size());\r
+ Assert.assertSame("The homotypic synonym should be synonym0", synonym0, homoSyns.get(0));\r
+ \r
+ //test sec\r
+ synonym0.setSec(ref1); \r
+ homoSyns = service.getHomotypicSynonymsByHomotypicGroup(taxon1, null);\r
+ Assert.assertEquals("getHeterotypicSynonymyGroups should be independent of sec reference", 1, homoSyns.size());\r
+ \r
+ }\r
+ \r
+ \r
}\r