reimplemented GenericDao.getAllClasses
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 28 Jul 2009 12:02:30 +0000 (12:02 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 28 Jul 2009 12:02:30 +0000 (12:02 +0000)
.gitattributes
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImpl.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java [new file with mode: 0644]

index b61a58b8062a51f8c33b44e71a55227fea461692..3360d6a0e8af62e531e104f6c51747e1c17604ef 100644 (file)
@@ -1656,6 +1656,7 @@ cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agen
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotationDaoTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBaseTestClass.java -text
+cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DaoBaseTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImplTest.java -text
 cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBaseTest.java -text
index 5dda0934c69c33e80a820cd531f55a2308307a39..9f58fc5e9ada6b4ec42f8aff09b27b042628732c 100644 (file)
@@ -14,10 +14,13 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.log4j.Logger;
 import org.hibernate.Criteria;
 import org.hibernate.Query;
 import org.hibernate.Session;
+import org.hibernate.SessionFactory;
 import org.hibernate.criterion.Restrictions;
+import org.hibernate.impl.SessionFactoryImpl;
 import org.springframework.stereotype.Repository;
 
 import eu.etaxonomy.cdm.model.agent.Address;
@@ -175,6 +178,7 @@ import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;
 
 @Repository
 public class CdmGenericDaoImpl extends CdmEntityDaoBase<CdmBase> implements ICdmGenericDao{
+       private static final Logger logger = Logger.getLogger(CdmGenericDaoImpl.class);
 
        public CdmGenericDaoImpl() {
                super(CdmBase.class);
@@ -208,172 +212,34 @@ public class CdmGenericDaoImpl extends CdmEntityDaoBase<CdmBase> implements ICdm
         * @see eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao#getAllCdmClasses(boolean)
         */
        public Set<Class<? extends CdmBase>> getAllCdmClasses(boolean includeAbstractClasses){
-               
-               Class[] result2 = {
-                               Address.class,
-                               AgentBase.class,
-                               Contact.class, 
-                               Institution.class, 
-                               InstitutionalMembership.class, 
-                               InstitutionType.class, 
-                               Person.class, 
-                               Team.class, 
-                               TeamOrPersonBase.class, 
-                               Annotation.class, 
-                               AnnotationType.class, 
-                               Credit.class,
-                               DefinedTermBase.class, 
-                               Extension.class, 
-                               ExtensionType.class, 
-                               Figure.class, 
-                               GrantedAuthorityImpl.class, 
-                               Group.class, 
-                               Keyword.class, 
-                               Language.class, 
-                               LanguageString.class, 
-                               LSID.class, 
-                               LSIDAuthority.class, 
-                               Marker.class, 
-                               MarkerType.class, 
-                               OrderedTermBase.class, 
-                               OrderedTermVocabulary.class, 
-                               OriginalSource.class, 
-                               RelationshipTermBase.class, 
-                               Representation.class, 
-                               TermVocabulary.class, 
-                               User.class, 
-                               
-                               AbsenceTerm.class, 
-                               CategoricalData.class, 
-                               CommonTaxonName.class, 
-                               DescriptionBase.class, 
-                               DescriptionElementBase.class, 
-                               Distribution.class, 
-                               Feature.class, 
-                               FeatureNode.class, 
-                               FeatureTree.class, 
-                               IdentificationKey.class, 
-                               IndividualsAssociation.class, 
-                               MeasurementUnit.class, 
-                               Modifier.class, 
-                               PresenceAbsenceTermBase.class, 
-                               PresenceTerm.class, 
-                               QuantitativeData.class, 
-                               Scope.class, 
-                               Sex.class, 
-                               SpecimenDescription.class, 
-                               Stage.class, 
-                               State.class, 
-                               StateData.class, 
-                               StatisticalMeasure.class, 
-                               StatisticalMeasurementValue.class, 
-                               TaxonDescription.class, 
-                               TaxonInteraction.class, 
-                               TaxonNameDescription.class, 
-                               TextData.class, 
-                               TextFormat.class, 
-                               Continent.class, 
-                               NamedArea.class, 
-                               NamedAreaLevel.class, 
-                               NamedAreaType.class, 
-                               ReferenceSystem.class, 
-                               Point.class, 
-                               TdwgArea.class, 
-                               WaterbodyOrCountry.class, 
-                               AudioFile.class, 
-                               ImageFile.class, 
-                               Media.class, 
-                               MediaRepresentation.class, 
-                               MediaRepresentationPart.class, 
-                               MovieFile.class, 
-                               ReferencedMedia.class, 
-                               Rights.class, 
-                               RightsTerm.class, 
-                               DnaSample.class, 
-                               GenBankAccession.class, 
-                               Locus.class, 
-                               PhylogeneticTree.class, 
-                               Sequence.class, 
-                               BacterialName.class, 
-                               BotanicalName.class, 
-                               CultivarPlantName.class, 
-                               HomotypicalGroup.class, 
-                               HybridRelationship.class, 
-                               HybridRelationshipType.class, 
-                               NameRelationship.class, 
-                               NameRelationshipType.class, 
-                               NameTypeDesignation.class, 
-                               NameTypeDesignationStatus.class, 
-                               NomenclaturalCode.class, 
-                               NomenclaturalStatus.class, 
-                               NomenclaturalStatusType.class, 
-                               NonViralName.class, 
-                               Rank.class, 
-                               SpecimenTypeDesignation.class, 
-                               SpecimenTypeDesignationStatus.class, 
-                               TaxonNameBase.class, 
-                               TypeDesignationBase.class, 
-                               ViralName.class, 
-                               ZoologicalName.class, 
-                               Collection.class, 
-                               DerivationEvent.class, 
-                               DerivationEventType.class, 
-                               DerivedUnit.class, 
-                               DerivedUnitBase.class, 
-                               DeterminationEvent.class, 
-                               DeterminationModifier.class, 
-                               FieldObservation.class, 
-                               Fossil.class, 
-                               GatheringEvent.class, 
-                               LivingBeing.class, 
-                               Observation.class, 
-                               PreservationMethod.class, 
-                               Specimen.class, 
-                               SpecimenOrObservationBase.class, 
-                               Article.class, 
-                               BibtexEntryType.class, 
-                               BibtexReference.class, 
-                               Book.class, 
-                               BookSection.class, 
-                               CdDvd.class, 
-                               Database.class, 
-                               Generic.class, 
-                               InProceedings.class, 
-                               Journal.class, 
-                               Map.class, 
-                               Patent.class, 
-                               PersonalCommunication.class, 
-                               PrintedUnitBase.class, 
-                               PrintSeries.class, 
-                               Proceedings.class, 
-                               ReferenceBase.class, 
-                               Publisher.class, 
-                               Report.class, 
-                               SectionBase.class, 
-                               StrictReferenceBase.class, 
-                               Thesis.class, 
-                               WebPage.class, 
-                               Synonym.class, 
-                               SynonymRelationship.class, 
-                               SynonymRelationshipType.class, 
-                               Taxon.class, 
-                               TaxonBase.class, 
-                               TaxonNode.class, 
-                               TaxonomicTree.class, 
-                               TaxonRelationship.class, 
-                               TaxonRelationshipType.class 
-               }       ;       
-               
                Set<Class<? extends CdmBase>> result = new HashSet<Class<? extends CdmBase>>();
-               for (Class clazz : result2){
-                       boolean isAbstractClass = Modifier.isAbstract(clazz.getModifiers());
-                       if (! isAbstractClass || includeAbstractClasses){
-                               result.add(clazz);
+               
+               SessionFactory sessionFactory = getSession().getSessionFactory();
+               java.util.Map allClassMetadata = sessionFactory.getAllClassMetadata();
+               java.util.Collection keys = allClassMetadata.keySet();
+               for (Object oKey : keys){
+                       if (oKey instanceof String){
+                               String strKey = (String)oKey;
+                               if (! strKey.endsWith("_AUD")){
+                                       try {
+                                               Class clazz = Class.forName(strKey);
+                                               boolean isAbstractClass = Modifier.isAbstract(clazz.getModifiers());
+                                               if (! isAbstractClass || includeAbstractClasses){
+                                                       result.add(clazz);
+                                               }
+                                       } catch (ClassNotFoundException e) {
+                                               logger.warn("Class not found: " + strKey);
+                                       }
+                               }
+                       }else{
+                               logger.warn("key is not of type String: " +  oKey);
                        }
                }
                return result;
        }
        
+       
+       
 
        public List getHqlResult(String hqlQuery){
                Query query = getSession().createQuery(hqlQuery);
diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java
new file mode 100644 (file)
index 0000000..c170e08
--- /dev/null
@@ -0,0 +1,448 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.persistence.dao.hibernate.common;\r
+\r
+import static org.junit.Assert.*;\r
+\r
+import java.lang.reflect.Modifier;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import org.unitils.spring.annotation.SpringBeanByType;\r
+\r
+import eu.etaxonomy.cdm.model.agent.Address;\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.agent.Contact;\r
+import eu.etaxonomy.cdm.model.agent.Institution;\r
+import eu.etaxonomy.cdm.model.agent.InstitutionType;\r
+import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
+import eu.etaxonomy.cdm.model.common.Annotation;\r
+import eu.etaxonomy.cdm.model.common.AnnotationType;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.Credit;\r
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.common.Extension;\r
+import eu.etaxonomy.cdm.model.common.ExtensionType;\r
+import eu.etaxonomy.cdm.model.common.Figure;\r
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;\r
+import eu.etaxonomy.cdm.model.common.Group;\r
+import eu.etaxonomy.cdm.model.common.Keyword;\r
+import eu.etaxonomy.cdm.model.common.LSID;\r
+import eu.etaxonomy.cdm.model.common.LSIDAuthority;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.common.OrderedTermBase;\r
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.OriginalSource;\r
+import eu.etaxonomy.cdm.model.common.RelationshipTermBase;\r
+import eu.etaxonomy.cdm.model.common.Representation;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.User;\r
+import eu.etaxonomy.cdm.model.description.AbsenceTerm;\r
+import eu.etaxonomy.cdm.model.description.CategoricalData;\r
+import eu.etaxonomy.cdm.model.description.CommonTaxonName;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Distribution;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.FeatureNode;\r
+import eu.etaxonomy.cdm.model.description.FeatureTree;\r
+import eu.etaxonomy.cdm.model.description.IdentificationKey;\r
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;\r
+import eu.etaxonomy.cdm.model.description.MeasurementUnit;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
+import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
+import eu.etaxonomy.cdm.model.description.QuantitativeData;\r
+import eu.etaxonomy.cdm.model.description.Scope;\r
+import eu.etaxonomy.cdm.model.description.Sex;\r
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;\r
+import eu.etaxonomy.cdm.model.description.Stage;\r
+import eu.etaxonomy.cdm.model.description.State;\r
+import eu.etaxonomy.cdm.model.description.StateData;\r
+import eu.etaxonomy.cdm.model.description.StatisticalMeasure;\r
+import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.description.TaxonInteraction;\r
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;\r
+import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.description.TextFormat;\r
+import eu.etaxonomy.cdm.model.location.Continent;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
+import eu.etaxonomy.cdm.model.location.NamedAreaType;\r
+import eu.etaxonomy.cdm.model.location.Point;\r
+import eu.etaxonomy.cdm.model.location.ReferenceSystem;\r
+import eu.etaxonomy.cdm.model.location.TdwgArea;\r
+import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;\r
+import eu.etaxonomy.cdm.model.media.AudioFile;\r
+import eu.etaxonomy.cdm.model.media.ImageFile;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
+import eu.etaxonomy.cdm.model.media.MovieFile;\r
+import eu.etaxonomy.cdm.model.media.ReferencedMedia;\r
+import eu.etaxonomy.cdm.model.media.Rights;\r
+import eu.etaxonomy.cdm.model.media.RightsTerm;\r
+import eu.etaxonomy.cdm.model.molecular.DnaSample;\r
+import eu.etaxonomy.cdm.model.molecular.GenBankAccession;\r
+import eu.etaxonomy.cdm.model.molecular.Locus;\r
+import eu.etaxonomy.cdm.model.molecular.PhylogeneticTree;\r
+import eu.etaxonomy.cdm.model.molecular.Sequence;\r
+import eu.etaxonomy.cdm.model.name.BacterialName;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.CultivarPlantName;\r
+import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
+import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
+import eu.etaxonomy.cdm.model.name.HybridRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.NameRelationship;\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
+import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
+import eu.etaxonomy.cdm.model.name.NonViralName;\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.ViralName;\r
+import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
+import eu.etaxonomy.cdm.model.occurrence.Collection;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;\r
+import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;\r
+import eu.etaxonomy.cdm.model.occurrence.DeterminationModifier;\r
+import eu.etaxonomy.cdm.model.occurrence.FieldObservation;\r
+import eu.etaxonomy.cdm.model.occurrence.Fossil;\r
+import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;\r
+import eu.etaxonomy.cdm.model.occurrence.LivingBeing;\r
+import eu.etaxonomy.cdm.model.occurrence.Observation;\r
+import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;\r
+import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
+import eu.etaxonomy.cdm.model.reference.Article;\r
+import eu.etaxonomy.cdm.model.reference.BibtexEntryType;\r
+import eu.etaxonomy.cdm.model.reference.BibtexReference;\r
+import eu.etaxonomy.cdm.model.reference.Book;\r
+import eu.etaxonomy.cdm.model.reference.BookSection;\r
+import eu.etaxonomy.cdm.model.reference.CdDvd;\r
+import eu.etaxonomy.cdm.model.reference.Database;\r
+import eu.etaxonomy.cdm.model.reference.Generic;\r
+import eu.etaxonomy.cdm.model.reference.InProceedings;\r
+import eu.etaxonomy.cdm.model.reference.Journal;\r
+import eu.etaxonomy.cdm.model.reference.Map;\r
+import eu.etaxonomy.cdm.model.reference.Patent;\r
+import eu.etaxonomy.cdm.model.reference.PersonalCommunication;\r
+import eu.etaxonomy.cdm.model.reference.PrintSeries;\r
+import eu.etaxonomy.cdm.model.reference.PrintedUnitBase;\r
+import eu.etaxonomy.cdm.model.reference.Proceedings;\r
+import eu.etaxonomy.cdm.model.reference.Publisher;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Report;\r
+import eu.etaxonomy.cdm.model.reference.SectionBase;\r
+import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Thesis;\r
+import eu.etaxonomy.cdm.model.reference.WebPage;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.view.AuditEvent;\r
+import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;\r
+import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
+import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 27.07.2009\r
+ * @version 1.0\r
+ */\r
+public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest{\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(CdmGenericDaoImplTest.class);\r
+       \r
+       @SpringBeanByType\r
+       private ICdmGenericDao cdmGenericDao;\r
+       \r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @BeforeClass\r
+       public static void setUpBeforeClass() throws Exception {\r
+       }\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @AfterClass\r
+       public static void tearDownAfterClass() throws Exception {\r
+       }\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @Before\r
+       public void setUp() throws Exception {\r
+       }\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @After\r
+       public void tearDown() throws Exception {\r
+       }\r
+\r
+// ***************** TESTS **************************************************  \r
+       \r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#CdmGenericDaoImpl()}.\r
+        */\r
+       @Test\r
+       public void testCdmGenericDaoImpl() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#getCdmBasesByFieldAndClass(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.common.CdmBase)}.\r
+        */\r
+       @Test\r
+       public void testGetCdmBasesByFieldAndClass() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#getCdmBasesWithItemInCollection(java.lang.Class, java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.common.CdmBase)}.\r
+        */\r
+       @Test\r
+       public void testGetCdmBasesWithItemInCollection() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#getAllCdmClasses(boolean)}.\r
+        */\r
+       @Test\r
+       public void testGetAllCdmClasses() {\r
+               Class[] existingClassesArray = {\r
+                               Address.class,\r
+                               AgentBase.class,\r
+                               Institution.class, \r
+                               InstitutionalMembership.class, \r
+                               InstitutionType.class, \r
+                               Person.class, \r
+                               Team.class, \r
+                               TeamOrPersonBase.class, \r
+                               Annotation.class, \r
+                               AnnotationType.class, \r
+                               Credit.class,\r
+                               DefinedTermBase.class, \r
+                               Extension.class, \r
+                               ExtensionType.class, \r
+                               Figure.class, \r
+                               GrantedAuthorityImpl.class, \r
+                               Group.class, \r
+                               Keyword.class, \r
+                               Language.class, \r
+                               LanguageString.class, \r
+                               LSIDAuthority.class, \r
+                               Marker.class, \r
+                               MarkerType.class, \r
+                               OrderedTermBase.class, \r
+                               OrderedTermVocabulary.class, \r
+                               OriginalSource.class, \r
+                               RelationshipTermBase.class, \r
+                               Representation.class, \r
+                               TermVocabulary.class, \r
+                               User.class, \r
+                               \r
+                               AbsenceTerm.class, \r
+                               CategoricalData.class, \r
+                               CommonTaxonName.class, \r
+                               DescriptionBase.class, \r
+                               DescriptionElementBase.class, \r
+                               Distribution.class, \r
+                               Feature.class, \r
+                               FeatureNode.class, \r
+                               FeatureTree.class, \r
+                               IdentificationKey.class, \r
+                               IndividualsAssociation.class, \r
+                               MeasurementUnit.class, \r
+                               PresenceAbsenceTermBase.class, \r
+                               PresenceTerm.class, \r
+                               QuantitativeData.class, \r
+                               Scope.class, \r
+                               Sex.class, \r
+                               SpecimenDescription.class, \r
+                               Stage.class, \r
+                               State.class, \r
+                               StateData.class, \r
+                               StatisticalMeasure.class, \r
+                               StatisticalMeasurementValue.class, \r
+                               TaxonDescription.class, \r
+                               TaxonInteraction.class, \r
+                               TaxonNameDescription.class, \r
+                               TextData.class, \r
+                               TextFormat.class, \r
+                               Continent.class, \r
+                               NamedArea.class, \r
+                               NamedAreaLevel.class, \r
+                               NamedAreaType.class, \r
+                               ReferenceSystem.class, \r
+                               TdwgArea.class, \r
+                               WaterbodyOrCountry.class, \r
+                               AudioFile.class, \r
+                               ImageFile.class, \r
+                               Media.class, \r
+                               MediaRepresentation.class, \r
+                               MediaRepresentationPart.class, \r
+                               MovieFile.class, \r
+                               ReferencedMedia.class, \r
+                               Rights.class, \r
+                               RightsTerm.class, \r
+                               DnaSample.class, \r
+                               GenBankAccession.class, \r
+                               Locus.class, \r
+                               PhylogeneticTree.class, \r
+                               Sequence.class, \r
+                               BacterialName.class, \r
+                               BotanicalName.class, \r
+                               CultivarPlantName.class, \r
+                               HomotypicalGroup.class, \r
+                               HybridRelationship.class, \r
+                               HybridRelationshipType.class, \r
+                               NameRelationship.class, \r
+                               NameRelationshipType.class, \r
+                               NameTypeDesignation.class, \r
+                               NameTypeDesignationStatus.class, \r
+                               NomenclaturalStatus.class, \r
+                               NomenclaturalStatusType.class, \r
+                               NonViralName.class, \r
+                               Rank.class, \r
+                               SpecimenTypeDesignation.class, \r
+                               SpecimenTypeDesignationStatus.class, \r
+                               TaxonNameBase.class, \r
+                               TypeDesignationBase.class, \r
+                               ViralName.class, \r
+                               ZoologicalName.class, \r
+                               Collection.class, \r
+                               DerivationEvent.class, \r
+                               DerivationEventType.class, \r
+                               DerivedUnit.class, \r
+                               DerivedUnitBase.class, \r
+                               DeterminationEvent.class, \r
+                               DeterminationModifier.class, \r
+                               FieldObservation.class, \r
+                               Fossil.class, \r
+                               GatheringEvent.class, \r
+                               LivingBeing.class, \r
+                               Observation.class, \r
+                               PreservationMethod.class, \r
+                               Specimen.class, \r
+                               SpecimenOrObservationBase.class, \r
+                               Article.class, \r
+                               BibtexEntryType.class, \r
+                               BibtexReference.class, \r
+                               Book.class, \r
+                               BookSection.class, \r
+                               CdDvd.class, \r
+                               Database.class, \r
+                               Generic.class, \r
+                               InProceedings.class, \r
+                               Journal.class, \r
+                               Map.class, \r
+                               Patent.class, \r
+                               PersonalCommunication.class, \r
+                               PrintedUnitBase.class, \r
+                               PrintSeries.class, \r
+                               Proceedings.class, \r
+                               ReferenceBase.class, \r
+                               Publisher.class, \r
+                               Report.class, \r
+                               SectionBase.class, \r
+                               StrictReferenceBase.class, \r
+                               Thesis.class, \r
+                               WebPage.class, \r
+                               Synonym.class, \r
+                               SynonymRelationship.class, \r
+                               SynonymRelationshipType.class, \r
+                               Taxon.class, \r
+                               TaxonBase.class, \r
+                               TaxonNode.class, \r
+                               TaxonomicTree.class, \r
+                               TaxonRelationship.class, \r
+                               TaxonRelationshipType.class \r
+                               //Contact.class, \r
+                               //LSID.class, \r
+                               //Modifier.class, \r
+                               //Point.class, \r
+                               //NomenclaturalCode.class, \r
+               }       ;\r
+               List<Class> existingClassesList = new ArrayList<Class>();\r
+               existingClassesList.addAll(Arrays.asList(existingClassesArray));\r
+               boolean includeAbstractClasses = true;\r
+               Set<Class<? extends CdmBase>> foundClasses = cdmGenericDao.getAllCdmClasses(includeAbstractClasses);\r
+               \r
+//for debugging only           \r
+//             for (Class existingClass : existingClassesList){\r
+//                     if (! foundClasses.contains(existingClass)){\r
+//                             logger.warn("Class not found: " + existingClass.getCanonicalName());\r
+//                     }\r
+//             }\r
+               \r
+               //All classes must be found\r
+               Assert.assertTrue("all classes must be found by getAllCdmClasses() method", foundClasses.containsAll(existingClassesList));\r
+               \r
+               \r
+               //No extra classes must be found\r
+               for (Class clazz : foundClasses){\r
+                       if (! CdmBase.class.isAssignableFrom(clazz)&& !( AuditEvent.class == clazz)  ){ //OLD: && !( LSID.class == clazz)&& !( NomenclaturalCode.class == clazz) && !( Point.class == clazz) && !( Modifier.class == clazz) && !( Contact.class == clazz) \r
+                               Assert.fail("Class " + clazz.getName() + " is not assignable from CdmBase");\r
+                       }\r
+               }\r
+               \r
+               includeAbstractClasses = false;\r
+               Set<Class<? extends CdmBase>> noAbstractClasses = cdmGenericDao.getAllCdmClasses(includeAbstractClasses);\r
+               Class abstractClassToTest = TaxonNameBase.class;\r
+               Assert.assertFalse("Abstract class " + abstractClassToTest.getName() + " may not be in set ", noAbstractClasses.contains(abstractClassToTest));\r
+       }\r
+\r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#getHqlResult(java.lang.String)}.\r
+        */\r
+       @Test\r
+       public void testGetHqlResult() {\r
+               logger.warn("Not yet implemented");\r
+       }\r
+}\r