derivedUnit.addDetermination(determination);\r
}\r
\r
+ @Transient\r
+ public DeterminationEvent getPreferredDetermination() {\r
+ Set<DeterminationEvent> events = derivedUnit.getDeterminations();\r
+ for (DeterminationEvent event : events){\r
+ if (event.getPreferredFlag() == true){\r
+ return event;\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ /**\r
+ * This method returns the preferred determination.\r
+ * @see #getOtherDeterminations()\r
+ * @see #getDeterminations()\r
+ * @return\r
+ */\r
+ @Transient\r
+ public void setPreferredDetermination(DeterminationEvent newEvent) {\r
+ Set<DeterminationEvent> events = derivedUnit.getDeterminations();\r
+ for (DeterminationEvent event : events){\r
+ if (event.getPreferredFlag() == true){\r
+ event.setPreferredFlag(false);\r
+ }\r
+ }\r
+ newEvent.setPreferredFlag(true);\r
+ events.add(newEvent);\r
+ }\r
+ \r
+ /**\r
+ * This method returns all determinations except for the preferred one.\r
+ * @see #getPreferredDetermination()\r
+ * @see #getDeterminations()\r
+ * @return\r
+ */\r
+ @Transient\r
+ public Set<DeterminationEvent> getOtherDeterminations() {\r
+ Set<DeterminationEvent> events = derivedUnit.getDeterminations();\r
+ Set<DeterminationEvent> result = new HashSet<DeterminationEvent>();\r
+ for (DeterminationEvent event : events){\r
+ if (event.getPreferredFlag() != true){\r
+ result.add(event);\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+ \r
+ /**\r
+ * This method returns all determination events. The preferred one {@link #getPreferredDetermination()} \r
+ * and all others {@link #getOtherDeterminations()}.\r
+ * @return\r
+ */\r
@Transient\r
public Set<DeterminationEvent> getDeterminations() {\r
return derivedUnit.getDeterminations();\r
specimen.setAccessionNumber(accessionNumber);\r
specimen.setCatalogNumber(catalogNumber);\r
specimen.setStoredUnder(taxonName);\r
- specimen.setCollectorsNumber(collectorsNumber);\r
specimen.setCollection(collection);\r
specimen.setPreservation(preservationMethod);\r
\r
specimenFacade.getDerivedUnitDefinitions().size());\r
\r
}\r
+ \r
+\r
+ /**\r
+ * Test method for\r
+ * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addDetermination(eu.etaxonomy.cdm.model.occurrence.DeterminationEvent)}\r
+ * .\r
+ */\r
+ @Test\r
+ public void testPreferredOtherDeterminations() {\r
+ Assert.assertEquals("There should be no determination yet", 0,\r
+ specimenFacade.getDeterminations().size());\r
+ DeterminationEvent determinationEvent1 = DeterminationEvent.NewInstance();\r
+ specimenFacade.setPreferredDetermination(determinationEvent1);\r
+ \r
+ Assert.assertEquals("There should be exactly one determination", 1,\r
+ specimenFacade.getDeterminations().size());\r
+ Assert.assertEquals("The only determination should be determination 1",\r
+ determinationEvent1, specimenFacade.getDeterminations()\r
+ .iterator().next());\r
+ Assert.assertEquals("determination 1 should be the preferred determination",\r
+ determinationEvent1, specimenFacade.getPreferredDetermination());\r
+ Assert.assertEquals("There should be no 'non preferred' determination", 0,\r
+ specimenFacade.getOtherDeterminations().size());\r
+\r
+ \r
+\r
+ DeterminationEvent determinationEvent2 = DeterminationEvent.NewInstance();\r
+ specimenFacade.addDetermination(determinationEvent2);\r
+ Assert.assertEquals("There should be exactly 2 determinations", 2,\r
+ specimenFacade.getDeterminations().size());\r
+ Assert.assertEquals("determination 1 should be the preferred determination",\r
+ determinationEvent1, specimenFacade.getPreferredDetermination());\r
+ Assert.assertEquals("There should be one 'non preferred' determination", 1,\r
+ specimenFacade.getOtherDeterminations().size());\r
+ Assert.assertEquals("The only 'non preferred' determination should be determination 2",\r
+ determinationEvent2, specimenFacade.getOtherDeterminations().iterator().next());\r
+ \r
+ \r
+ DeterminationEvent determinationEvent3 = DeterminationEvent.NewInstance();\r
+ specimenFacade.setPreferredDetermination(determinationEvent3);\r
+ Assert.assertEquals("There should be exactly 3 determinations", 3,\r
+ specimenFacade.getDeterminations().size());\r
+ Assert.assertEquals("determination 3 should be the preferred determination",\r
+ determinationEvent3, specimenFacade.getPreferredDetermination());\r
+ Assert.assertEquals("There should be 2 'non preferred' determination", 2,\r
+ specimenFacade.getOtherDeterminations().size());\r
+ Assert.assertTrue("determination 1 should be contained in the set of 'non preferred' determinations",\r
+ specimenFacade.getOtherDeterminations().contains(determinationEvent1));\r
+ Assert.assertTrue("determination 2 should be contained in the set of 'non preferred' determinations",\r
+ specimenFacade.getOtherDeterminations().contains(determinationEvent2));\r
+\r
+ }\r
\r
/**\r
* Test method for\r