ref #6754 repair zip creation for large datasets
[cdmlib.git] / cdmlib-persistence / src / test / java / eu / etaxonomy / cdm / persistence / dao / hibernate / taxon / TaxonNodeFilterDaoHibernateImplTest.java
1 /**
2 *
3 */
4 package eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.tmp;
5
6 import java.io.FileNotFoundException;
7 import java.util.List;
8 import java.util.UUID;
9
10 import org.junit.Assert;
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.unitils.spring.annotation.SpringBeanByType;
14
15 import eu.etaxonomy.cdm.model.reference.Reference;
16 import eu.etaxonomy.cdm.model.taxon.Classification;
17 import eu.etaxonomy.cdm.model.taxon.Taxon;
18 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
19 import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;
20 import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonNodeDao;
21 import eu.etaxonomy.cdm.persistence.dao.taxon.tmp.TaxonNodeFilter;
22 import eu.etaxonomy.cdm.persistence.dao.taxon.tmp.TaxonNodeFilterDaoHibernateImpl;
23 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
24
25 /**
26 * @author a.mueller
27 * @date 2014/06/13
28 *
29 */
30 public class TaxonNodeFilterDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
31
32 @SpringBeanByType
33 private ITaxonNodeDao taxonNodeDao;
34
35 @SpringBeanByType
36 private IClassificationDao classificationDao;
37
38 @SpringBeanByType
39 private TaxonNodeFilterDaoHibernateImpl filterDao;
40
41
42
43
44
45 private Classification classification1;
46 private TaxonNode node1;
47 private TaxonNode node2;
48 private TaxonNode node3;
49 private TaxonNode node4;
50 private TaxonNode node5;
51
52 /**
53 * @throws java.lang.Exception
54 */
55 @Before
56 public void setUp() throws Exception {
57 classification1 = Classification.NewInstance("TestClassification");
58 Reference citation = null;
59 String microCitation = null;
60 Taxon taxon1 = Taxon.NewInstance(null, null);
61 Taxon taxon2 = Taxon.NewInstance(null, null);
62 Taxon taxon3 = Taxon.NewInstance(null, null);
63 Taxon taxon4 = Taxon.NewInstance(null, null);
64 Taxon taxon5 = Taxon.NewInstance(null, null);
65 node1 = classification1.addChildTaxon(taxon1, citation, microCitation);
66 node1= taxonNodeDao.save(node1);
67
68 node2 = classification1.addChildTaxon(taxon2, citation, microCitation);
69 node2 = taxonNodeDao.save(node2);
70 node3 = node1.addChildTaxon(taxon3, citation, microCitation);
71 taxonNodeDao.save(node3);
72 node4 = node3.addChildTaxon(taxon4, citation, microCitation);
73 taxonNodeDao.save(node4);
74 node5 = node3.addChildTaxon(taxon5, citation, microCitation);
75 node5 = taxonNodeDao.save(node5);
76 //MergeResult result = taxonNodeDao.merge(node5, true);
77 //node5 = (TaxonNode) result.getMergedEntity();
78
79 //taxonNodeDao.save(node5);
80
81
82
83 classificationDao.save(classification1);
84
85
86 }
87
88 /**
89 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.taxon.tmp.TaxonNodeFilterDaoHibernateImpl#listUuids(eu.etaxonomy.cdm.persistence.dao.taxon.tmp.TaxonNodeFilter)}.
90 */
91 @Test
92 public void testListUuids() {
93 Classification classification = classificationDao.findByUuid(classification1.getUuid());
94 TaxonNodeFilter filter = new TaxonNodeFilter(node1);
95 List<UUID> listUuid = filterDao.listUuids(filter);
96 List<TaxonNode> children = taxonNodeDao.listChildrenOf(node1, null, null, null, true);
97 Assert.assertEquals("All 4 children should be returned", 4, listUuid.size());
98 Assert.assertTrue(listUuid.contains(node4.getUuid()));
99 Assert.assertFalse(listUuid.contains(node2.getUuid()));
100 Assert.assertFalse(listUuid.contains(classification.getRootNode().getUuid()));
101
102
103 filter = new TaxonNodeFilter(classification.getRootNode());
104 listUuid = filterDao.listUuids(filter);
105 //FIXME still unclear if (empty) root node should be part of the result
106 Assert.assertEquals("All 6 children should be returned", 6, listUuid.size());
107
108 filter = new TaxonNodeFilter(node3);
109 listUuid = filterDao.listUuids(filter);
110 Assert.assertEquals("All 3 children should be returned", 3, listUuid.size());
111
112 filter.or(node2);
113 listUuid = filterDao.listUuids(filter);
114 Assert.assertEquals("All 3 children and node 2 should be returned", 4, listUuid.size());
115 Assert.assertTrue(listUuid.contains(node2.getUuid()));
116
117 filter = new TaxonNodeFilter(node1).not(node4);
118 listUuid = filterDao.listUuids(filter);
119 Assert.assertEquals("Node and 2 children but not node4 should be returned", 3, listUuid.size());
120 Assert.assertFalse(listUuid.contains(node4.getUuid()));
121
122
123
124
125
126 }
127
128 /* (non-Javadoc)
129 * @see eu.etaxonomy.cdm.test.integration.CdmIntegrationTest#createTestData()
130 */
131 @Override
132 public void createTestDataSet() throws FileNotFoundException {
133 // TODO Auto-generated method stub
134
135 }
136
137 }