import static org.junit.Assert.*;\r
\r
import java.util.List;\r
+import java.util.Set;\r
+import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
+import org.hibernate.util.JDBCExceptionReporter;\r
+import org.junit.Assert;\r
import org.junit.Test;\r
import org.unitils.dbunit.annotation.DataSet;\r
+import org.unitils.dbunit.annotation.ExpectedDataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;\r
+import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;\r
+import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;\r
import eu.etaxonomy.cdm.persistence.dao.name.ITypeDesignationDao;\r
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
+import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
/**\r
* @author a.babadshanjan\r
+ * @author a.mueller\r
* @created 25.05.2009\r
- * @version 1.0\r
+ * @version 1.1\r
*/\r
@DataSet\r
public class TypeDesignationDaoHibernateImplTest extends CdmIntegrationTest {\r
@SuppressWarnings("unused")\r
- private static final Logger logger = Logger\r
- .getLogger(TypeDesignationDaoHibernateImplTest.class);\r
+ private static final Logger logger = Logger.getLogger(TypeDesignationDaoHibernateImplTest.class);\r
\r
@SpringBeanByType\r
ITypeDesignationDao typeDesignationDao;\r
\r
+ @SpringBeanByType\r
+ ITaxonNameDao nameDao;\r
+ \r
+ @SpringBeanByType\r
+ IAgentDao agentDao;\r
+\r
+ \r
/**\r
* Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.name.TypeDesignationHibernateImpl#TypeDesignationHibernateImpl()}.\r
*/\r
@Test\r
public void testGetAllTypeDesignations() {\r
List<TypeDesignationBase> typeDesignations = typeDesignationDao.getAllTypeDesignations(100, 0);\r
- assertEquals(typeDesignations.size(), 2);\r
+ assertEquals(2, typeDesignations.size());\r
+ SpecimenTypeDesignation specTypeDesig = null;\r
for (TypeDesignationBase typeDesignation : typeDesignations) {\r
if (typeDesignation.isInstanceOf(NameTypeDesignation.class)) {\r
assertTrue(typeDesignation.getTypeStatus().isInstanceOf(NameTypeDesignationStatus.class));\r
} else if (typeDesignation.isInstanceOf(SpecimenTypeDesignation.class)) {\r
+ Assert.assertNull("There should be only 1 specimen type designation but this is already the second", specTypeDesig);\r
TypeDesignationStatusBase typeDesignationStatus = typeDesignation.getTypeStatus();\r
assertTrue(typeDesignationStatus.isInstanceOf(SpecimenTypeDesignationStatus.class));\r
+ specTypeDesig = CdmBase.deproxy(typeDesignation,SpecimenTypeDesignation.class);\r
}\r
}\r
+ Set<TaxonNameBase> names = specTypeDesig.getTypifiedNames();\r
+ Assert.assertEquals("There should be exactly 1 typified name for the the specimen type designation", 1, names.size());\r
+ TaxonNameBase singleName = names.iterator().next();\r
+ Assert.assertEquals("", UUID.fromString("61b1dcae-8aa6-478a-bcd6-080cf0eb6ad7"), singleName.getUuid());\r
}\r
+ \r
+// /**\r
+// TODO currently throws "Could not execute JDBC batch update" exception when trying to save a new name\r
+// * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.name.TypeDesignationHibernateImpl#saveOrUpdate(CdmBase)}.\r
+// */\r
+// @Test\r
+// @ExpectedDataSet\r
+// public void testSaveTypeDesignations() {\r
+//// List<TypeDesignationBase> typeDesignations = typeDesignationDao.getAllTypeDesignations(100, 0);\r
+//// assertEquals(typeDesignations.size(), 2);\r
+//// SpecimenTypeDesignation specTypeDesig = null;\r
+//// for (TypeDesignationBase typeDesignation : typeDesignations) {\r
+//// if (typeDesignation.isInstanceOf(SpecimenTypeDesignation.class)) {\r
+//// specTypeDesig = CdmBase.deproxy(typeDesignation,SpecimenTypeDesignation.class);\r
+//// }\r
+//// }\r
+// \r
+// TaxonNameBase newName = BotanicalName.NewInstance(Rank.SPECIES());\r
+//// newName.setTitleCache("Name used as typified name", true);\r
+//// newName.addTypeDesignation(specTypeDesig, false);\r
+//// Set<TaxonNameBase> typifiedNames = specTypeDesig.getTypifiedNames();\r
+//// Assert.assertEquals("There should be 2 typified names for this type designation now", 2, typifiedNames.size());\r
+// \r
+// nameDao.save(newName);\r
+//// typeDesignationDao.saveOrUpdate(specTypeDesig);\r
+//// this.endTransaction();\r
+//// printDataSet(System.out, new String[]{"TaxonNameBase","TypeDesignationBase",\r
+//// "TypeDesignationBase_TaxonNameBase","TaxonNameBase_typeDesignationBase"});\r
+// \r
+// Person person = Person.NewTitledInstance("new Person");\r
+// agentDao.save(person);\r
+// }\r
+ \r
+// @Test\r
+// public void printDataSet(){\r
+// printDataSet(System.out, new String[]{"TaxonNameBase","TypeDesignationBase",\r
+// "TypeDesignationBase_TaxonNameBase","TaxonNameBase_typeDesignationBase"});\r
+// }\r
+ \r
}\r