3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.persistence
.dao
.hibernate
.common
;
13 import static org
.junit
.Assert
.assertEquals
;
15 import java
.util
.ArrayList
;
16 import java
.util
.Arrays
;
17 import java
.util
.List
;
19 import java
.util
.UUID
;
21 import org
.apache
.log4j
.Logger
;
22 import org
.junit
.After
;
23 import org
.junit
.AfterClass
;
24 import org
.junit
.Assert
;
25 import org
.junit
.Before
;
26 import org
.junit
.BeforeClass
;
27 import org
.junit
.Ignore
;
28 import org
.junit
.Test
;
29 import org
.unitils
.dbunit
.annotation
.DataSet
;
30 import org
.unitils
.spring
.annotation
.SpringBeanByType
;
32 import eu
.etaxonomy
.cdm
.model
.agent
.Address
;
33 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
34 import eu
.etaxonomy
.cdm
.model
.agent
.Contact
;
35 import eu
.etaxonomy
.cdm
.model
.agent
.Institution
;
36 import eu
.etaxonomy
.cdm
.model
.agent
.InstitutionType
;
37 import eu
.etaxonomy
.cdm
.model
.agent
.InstitutionalMembership
;
38 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
39 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
40 import eu
.etaxonomy
.cdm
.model
.agent
.TeamOrPersonBase
;
41 import eu
.etaxonomy
.cdm
.model
.common
.Annotation
;
42 import eu
.etaxonomy
.cdm
.model
.common
.AnnotationType
;
43 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
44 import eu
.etaxonomy
.cdm
.model
.common
.Credit
;
45 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
46 import eu
.etaxonomy
.cdm
.model
.common
.Extension
;
47 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
48 import eu
.etaxonomy
.cdm
.model
.common
.Figure
;
49 import eu
.etaxonomy
.cdm
.model
.common
.GrantedAuthorityImpl
;
50 import eu
.etaxonomy
.cdm
.model
.common
.Group
;
51 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableSource
;
52 import eu
.etaxonomy
.cdm
.model
.common
.LSIDAuthority
;
53 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
54 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
55 import eu
.etaxonomy
.cdm
.model
.common
.Marker
;
56 import eu
.etaxonomy
.cdm
.model
.common
.MarkerType
;
57 import eu
.etaxonomy
.cdm
.model
.common
.OrderedTermBase
;
58 import eu
.etaxonomy
.cdm
.model
.common
.OrderedTermVocabulary
;
59 import eu
.etaxonomy
.cdm
.model
.common
.OriginalSourceBase
;
60 import eu
.etaxonomy
.cdm
.model
.common
.OriginalSourceType
;
61 import eu
.etaxonomy
.cdm
.model
.common
.RelationshipTermBase
;
62 import eu
.etaxonomy
.cdm
.model
.common
.Representation
;
63 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
64 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
65 import eu
.etaxonomy
.cdm
.model
.common
.User
;
66 import eu
.etaxonomy
.cdm
.model
.description
.AbsenceTerm
;
67 import eu
.etaxonomy
.cdm
.model
.description
.CategoricalData
;
68 import eu
.etaxonomy
.cdm
.model
.description
.CommonTaxonName
;
69 import eu
.etaxonomy
.cdm
.model
.description
.DescriptionBase
;
70 import eu
.etaxonomy
.cdm
.model
.description
.DescriptionElementBase
;
71 import eu
.etaxonomy
.cdm
.model
.description
.Distribution
;
72 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
73 import eu
.etaxonomy
.cdm
.model
.description
.FeatureNode
;
74 import eu
.etaxonomy
.cdm
.model
.description
.FeatureTree
;
75 import eu
.etaxonomy
.cdm
.model
.description
.IndividualsAssociation
;
76 import eu
.etaxonomy
.cdm
.model
.description
.MeasurementUnit
;
77 import eu
.etaxonomy
.cdm
.model
.description
.MediaKey
;
78 import eu
.etaxonomy
.cdm
.model
.description
.PresenceAbsenceTermBase
;
79 import eu
.etaxonomy
.cdm
.model
.description
.PresenceTerm
;
80 import eu
.etaxonomy
.cdm
.model
.description
.QuantitativeData
;
81 import eu
.etaxonomy
.cdm
.model
.description
.Scope
;
82 import eu
.etaxonomy
.cdm
.model
.description
.Sex
;
83 import eu
.etaxonomy
.cdm
.model
.description
.SpecimenDescription
;
84 import eu
.etaxonomy
.cdm
.model
.description
.Stage
;
85 import eu
.etaxonomy
.cdm
.model
.description
.State
;
86 import eu
.etaxonomy
.cdm
.model
.description
.StateData
;
87 import eu
.etaxonomy
.cdm
.model
.description
.StatisticalMeasure
;
88 import eu
.etaxonomy
.cdm
.model
.description
.StatisticalMeasurementValue
;
89 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
90 import eu
.etaxonomy
.cdm
.model
.description
.TaxonInteraction
;
91 import eu
.etaxonomy
.cdm
.model
.description
.TaxonNameDescription
;
92 import eu
.etaxonomy
.cdm
.model
.description
.TextData
;
93 import eu
.etaxonomy
.cdm
.model
.description
.TextFormat
;
94 import eu
.etaxonomy
.cdm
.model
.location
.Continent
;
95 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
96 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaLevel
;
97 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaType
;
98 import eu
.etaxonomy
.cdm
.model
.location
.Point
;
99 import eu
.etaxonomy
.cdm
.model
.location
.ReferenceSystem
;
100 import eu
.etaxonomy
.cdm
.model
.location
.TdwgArea
;
101 import eu
.etaxonomy
.cdm
.model
.location
.WaterbodyOrCountry
;
102 import eu
.etaxonomy
.cdm
.model
.media
.AudioFile
;
103 import eu
.etaxonomy
.cdm
.model
.media
.ImageFile
;
104 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
105 import eu
.etaxonomy
.cdm
.model
.media
.MediaRepresentation
;
106 import eu
.etaxonomy
.cdm
.model
.media
.MediaRepresentationPart
;
107 import eu
.etaxonomy
.cdm
.model
.media
.MovieFile
;
108 import eu
.etaxonomy
.cdm
.model
.media
.ReferencedMediaBase
;
109 import eu
.etaxonomy
.cdm
.model
.media
.Rights
;
110 import eu
.etaxonomy
.cdm
.model
.media
.RightsTerm
;
111 import eu
.etaxonomy
.cdm
.model
.molecular
.DnaSample
;
112 import eu
.etaxonomy
.cdm
.model
.molecular
.GenBankAccession
;
113 import eu
.etaxonomy
.cdm
.model
.molecular
.Locus
;
114 import eu
.etaxonomy
.cdm
.model
.molecular
.PhylogeneticTree
;
115 import eu
.etaxonomy
.cdm
.model
.molecular
.Sequence
;
116 import eu
.etaxonomy
.cdm
.model
.name
.BacterialName
;
117 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
118 import eu
.etaxonomy
.cdm
.model
.name
.CultivarPlantName
;
119 import eu
.etaxonomy
.cdm
.model
.name
.HomotypicalGroup
;
120 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationship
;
121 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationshipType
;
122 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationship
;
123 import eu
.etaxonomy
.cdm
.model
.name
.NameRelationshipType
;
124 import eu
.etaxonomy
.cdm
.model
.name
.NameTypeDesignation
;
125 import eu
.etaxonomy
.cdm
.model
.name
.NameTypeDesignationStatus
;
126 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
127 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
128 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
129 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
130 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignation
;
131 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignationStatus
;
132 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
133 import eu
.etaxonomy
.cdm
.model
.name
.TypeDesignationBase
;
134 import eu
.etaxonomy
.cdm
.model
.name
.ViralName
;
135 import eu
.etaxonomy
.cdm
.model
.name
.ZoologicalName
;
136 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
137 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
138 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEventType
;
139 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
140 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnitBase
;
141 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationEvent
;
142 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationModifier
;
143 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldObservation
;
144 import eu
.etaxonomy
.cdm
.model
.occurrence
.Fossil
;
145 import eu
.etaxonomy
.cdm
.model
.occurrence
.GatheringEvent
;
146 import eu
.etaxonomy
.cdm
.model
.occurrence
.LivingBeing
;
147 import eu
.etaxonomy
.cdm
.model
.occurrence
.Observation
;
148 import eu
.etaxonomy
.cdm
.model
.occurrence
.PreservationMethod
;
149 import eu
.etaxonomy
.cdm
.model
.occurrence
.Specimen
;
150 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
151 import eu
.etaxonomy
.cdm
.model
.reference
.IBook
;
152 import eu
.etaxonomy
.cdm
.model
.reference
.IBookSection
;
153 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
154 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
155 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
156 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymRelationship
;
157 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymRelationshipType
;
158 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
159 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
160 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
161 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
162 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationshipType
;
163 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
164 import eu
.etaxonomy
.cdm
.model
.view
.AuditEvent
;
165 import eu
.etaxonomy
.cdm
.persistence
.dao
.agent
.IAgentDao
;
166 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.ICdmGenericDao
;
167 import eu
.etaxonomy
.cdm
.persistence
.dao
.name
.ITaxonNameDao
;
168 import eu
.etaxonomy
.cdm
.persistence
.dao
.occurrence
.IOccurrenceDao
;
169 import eu
.etaxonomy
.cdm
.persistence
.dao
.taxon
.ITaxonDao
;
170 import eu
.etaxonomy
.cdm
.strategy
.match
.DefaultMatchStrategy
;
171 import eu
.etaxonomy
.cdm
.strategy
.match
.IMatchStrategy
;
172 import eu
.etaxonomy
.cdm
.strategy
.match
.MatchException
;
173 import eu
.etaxonomy
.cdm
.strategy
.merge
.DefaultMergeStrategy
;
174 import eu
.etaxonomy
.cdm
.strategy
.merge
.IMergeStrategy
;
175 import eu
.etaxonomy
.cdm
.strategy
.merge
.MergeException
;
176 import eu
.etaxonomy
.cdm
.test
.integration
.CdmTransactionalIntegrationTest
;
180 * @created 27.07.2009
184 public class CdmGenericDaoImplTest
extends CdmTransactionalIntegrationTest
{
185 private static final Logger logger
= Logger
.getLogger(CdmGenericDaoImplTest
.class);
188 private ICdmGenericDao cdmGenericDao
;
191 private ITaxonDao taxonDao
;
194 private IOccurrenceDao occurrenceDao
;
198 private ITaxonNameDao nameDao
;
201 private IAgentDao agentDao
;
205 * @throws java.lang.Exception
208 public static void setUpBeforeClass() throws Exception
{
212 * @throws java.lang.Exception
215 public static void tearDownAfterClass() throws Exception
{
219 * @throws java.lang.Exception
222 public void setUp() throws Exception
{
226 * @throws java.lang.Exception
229 public void tearDown() throws Exception
{
232 // ***************** TESTS **************************************************
236 public void testDelete(){
237 Reference ref1
= ReferenceFactory
.newBook();
238 Reference ref2
= ReferenceFactory
.newBook();
239 Annotation annotation
= Annotation
.NewInstance("Anno1", null);
240 ref1
.addAnnotation(annotation
);
241 cdmGenericDao
.saveOrUpdate(ref1
);
242 cdmGenericDao
.saveOrUpdate(ref2
);
245 cdmGenericDao
.merge(ref2
, ref1
, null);
247 } catch (MergeException e
) {
248 // TODO Auto-generated catch block
251 //cdmGenericDao.delete(ref1);
253 System
.out
.println("OK");
254 //Assert.fail("Failed for testing");
258 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#merge(CdmBase, CdmBase)}.
259 * @throws MergeException
263 public void testDelete2() throws MergeException
{
264 BotanicalName name1
= BotanicalName
.NewInstance(Rank
.SPECIES());
265 name1
.setTitleCache("BotanicalName1", true);
267 BotanicalName name2
= BotanicalName
.NewInstance(Rank
.SPECIES());
268 name2
.setTitleCache("BotanicalName2", true);
270 Reference article1
= ReferenceFactory
.newArticle();
271 Reference article2
= ReferenceFactory
.newArticle();
274 name1
.setNomenclaturalReference(article1
);
275 name2
.setNomenclaturalReference(article2
);
278 Taxon taxon1
= Taxon
.NewInstance(name1
, article1
);
280 // Person author = Person.NewInstance();
281 // author.setTitleCache("Author");
282 Annotation annotation1
= Annotation
.NewInstance("A1", Language
.DEFAULT());
283 Annotation annotation2
= Annotation
.NewInstance("A2", Language
.DEFAULT());
285 article1
.addAnnotation(annotation1
);
286 article2
.addAnnotation(annotation2
);
290 cdmGenericDao
.saveOrUpdate(article2
);
292 taxonDao
.save(taxon1
);
294 //unidircetional reference to the merged object should be redirected
295 cdmGenericDao
.merge(article1
, article2
, null);
296 Assert
.assertEquals("Name2 must have article 1 as new nomRef", article1
,name2
.getNomenclaturalReference());
297 //TODO microCitations!! -> warning
300 Assert
.assertEquals("Annotation number should be 2 (1 from each of the merged objects)", 2, article1
.getAnnotations().size());
307 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#CdmGenericDaoImpl()}.
310 public void testCdmGenericDaoImpl() {
311 logger
.warn("Not yet implemented");
315 * 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)}.
318 public void testGetCdmBasesByFieldAndClass() {
319 logger
.warn("Not yet implemented");
323 * 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)}.
326 public void testGetCdmBasesWithItemInCollection() {
327 logger
.warn("Not yet implemented");
331 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#getAllCdmClasses(boolean)}.
334 public void testGetAllCdmClasses() {
335 Class
[] existingClassesArray
= {
339 InstitutionalMembership
.class,
340 InstitutionType
.class,
343 TeamOrPersonBase
.class,
345 AnnotationType
.class,
347 DefinedTermBase
.class,
351 GrantedAuthorityImpl
.class,
353 IdentifiableSource
.class,
355 LanguageString
.class,
359 OrderedTermBase
.class,
360 OrderedTermVocabulary
.class,
361 OriginalSourceBase
.class,
362 RelationshipTermBase
.class,
363 Representation
.class,
364 TermVocabulary
.class,
368 CategoricalData
.class,
369 CommonTaxonName
.class,
370 DescriptionBase
.class,
371 DescriptionElementBase
.class,
377 IndividualsAssociation
.class,
378 MeasurementUnit
.class,
379 PresenceAbsenceTermBase
.class,
381 QuantitativeData
.class,
384 SpecimenDescription
.class,
388 StatisticalMeasure
.class,
389 StatisticalMeasurementValue
.class,
390 TaxonDescription
.class,
391 TaxonInteraction
.class,
392 TaxonNameDescription
.class,
397 NamedAreaLevel
.class,
399 ReferenceSystem
.class,
401 WaterbodyOrCountry
.class,
405 MediaRepresentation
.class,
406 MediaRepresentationPart
.class,
408 ReferencedMediaBase
.class,
412 GenBankAccession
.class,
414 PhylogeneticTree
.class,
418 CultivarPlantName
.class,
419 HomotypicalGroup
.class,
420 HybridRelationship
.class,
421 HybridRelationshipType
.class,
422 NameRelationship
.class,
423 NameRelationshipType
.class,
424 NameTypeDesignation
.class,
425 NameTypeDesignationStatus
.class,
426 NomenclaturalStatus
.class,
427 NomenclaturalStatusType
.class,
430 SpecimenTypeDesignation
.class,
431 SpecimenTypeDesignationStatus
.class,
433 TypeDesignationBase
.class,
435 ZoologicalName
.class,
437 DerivationEvent
.class,
438 DerivationEventType
.class,
440 DerivedUnitBase
.class,
441 DeterminationEvent
.class,
442 DeterminationModifier
.class,
443 FieldObservation
.class,
445 GatheringEvent
.class,
448 PreservationMethod
.class,
450 SpecimenOrObservationBase
.class,
453 SynonymRelationship
.class,
454 SynonymRelationshipType
.class,
458 Classification
.class,
459 TaxonRelationship
.class,
460 TaxonRelationshipType
.class
465 //NomenclaturalCode.class,
467 List
<Class
> existingClassesList
= new ArrayList
<Class
>();
468 existingClassesList
.addAll(Arrays
.asList(existingClassesArray
));
469 boolean includeAbstractClasses
= true;
470 Set
<Class
<?
extends CdmBase
>> foundClasses
= cdmGenericDao
.getAllCdmClasses(includeAbstractClasses
);
473 // for (Class existingClass : existingClassesList){
474 // if (! foundClasses.contains(existingClass)){
475 // logger.warn("Class not found: " + existingClass.getCanonicalName());
479 //All classes must be found
480 Assert
.assertTrue("all classes must be found by getAllCdmClasses() method", foundClasses
.containsAll(existingClassesList
));
483 //No extra classes must be found
484 for (Class clazz
: foundClasses
){
485 if (! CdmBase
.class.isAssignableFrom(clazz
)&& !( AuditEvent
.class == clazz
) ){ //OLD: && !( LSID.class == clazz)&& !( NomenclaturalCode.class == clazz) && !( Point.class == clazz) && !( Modifier.class == clazz) && !( Contact.class == clazz)
486 Assert
.fail("Class " + clazz
.getName() + " is not assignable from CdmBase");
490 includeAbstractClasses
= false;
491 Set
<Class
<?
extends CdmBase
>> noAbstractClasses
= cdmGenericDao
.getAllCdmClasses(includeAbstractClasses
);
492 Class abstractClassToTest
= TaxonNameBase
.class;
493 Assert
.assertFalse("Abstract class " + abstractClassToTest
.getName() + " may not be in set ", noAbstractClasses
.contains(abstractClassToTest
));
497 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#getReferencingObjects(CdmBase)}.
500 public void testGetReferencingObjectsCdmBase() {
501 BotanicalName name
= BotanicalName
.NewInstance(Rank
.SPECIES());
502 name
.setTitleCache("A name", true);
503 Reference ref1
= ReferenceFactory
.newArticle();
504 Taxon taxon
= Taxon
.NewInstance(name
, ref1
);
505 Person author
= Person
.NewInstance();
506 author
.setTitleCache("Author", true);
507 ref1
.addAnnotation(Annotation
.NewInstance("A1", Language
.DEFAULT()));
508 ref1
.setAuthorTeam(author
);
509 name
.setBasionymAuthorTeam(author
);
511 name
.setNomenclaturalReference(ref1
);
513 taxonDao
.save(taxon
);
514 // UUID uuid = UUID.fromString("613980ac-9bd5-43b9-a374-d71e1794688f");
515 // Reference ref1 = referenceService.findByUuid(uuid);
518 Set
<CdmBase
> referencedObjects
= cdmGenericDao
.getReferencingObjects(ref1
);
519 System
.out
.println("############## RESULT ###################");
520 for (CdmBase obj
: referencedObjects
){
521 System
.out
.println("Object1: " + obj
.getClass().getSimpleName() + " - " + obj
);
523 assertEquals(3, referencedObjects
.size());
524 System
.out
.println("############## ENDE ###################");
526 // UUID uuidAuthor = UUID.fromString("4ce66544-a5a3-4601-ab0b-1f0a1338327b");
527 // AgentBase author = agentService.findByUuid(uuidAuthor);
529 referencedObjects
= cdmGenericDao
.getReferencingObjects(author
);
530 System
.out
.println("############## RESULT ###################");
531 for (CdmBase obj
: referencedObjects
){
532 System
.out
.println("Object2: " + obj
.getClass().getSimpleName() + " - " + obj
);
534 assertEquals(2, referencedObjects
.size());
535 System
.out
.println("############## ENDE ###################");
539 * 2nd test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#getReferencingObjects(CdmBase)}.
544 public final void testGetReferencingObjects2() {
545 // SpecimenDescription desc1 = SpecimenDescription.NewInstance();
546 // desc1.setTitleCache("desc1");
547 // SpecimenDescription desc2 = SpecimenDescription.NewInstance();
548 // desc2.setTitleCache("desc2");
550 // SpecimenOrObservationBase spec1 = Specimen.NewInstance();
552 // desc1.addDescribedSpecimenOrObservation(spec1);
553 // //Taxon taxon = Taxon.NewInstance(taxonNameBase, sec)
554 // spec1.addDescription(desc2);
556 // occurrenceService.save(spec1);
558 UUID uuidSpec
= UUID
.fromString("41539e9c-3764-4f14-9712-2d07d00c8e4c");
559 SpecimenOrObservationBase spec1
= occurrenceDao
.findByUuid(uuidSpec
);
562 Set
<CdmBase
> referencingObjects
= cdmGenericDao
.getReferencingObjects(spec1
);
563 // System.out.println("############## RESULT ###################");
564 // for (CdmBase obj: referencingObjects){
565 // System.out.println("Object: " + obj.getClass().getSimpleName() + " - " + obj);
567 // System.out.println("############## ENDE ###################");
568 assertEquals("Number of referencing objects must be 2.", 2, referencingObjects
.size());
573 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#merge(CdmBase, CdmBase)}.
574 * @throws MergeException
578 public void testMergeCdmBaseReferenceAndIdentifiable() throws MergeException
{
579 cdmGenericDao
.test();
582 BotanicalName name1
= BotanicalName
.NewInstance(Rank
.SPECIES());
583 name1
.setTitleCache("BotanicalName1", true);
585 BotanicalName name2
= BotanicalName
.NewInstance(Rank
.SPECIES());
586 name2
.setTitleCache("BotanicalName2", true);
588 ZoologicalName zooName1
= ZoologicalName
.NewInstance(Rank
.SPECIES());
589 name1
.setTitleCache("ZoologicalName1", true);
591 Reference article1
= ReferenceFactory
.newArticle();
592 Reference article2
= ReferenceFactory
.newArticle();
595 name1
.setNomenclaturalReference(article1
);
596 name2
.setNomenclaturalReference(article2
);
599 Taxon taxon1
= Taxon
.NewInstance(name1
, article1
);
600 Taxon taxon2
= Taxon
.NewInstance(name2
, article2
);
603 // Person author = Person.NewInstance();
604 // author.setTitleCache("Author");
605 Annotation annotation1
= Annotation
.NewInstance("A1", Language
.DEFAULT());
606 Annotation annotation2
= Annotation
.NewInstance("A2", Language
.DEFAULT());
608 article1
.addAnnotation(annotation1
);
609 article2
.addAnnotation(annotation2
);
611 Marker marker1
= Marker
.NewInstance(MarkerType
.COMPLETE(), false);
612 Marker marker2
= Marker
.NewInstance(MarkerType
.IMPORTED(), false);
614 article1
.addMarker(marker1
);
615 article2
.addMarker(marker2
);
617 Rights rights1
= Rights
.NewInstance();
618 Rights rights2
= Rights
.NewInstance();
620 article1
.addRights(rights1
);
621 article2
.addRights(rights2
);
624 Credit credit1
= Credit
.NewInstance(Team
.NewInstance(), "credit1");
625 Credit credit2
= Credit
.NewInstance(Team
.NewInstance(), "credit2");
627 article1
.addCredit(credit1
);
628 article2
.addCredit(credit2
);
630 Extension extension1
= Extension
.NewInstance();
631 Extension extension2
= Extension
.NewInstance();
633 article1
.addExtension(extension1
);
634 article2
.addExtension(extension2
);
636 IdentifiableSource source1
= IdentifiableSource
.NewInstance(OriginalSourceType
.Unknown
);
637 IdentifiableSource source2
= IdentifiableSource
.NewInstance(OriginalSourceType
.Unknown
);
639 article1
.addSource(source1
);
640 article2
.addSource(source2
);
642 Media media1
= Media
.NewInstance();
643 Media media2
= Media
.NewInstance();
645 article1
.addMedia(media1
);
646 article2
.addMedia(media2
);
648 // ref1.setAuthorTeam(author);
649 // name1.setBasionymAuthorTeam(author);
651 name1
.setNomenclaturalReference(article1
);
655 nameDao
.save(zooName1
);
657 TaxonDescription taxDesc
= TaxonDescription
.NewInstance(taxon1
);
658 taxDesc
.setTitleCache("taxDesc", true);
659 taxDesc
.addSource(OriginalSourceType
.Unknown
, null, null, article2
, null);
661 taxonDao
.save(taxon1
);
663 //unidircetional reference to the merged object should be redirected
664 cdmGenericDao
.merge(article1
, article2
, null);
665 Assert
.assertEquals("Name2 must have article 1 as new nomRef", article1
,name2
.getNomenclaturalReference());
666 //TODO microCitations!! -> warning
669 Assert
.assertEquals("Annotation number should be 2 (1 from each of the merged objects)", 2, article1
.getAnnotations().size());
672 Assert
.assertEquals("Marker number should be 2 (1 from each of the merged objects)", 2, article1
.getMarkers().size());
675 Assert
.assertEquals("Rights number should be 2 (1 from each of the merged objects)", 2, article1
.getRights().size());
678 Assert
.assertEquals("Credits number should be 2 (1 from each of the merged objects)", 2, article1
.getCredits().size());
681 Assert
.assertEquals("Extensions number should be 2 (1 from each of the merged objects)", 2, article1
.getExtensions().size());
684 Assert
.assertEquals("Sources number should be 2 (1 from each of the merged objects)", 2, article1
.getSources().size());
687 Assert
.assertEquals("Media number should be 2 (1 from each of the merged objects)", 2, article1
.getMedia().size());
689 //Description sources
690 Assert
.assertEquals("Number of sources for taxon description must be 1", 1, taxDesc
.getSources().size());
691 Assert
.assertEquals("Taxon description must have article1 as source", taxDesc
.getSources().iterator().next().getCitation(),article1
);
694 testMergeExceptions(name1
, name2
, taxon1
, zooName1
);
698 Assert
.assertTrue("Rights2 must be contained in the rights", article1
.getRights().contains(rights2
));
699 Assert
.assertTrue("Credits2 must be contained in the credits", article1
.getCredits().contains(credit2
));
700 Assert
.assertTrue("Media2 must be contained in the media", article1
.getMedia().contains(media2
));
705 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#merge(CdmBase, CdmBase)}.
706 * @throws MergeException
710 public void testMergeTaxonNameAndTaxon() throws MergeException
{
711 BotanicalName name1
= BotanicalName
.NewInstance(Rank
.SPECIES());
712 name1
.setTitleCache("BotanicalName1", true);
714 BotanicalName name2
= BotanicalName
.NewInstance(Rank
.SPECIES());
715 name2
.setTitleCache("BotanicalName2", true);
717 BotanicalName name3
= BotanicalName
.NewInstance(Rank
.SPECIES());
718 name3
.setTitleCache("BotanicalName3", true);
720 Reference database
= ReferenceFactory
.newDatabase();
722 Taxon taxon1
= Taxon
.NewInstance(name1
, database
);
723 Taxon taxon2
= Taxon
.NewInstance(name2
, database
);
724 Taxon taxon3
= Taxon
.NewInstance(name3
, database
);
726 taxonDao
.save(taxon1
);
727 taxonDao
.save(taxon2
);
728 taxonDao
.save(taxon3
);
730 cdmGenericDao
.merge(name1
, name2
, null);
731 Assert
.assertEquals("Name1 must have 2 taxa attached now.", 2 ,name1
.getTaxonBases().size());
732 Assert
.assertEquals("Taxon2 must have name1 as new name.", name1
,taxon2
.getName());
735 // cdmGenericDao.merge(taxon1, taxon3, null);
736 // Assert.assertEquals("Name1 must have 3 taxa attached now.", 3 ,name1.getTaxonBases().size());
742 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#merge(CdmBase, CdmBase)}.
743 * @throws MergeException
746 public void testMergeAuthors() throws MergeException
{
748 BotanicalName name1
= BotanicalName
.NewInstance(Rank
.SPECIES());
749 name1
.setTitleCache("BotanicalName1", true);
751 BotanicalName name2
= BotanicalName
.NewInstance(Rank
.SPECIES());
752 name2
.setTitleCache("BotanicalName2", true);
754 IBook book1
= ReferenceFactory
.newBook();
755 IBook book2
= ReferenceFactory
.newBook();
757 Team team1
= Team
.NewInstance();
758 Team team2
= Team
.NewInstance();
759 Team team3
= Team
.NewInstance();
760 team1
.setTitleCache("team1", true);
761 team2
.setTitleCache("team2", true);
762 team3
.setTitleCache("team3", true);
764 Person person1
= Person
.NewTitledInstance("person1");
765 Person person2
= Person
.NewTitledInstance("person2");
766 Person person3
= Person
.NewTitledInstance("person3");
768 team1
.setNomenclaturalTitle("T.1");
769 String street1
= "Strasse1";
770 team1
.setContact(Contact
.NewInstance(street1
, "12345", "Berlin", WaterbodyOrCountry
.ARGENTINAARGENTINEREPUBLIC(),"pobox" , "Region", "a@b.de", "f12345", "+49-30-123456", "www.abc.de", Point
.NewInstance(2.4, 3.2, ReferenceSystem
.WGS84(), 3)));
771 team2
.setContact(Contact
.NewInstance("Street2", null, "London", null, null, null, null, "874599873", null, null, null));
772 String street3
= "Street3";
773 team2
.addAddress(street3
, null, null, null, null, null, Point
.NewInstance(1.1, 2.2, null, 4));
774 String emailAddress1
= "Email1";
775 team1
.addEmailAddress(emailAddress1
);
777 team2
.addTeamMember(person1
);
778 team2
.addTeamMember(person2
);
779 String emailAddress2
= "Email2";
780 team2
.addEmailAddress(emailAddress2
);
782 team3
.addTeamMember(person3
);
783 team3
.addEmailAddress("emailAddress3");
785 book1
.setAuthorTeam(team2
);
786 book2
.setAuthorTeam(team3
);
788 Credit credit1
= Credit
.NewInstance(team3
, "credit1");
789 book2
.addCredit(credit1
);
791 agentDao
.save(team1
);
792 agentDao
.save(team2
);
793 agentDao
.save(team3
);
794 cdmGenericDao
.save((Reference
)book1
);
795 cdmGenericDao
.save((Reference
)book2
);
797 cdmGenericDao
.merge(team2
, team3
, null);
799 Assert
.assertSame("Author of book1 must be team2.", team2
, book1
.getAuthorTeam());
800 Assert
.assertSame("Author of book2 must be team2.", team2
, book2
.getAuthorTeam());
801 Assert
.assertSame("Agent of credit1 must be team2.", team2
, credit1
.getAgent());
803 Assert
.assertEquals("Team2 must have 3 persons as members.",3, team2
.getTeamMembers().size());
804 Assert
.assertTrue("Team2 must have person3 as new member.", team2
.getTeamMembers().contains(person3
));
805 Assert
.assertSame("Team2 must have person3 as third member.",person3
, team2
.getTeamMembers().get(2));
809 cdmGenericDao
.merge(team2
, team1
, null);
810 Contact team2Contact
= team2
.getContact();
811 Assert
.assertNotNull("team2Contact must not be null", team2Contact
);
812 Assert
.assertNotNull("Addresses must not be null", team2Contact
.getAddresses());
813 Assert
.assertEquals("Number of addresses must be 3", 3, team2Contact
.getAddresses().size());
814 Assert
.assertEquals("Number of email addresses must be 4", 4, team2Contact
.getEmailAddresses().size());
816 boolean street1Exists
= false;
817 boolean street3Exists
= false;
818 boolean country1Exists
= false;
819 for (Address address
: team2Contact
.getAddresses()){
820 if (street1
.equals(address
.getStreet())){
821 street1Exists
= true;
823 if (street3
.equals(address
.getStreet())){
824 street3Exists
= true;
826 if (WaterbodyOrCountry
.ARGENTINAARGENTINEREPUBLIC() == address
.getCountry()){
827 country1Exists
= true;
830 Assert
.assertTrue("Street1 must be one of the streets in team2's addresses", street1Exists
);
831 Assert
.assertTrue("Street3 must be one of the streets in team2's addressesss", street3Exists
);
832 Assert
.assertTrue("Argentina must be one of the countries in team2's addresses", country1Exists
);
835 Institution institution1
= Institution
.NewInstance();
836 institution1
.setTitleCache("inst1", true);
837 Institution institution2
= Institution
.NewInstance();
838 institution2
.setTitleCache("inst2", true);
840 TimePeriod period1
= TimePeriod
.NewInstance(2002, 2004);
841 TimePeriod period2
= TimePeriod
.NewInstance(2004, 2006);
843 person1
.addInstitutionalMembership(institution1
, period1
, "departement1", "role1");
844 person2
.addInstitutionalMembership(institution2
, period2
, "departement2", "role2");
846 IMergeStrategy personMergeStrategy
= DefaultMergeStrategy
.NewInstance(Person
.class);
847 personMergeStrategy
.invoke(person1
, person2
);
849 Assert
.assertEquals("Number of institutional memberships must be 2", 2, person1
.getInstitutionalMemberships().size());
850 for (InstitutionalMembership institutionalMembership
: person1
.getInstitutionalMemberships()){
851 Assert
.assertSame("Person of institutional memebership must be person1", person1
, institutionalMembership
.getPerson());
856 private void testMergeExceptions(CdmBase name1
, CdmBase name2
, CdmBase taxon
,CdmBase zooName1
) throws MergeException
{
859 cdmGenericDao
.merge(name1
, null, null);
860 Assert
.fail("Merging of 2 objects one or both of them null must throw an exception");
861 } catch (MergeException e
) {
862 Assert
.assertTrue("Merging of 2 objects of different types must throw an exception", true);
866 cdmGenericDao
.merge(null, name1
, null);
867 Assert
.fail("Merging of 2 objects one or both of them null must throw an exception");
868 } catch (NullPointerException e
) {
869 Assert
.assertTrue("Merging of 2 objects of different types must throw an exception", true);
871 //exceptions to be thrown
873 cdmGenericDao
.merge(name1
, taxon
, null);
874 Assert
.fail("Merging of 2 objects of different types must throw an exception");
875 } catch (MergeException e
) {
876 Assert
.assertTrue("Merging of 2 objects of different types must throw an exception", true);
880 cdmGenericDao
.merge(name1
, zooName1
, null);
881 Assert
.fail("Merging of 2 objects of different types must throw an exception");
882 } catch (MergeException e
) {
883 Assert
.assertTrue("Merging of 2 objects of different types must throw an exception", true);
888 public void findMatching(){
889 IBook book1
= ReferenceFactory
.newBook();
890 IBook book2
= ReferenceFactory
.newBook();
891 IBook book3
= ReferenceFactory
.newBook();
892 IBook book4
= ReferenceFactory
.newBook();
894 String title1
= "title1";
895 String title2
= "title2";
896 book1
.setTitle(title1
);
897 book2
.setTitle(title2
);
898 book3
.setTitle(title1
);
900 cdmGenericDao
.saveOrUpdate((Reference
)book1
);
901 cdmGenericDao
.saveOrUpdate((Reference
)book2
);
902 cdmGenericDao
.saveOrUpdate((Reference
)book3
);
904 IMatchStrategy matchStrategy
= DefaultMatchStrategy
.NewInstance(Reference
.class);
907 List
<IBook
> matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
908 Assert
.assertNotNull("Resultlist must not be null", matchResult
);
909 Assert
.assertEquals("Resultlist must have 1 entries", 1, matchResult
.size());
910 Assert
.assertSame("Resultlist entry must be book 1", book1
, matchResult
.get(0));
912 book1
.setDatePublished(TimePeriod
.NewInstance(1999, 2002));
913 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
914 Assert
.assertTrue("Resultlist must have no entries", matchResult
.isEmpty());
916 book3
.setDatePublished(TimePeriod
.NewInstance(1999));
917 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
918 Assert
.assertTrue("Resultlist must have no entries", matchResult
.isEmpty());
920 book3
.setDatePublished(TimePeriod
.NewInstance(1999,2002));
921 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
922 Assert
.assertEquals("Resultlist must have 1 entries", 1, matchResult
.size());
923 Assert
.assertSame("Resultlist entry must be book 1", book1
, matchResult
.get(0));
926 IBookSection section1
= ReferenceFactory
.newBookSection();
927 section1
.setInBook(book1
);
928 section1
.setTitle("SecTitle");
929 section1
.setPages("22-33");
930 IBookSection section2
= ReferenceFactory
.newBookSection();
931 section2
.setInBook(book2
);
932 section2
.setTitle("SecTitle");
933 section2
.setPages("22-33");
934 IBookSection section3
= ReferenceFactory
.newBookSection();
935 section3
.setInBook(book1
);
936 section3
.setTitle("SecTitle");
937 section3
.setPages("22-33");
938 cdmGenericDao
.saveOrUpdate((Reference
)section1
);
939 cdmGenericDao
.saveOrUpdate((Reference
)section2
);
940 cdmGenericDao
.saveOrUpdate((Reference
)section3
);
942 List
<IBookSection
> sectionResult
= cdmGenericDao
.findMatching(section3
, null);
943 Assert
.assertEquals("Resultlist must have 1 entries", 1, sectionResult
.size());
944 Assert
.assertSame("Resultlist entry must be section1", section1
, sectionResult
.get(0));
945 section2
.setInBook(book2
= (IBook
)((Reference
) book1
).clone());
946 cdmGenericDao
.saveOrUpdate((Reference
)book2
);
947 cdmGenericDao
.saveOrUpdate((Reference
)book1
);
949 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
950 Assert
.assertEquals("Resultlist must have 2 entries", 2, matchResult
.size());
951 sectionResult
= cdmGenericDao
.findMatching(section3
, null);
952 Assert
.assertEquals("Resultlist must have 1 entries", 2, sectionResult
.size());
955 Person person1
= Person
.NewTitledInstance("person");
956 Person person2
= Person
.NewTitledInstance("person");
957 Person person3
= Person
.NewTitledInstance("person");
959 person1
.setPrefix("pre1");
960 person2
.setPrefix("pre2");
961 person3
.setPrefix("pre3");
963 // matchResult = cdmGenericDao.findMatching(book3, matchStrategy);
964 // Assert.assertEquals("Resultlist must have 2 entries", 2, matchResult.size());
966 book1
.setAuthorTeam(person1
);
967 book2
.setAuthorTeam(person1
);
968 book3
.setAuthorTeam(person1
);
970 boolean m
= matchStrategy
.invoke(book1
, book3
);
971 boolean m2
= matchStrategy
.invoke(book2
, book3
);
973 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
974 Assert
.assertEquals("Resultlist must have 2 entries", 2, matchResult
.size());
976 book2
.setAuthorTeam(person2
);
977 book3
.setAuthorTeam(person3
);
978 matchResult
= cdmGenericDao
.findMatching(book3
, null);
979 Assert
.assertEquals("Resultlist must have no entries", 0, matchResult
.size());
981 person3
.setPrefix("pre1");
982 matchResult
= cdmGenericDao
.findMatching(book3
, null);
983 Assert
.assertEquals("Resultlist must have 1 entry", 1, matchResult
.size());
984 Assert
.assertSame("Resultlist entry must be book 1", book1
, matchResult
.get(0));
986 } catch (MatchException e
) {
987 Assert
.fail("Find match must not throw Exception: " + e
.getMessage());
995 public void findMatchingCache(){
996 IBook book1
= ReferenceFactory
.newBook();
997 Team team1
= Team
.NewInstance();
998 Team team2
= Team
.NewInstance();
999 team1
.setTitleCache("Team1", true);
1000 team2
.setTitleCache("Team1", true);
1002 book1
.setTitle("Title1");
1003 book1
.setEdition("Edition1");
1004 book1
.setAuthorTeam(team1
);
1007 IBook book2
= (IBook
) ((Reference
)book1
).clone();
1008 IBook book3
= (IBook
) ((Reference
)book1
).clone();
1010 // Assert.assertTrue("Cloned book should match", matchStrategy.invoke(book1, bookClone));
1011 // book1.setTitleCache("cache1");
1012 // Assert.assertFalse("Cached book should not match", matchStrategy.invoke(book1, bookClone));
1014 // bookClone.setTitleCache("cache1");
1015 // Assert.assertTrue("Cached book with same cache should match", matchStrategy.invoke(book1, bookClone));
1017 // bookClone.setTitleCache("cache2");
1018 // Assert.assertFalse("Cached book with differings caches should not match", matchStrategy.invoke(book1, bookClone));
1019 // bookClone.setTitleCache("cache1"); //restore
1021 // bookClone.setEdition(null);
1022 // Assert.assertTrue("Cached book with a defined and a null edition should match", matchStrategy.invoke(book1, bookClone));
1024 cdmGenericDao
.saveOrUpdate((Reference
)book1
);
1025 cdmGenericDao
.saveOrUpdate((Reference
)book2
);
1026 cdmGenericDao
.saveOrUpdate((Reference
)book3
);
1027 cdmGenericDao
.saveOrUpdate(team1
);
1028 cdmGenericDao
.saveOrUpdate(team2
);
1031 IMatchStrategy matchStrategy
= DefaultMatchStrategy
.NewInstance(Reference
.class);
1034 List
<IBook
> matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1035 Assert
.assertNotNull("Resultlist must not be null", matchResult
);
1036 Assert
.assertEquals("Resultlist must have 2 entries", 2, matchResult
.size());
1037 Assert
.assertTrue("Resultlist must contain book 1", matchResult
.contains(book1
));
1038 Assert
.assertTrue("Resultlist must contain book 2", matchResult
.contains(book2
));
1040 book1
.setTitleCache("cache1", true);
1041 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1042 Assert
.assertEquals("Resultlist must have 1 entries", 1, matchResult
.size());
1043 Assert
.assertTrue("Resultlist must contain book 2", matchResult
.contains(book2
));
1045 book2
.setTitleCache("cache2", false);
1046 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1047 Assert
.assertEquals("Resultlist must have 1 entries", 1, matchResult
.size());
1048 Assert
.assertTrue("Resultlist must contain book 2", matchResult
.contains(book2
));
1050 book2
.setEdition(null);
1051 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1052 Assert
.assertEquals("Resultlist must have 0 entries", 0, matchResult
.size());
1054 book3
.setTitleCache("cache1", true);
1055 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1056 Assert
.assertEquals("Resultlist must have 1 entries", 1, matchResult
.size());
1057 Assert
.assertTrue("Resultlist must contain book 1", matchResult
.contains(book1
));
1059 IMatchStrategy teamMatcher
= DefaultMatchStrategy
.NewInstance(Team
.class);
1060 boolean teamsMatch
= teamMatcher
.invoke(team1
, team2
);
1061 Assert
.assertTrue("Team1 and team2 should match" ,teamsMatch
);
1063 book3
.setAuthorTeam(team2
);
1064 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1065 Assert
.assertEquals("Resultlist must have 1 entries", 1, matchResult
.size());
1066 Assert
.assertTrue("Resultlist must contain book 1", matchResult
.contains(book1
));
1068 book3
.setAuthorTeam(null);
1069 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1070 Assert
.assertEquals("Resultlist must have 1 entries", 1, matchResult
.size());
1071 Assert
.assertTrue("Resultlist must contain book 1", matchResult
.contains(book1
));
1073 book2
.setTitleCache(book3
.getTitleCache(), true);
1074 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1075 Assert
.assertEquals("Resultlist must have 2 entries", 2, matchResult
.size());
1076 Assert
.assertTrue("Resultlist must contain book 1", matchResult
.contains(book1
));
1077 Assert
.assertTrue("Resultlist must contain book 2", matchResult
.contains(book2
));
1079 team2
.setTitleCache("team2", true);
1080 teamsMatch
= teamMatcher
.invoke(team1
, team2
);
1081 Assert
.assertFalse("Team1 and team2 should not match" ,teamsMatch
);
1083 book3
.setAuthorTeam(team1
);
1084 book2
.setAuthorTeam(team2
);
1085 matchResult
= cdmGenericDao
.findMatching(book3
, matchStrategy
);
1086 Assert
.assertEquals("Resultlist must have 1 entries", 1, matchResult
.size());
1087 Assert
.assertTrue("Resultlist must contain book 1", matchResult
.contains(book1
));
1090 } catch (MatchException e
) {
1091 Assert
.fail("Find match must not throw Exception: " + e
.getMessage());
1092 e
.printStackTrace();
1098 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmGenericDaoImpl#getHqlResult(java.lang.String)}.
1101 public void testGetHqlResult() {
1102 logger
.warn("Not yet implemented");