Project

General

Profile

« Previous | Next » 

Revision 0e51473b

Added by Andreas Kohlbecker almost 6 years ago

more bean initialization tests & found bug ref #7375

View differences:

cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/initializer/AdvancedBeanInitializerTest.java
8 8
*/
9 9
package eu.etaxonomy.cdm.persistence.dao.initializer;
10 10

  
11
import static org.junit.Assert.assertEquals;
11 12
import static org.junit.Assert.assertFalse;
12 13
import static org.junit.Assert.assertTrue;
13 14

  
......
15 16
import java.net.URI;
16 17
import java.util.ArrayList;
17 18
import java.util.Arrays;
19
import java.util.HashMap;
18 20
import java.util.HashSet;
19 21
import java.util.List;
22
import java.util.Map;
20 23
import java.util.Set;
21 24
import java.util.UUID;
22 25

  
26
import org.apache.log4j.Level;
27
import org.apache.log4j.Logger;
23 28
import org.hibernate.Hibernate;
29
import org.hibernate.HibernateException;
30
import org.hibernate.SessionFactory;
31
import org.junit.After;
32
import org.junit.Before;
33
import org.junit.Ignore;
24 34
import org.junit.Test;
25 35
import org.unitils.dbunit.annotation.DataSet;
26 36
import org.unitils.spring.annotation.SpringBeanByType;
27 37

  
38
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
28 39
import eu.etaxonomy.cdm.model.agent.Address;
29 40
import eu.etaxonomy.cdm.model.agent.Contact;
30 41
import eu.etaxonomy.cdm.model.agent.Person;
42
import eu.etaxonomy.cdm.model.agent.Team;
43
import eu.etaxonomy.cdm.model.common.CdmBase;
31 44
import eu.etaxonomy.cdm.model.location.Country;
32 45
import eu.etaxonomy.cdm.model.location.Point;
33 46
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
......
36 49
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
37 50
import eu.etaxonomy.cdm.model.reference.Reference;
38 51
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
52
import eu.etaxonomy.cdm.model.taxon.Taxon;
39 53
import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;
40 54
import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;
41 55
import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;
56
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
42 57
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
43 58

  
44 59
/**
......
47 62
 */
48 63
public class AdvancedBeanInitializerTest extends CdmTransactionalIntegrationTest {
49 64

  
65
    private static final Logger logger = Logger.getLogger(AdvancedBeanInitializerTest.class);
66

  
50 67
    private static final UUID personUuid = UUID.fromString("d0568bb1-4dc8-40dc-a405-d0b9e714a7a9");
51 68

  
69
    private static final UUID teamUuid = UUID.fromString("f2ab0cab-f8a4-4db0-9f2d-2f0a1b627597");
70

  
52 71
    private static final UUID referenceUuid = UUID.fromString("f48196c6-854a-416e-8f2a-67bd39e988dc");
53 72

  
54 73
    private static final UUID nameUuid = UUID.fromString("98cbb643-d521-4ca7-86f7-8180bea85d9f");
55 74

  
75
    private static final UUID taxonUuid = UUID.fromString("07171a4c-f9f0-4459-a7e4-9f75981f7027");
76

  
56 77
    @SpringBeanByType
57 78
    private IAgentDao agentDao;
58 79

  
......
62 83
    @SpringBeanByType
63 84
    private ITaxonNameDao nameDao;
64 85

  
86
    @SpringBeanByType
87
    private ITaxonDao taxonDao;
88

  
65 89
    @SpringBeanByType
66 90
    private AdvancedBeanInitializer initializer;
67 91

  
92
    @SpringBeanByType
93
    private AdvancedBeanInitializer defaultBeanInitializer;
94

  
95
    @SpringBeanByType
96
    private SessionFactory factory;
97

  
98
    private Map<Class<? extends CdmBase>, AutoPropertyInitializer<CdmBase>> deacivatedAutoIntitializers;
99

  
100
    /**
101
     * Checks that the AdvancedBeanInitializer is available and that the expected set of beanAutoInitializers is configured
102
     * in the persitence.xml.
103

  
104
     */
105
    @Before
106
    public void assertAutoinitializers(){
107

  
108
        assert defaultBeanInitializer != null;
109

  
110
        Class[] expectedAutoInitializers = new Class[]{
111
            eu.etaxonomy.cdm.persistence.dao.initializer.TitleAndNameCacheAutoInitializer.class,
112
            eu.etaxonomy.cdm.persistence.dao.initializer.AnnotationTypeAutoInitializer.class,
113
            eu.etaxonomy.cdm.persistence.dao.initializer.MarkerTypeAutoInitializer.class,
114
            eu.etaxonomy.cdm.persistence.dao.initializer.GatheringEventLocationAutoInitializer.class,
115
            eu.etaxonomy.cdm.persistence.dao.initializer.TermBaseAutoInitializer.class,
116
            eu.etaxonomy.cdm.persistence.dao.initializer.MediaAutoInitializer.class,
117
            eu.etaxonomy.cdm.persistence.dao.initializer.TypeDesignationAutoInitializer.class,
118
            eu.etaxonomy.cdm.persistence.dao.initializer.TeamAutoInitializer.class
119
            };
120

  
121
        Set<Class> checkSet = new HashSet<>(Arrays.asList(expectedAutoInitializers));
122

  
123
        for(AutoPropertyInitializer api : defaultBeanInitializer.getBeanAutoInitializers().values()){
124
            assert checkSet.remove(api.getClass()) == true;
125
        }
126
        assert checkSet.size() == 0;
127
    }
128

  
129
    @After
130
    public void restoreAutoinitializers() {
131
        if(deacivatedAutoIntitializers != null){
132
            defaultBeanInitializer.getBeanAutoInitializers().putAll(deacivatedAutoIntitializers);
133
            deacivatedAutoIntitializers = null;
134
        }
135
    }
136

  
68 137
    @DataSet
69 138
    @Test
70 139
    public void testContact() {
......
80 149
        initializer.initialize(person, propPath);
81 150
    }
82 151

  
83
    /**
84
     * Attempt to reproduce #7331 without success
85
     */
86 152
    @DataSet
87 153
    @Test
88 154
    public void testFullNameGraphWithPreloadedReference() {
......
95 161
    }
96 162

  
97 163

  
164
    @DataSet
165
    @Test
166
    public void testToOneWildcard() {
167

  
168
        deacivatedAutoIntitializers = clearAutoinitializers();
169
        assureSessionClear();
170

  
171
        TaxonName name = nameDao.load(nameUuid, Arrays.asList("$"));
172
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference()));
173
        assertFalse(Hibernate.isInitialized(name.getAnnotations()));
174

  
175
        name = nameDao.load(nameUuid, Arrays.asList("nomenclaturalReference.$"));
176
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference()));
177
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference().getAuthorship()));
178
        assertFalse(Hibernate.isInitialized(name.getNomenclaturalReference().getAnnotations()));
179
    }
180

  
181
    @DataSet
182
    @Test
183
    @Ignore // TODO fix #7375
184
    public void testComplexPath() {
185

  
186
        deacivatedAutoIntitializers = clearAutoinitializers();
187
        assureSessionClear();
188

  
189
        TaxonName name = nameDao.load(nameUuid, Arrays.asList("nomenclaturalReference.$.*.contact.faxNumbers"));
190
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference())); // nomenclaturalReference
191
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference().getAuthorship())); // $
192
        assertFalse("must not be initialized by 'nomenclaturalReference.$'", Hibernate.isInitialized(name.getNomenclaturalReference().getExtensions()));
193
        Team team = HibernateProxyHelper.deproxy(name.getNomenclaturalReference().getAuthorship(), Team.class);
194
        assertTrue(Hibernate.isInitialized(team.getTeamMembers())); // *
195
        Person person1 = HibernateProxyHelper.deproxy(team.getTeamMembers().get(0), Person.class);
196
        assertEquals(personUuid, person1.getUuid());
197
        assertTrue(Hibernate.isInitialized(person1.getContact())); // contact
198
        assertFalse("must not be initialized by 'nomenclaturalReference.$.*.contact'", Hibernate.isInitialized(person1.getAnnotations()));
199
        assertTrue(Hibernate.isInitialized(person1.getContact().getFaxNumbers())); // * // FIXME fails here #7375
200
    }
201

  
202
    @DataSet
203
    @Test
204
    public void testPersonContacts() {
205

  
206
        deacivatedAutoIntitializers = clearAutoinitializers();
207
        assureSessionClear();
208

  
209
        Person person1 = (Person) agentDao.load(personUuid, Arrays.asList("contact.faxNumbers"));
210
        assertTrue(Hibernate.isInitialized(person1.getContact()));
211
        assertTrue(Hibernate.isInitialized(person1.getContact().getFaxNumbers()));
212
    }
213

  
214
    @DataSet
215
    @Test
216
    public void testToOneWildcardDepth1() {
217

  
218
        deacivatedAutoIntitializers = clearAutoinitializers();
219
        assureSessionClear();
220

  
221
        TaxonName name = nameDao.load(nameUuid, Arrays.asList("nomenclaturalReference.$"));
222
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference()));
223
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference().getAuthorship()));
224
        assertFalse(Hibernate.isInitialized(name.getNomenclaturalReference().getAnnotations()));
225

  
226
    }
227

  
228
    @DataSet
229
    @Test
230
    public void testToManyWildcard() {
231

  
232
        deacivatedAutoIntitializers = clearAutoinitializers();
233
        assureSessionClear();
234

  
235
        TaxonName name = nameDao.load(nameUuid, Arrays.asList("*"));
236
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference()));
237
        assertTrue(Hibernate.isInitialized(name.getAnnotations()));
238

  
239
    }
240

  
241
    @DataSet
242
    @Test
243
    public void testToManyWildcardDepth1() {
244

  
245
        deacivatedAutoIntitializers = clearAutoinitializers();
246
        assureSessionClear();
247

  
248
        TaxonName name = nameDao.load(nameUuid, Arrays.asList("nomenclaturalReference.*"));
249
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference()));
250
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference().getAuthorship()));
251
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference().getAnnotations()));
252

  
253
    }
254

  
255
    @DataSet
256
    @Test
257
    public void testTitleAndNameCacheAutoInitializer() {
258

  
259
        assureSessionClear();
260

  
261
        Logger.getLogger(AdvancedBeanInitializer.class).setLevel(Level.TRACE);
262

  
263
        Taxon taxon = (Taxon)taxonDao.load(taxonUuid, Arrays.asList("$"));
264
        assertTrue(Hibernate.isInitialized(taxon.getName()));
265
        TaxonName name = taxon.getName();
266
        // the TitleAndNameCacheAutoInitializer must not intitialize the nomenclaturalReference
267
        // since the authorship is nonly taken from the combinationAutors field
268
        assertFalse(Hibernate.isInitialized(name.getNomenclaturalReference()));
269
    }
270

  
271
    @DataSet
272
    @Test
273
    public void testTeamAutoInitializer() {
274

  
275
        assureSessionClear();
276

  
277
        Logger.getLogger(AdvancedBeanInitializer.class).setLevel(Level.TRACE);
278

  
279
        deacivatedAutoIntitializers = clearAutoinitializers();
280
        // load bean with autoinitializers deactivated
281
        Taxon taxon = (Taxon)taxonDao.load(taxonUuid, Arrays.asList("name.nomenclaturalReference.authorship"));
282
        assertTrue(Hibernate.isInitialized(taxon.getName()));
283
        TaxonName name = taxon.getName();
284
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference()));
285
        assertTrue(Hibernate.isInitialized(name.getNomenclaturalReference().getAuthorship()));
286
        Team team = HibernateProxyHelper.deproxy(name.getNomenclaturalReference().getAuthorship(), Team.class);
287

  
288
        // FIXME: the below assertion fails, this is not citical but an inconsistency
289
        // members should not intitialized since they where not included in the property path
290
        // assertFalse("members should not intitialized since they where not included in the property path", Hibernate.isInitialized(team.getTeamMembers()));
291

  
292
        // activate the teamAutoInitializer again
293
        AutoPropertyInitializer<CdmBase> teamAutoInitializer = deacivatedAutoIntitializers.get(Team.class);
294
        deacivatedAutoIntitializers.remove(teamAutoInitializer);
295
        defaultBeanInitializer.getBeanAutoInitializers().put(Team.class, teamAutoInitializer);
296

  
297
        taxon = (Taxon)taxonDao.load(taxonUuid, Arrays.asList("$"));
298

  
299
        team = HibernateProxyHelper.deproxy(name.getNomenclaturalReference().getAuthorship(), Team.class);
300
        assertTrue("members should have been intitialized by the ", Hibernate.isInitialized(team.getTeamMembers()));
301

  
302
    }
303

  
304
    // ============================== end of tests ========================= //
305

  
306
    /**
307
     * @return
308
     */
309
    protected Map<Class<? extends CdmBase>, AutoPropertyInitializer<CdmBase>> clearAutoinitializers() {
310
        Map<Class<? extends CdmBase>, AutoPropertyInitializer<CdmBase>> autoIntitializers = new HashMap<>(defaultBeanInitializer.getBeanAutoInitializers());
311
        defaultBeanInitializer.getBeanAutoInitializers().clear();
312
        return autoIntitializers;
313
    }
314

  
315

  
316
    /**
317
     *
318
     */
319
    protected void assureSessionClear() {
320
        try {
321
            factory.getCurrentSession().clear();
322
            logger.debug("session cleared");
323
        } catch (HibernateException e){
324
            logger.debug("no session");
325
            // IGNORE no session
326
        }
327
    }
328

  
98 329

  
99 330
    @Override
100 331
    // @Test
101 332
    public void createTestDataSet() throws FileNotFoundException {
102 333
        // 1. create person and a reference
103
        Person person = Person.NewTitledInstance("Hallo you");
334
        Person person1 = Person.NewTitledInstance("A. Adonis");
335
        Person person2 = Person.NewTitledInstance("B. Belalugosi");
336
        Team team = Team.NewInstance();
337
        team.setUuid(teamUuid);
338
        team.addTeamMember(person1);
339
        team.addTeamMember(person2);
104 340
        Set<Address> addresses = new HashSet<Address>();
105 341
        addresses.add(Address.NewInstance(Country.GERMANY(), "locality", "pobox", "postcode", "region", "street", Point.NewInstance(50.02,33.3, ReferenceSystem.GOOGLE_EARTH(), 3)));
106 342
        List<String> emailAddresses = new ArrayList<String>();
......
113 349
        urls.add(URI.create("http://www.test.de"));
114 350
        Contact contact = Contact.NewInstance(addresses, emailAddresses, faxNumbers, phoneNumbers, urls);
115 351

  
116
        person.setContact(contact);
117
        person.setUuid(personUuid);
118
        person = (Person)agentDao.save(person);
352
        person1.setContact(contact);
353
        person1.setUuid(personUuid);
354
        person1 = (Person)agentDao.save(person1);
355
        person2 = (Person)agentDao.save(person2);
356
        team = (Team)agentDao.save(team);
119 357

  
120 358
        Reference ref = ReferenceFactory.newBook();
121 359
        ref.setUuid(referenceUuid);
122
        ref.setAuthorship(person);
123
        ref.setTitleCache("The Book", true);
360
        ref.setAuthorship(team);
361
        ref.setTitle("The Book");
124 362
        referenceDao.save(ref);
125 363

  
126 364
        TaxonName name = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
......
129 367
        name.setTitleCache("Species testii", true);
130 368
        nameDao.save(name);
131 369

  
370
        Taxon taxon = Taxon.NewInstance(name, null);
371
        taxon.setUuid(taxonUuid);
372
        taxonDao.save(taxon);
373

  
132 374
        // 2. end the transaction so that all data is actually written to the db
133 375
        setComplete();
134 376
        endTransaction();
......
142 384
        writeDbUnitDataSetFile(new String[] {
143 385
            "ADDRESS", "AGENTBASE","AgentBase_contact_emailaddresses",
144 386
            "AgentBase_contact_faxnumbers","AgentBase_contact_phonenumbers",
145
            "AgentBase_contact_urls","AgentBase_Address",
146
            "REFERENCE", "TaxonName", "HomotypicalGroup",
387
            "AgentBase_contact_urls","AgentBase_Address", "AgentBase_AgentBase",
388
            "REFERENCE", "TaxonName", "HomotypicalGroup", "TaxonBase",
389
            "",
147 390
            "HIBERNATE_SEQUENCES" // IMPORTANT!!!
148 391
            },
149 392
            fileNameAppendix );
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/initializer/AdvancedBeanInitializerTest.xml
1 1
<?xml version='1.0' encoding='UTF-8'?>
2 2
<dataset>
3
  <ADDRESS ID="5000" CREATED="2018-03-26 14:23:59.0" UUID="c7c6b60e-5439-4455-a049-cc837254db11" UPDATED="[null]" LOCALITY="locality" LOCATION_ERRORRADIUS="3" LOCATION_LATITUDE="33.3" LOCATION_LONGITUDE="50.02" POBOX="pobox" POSTCODE="postcode" REGION="region" STREET="street" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" COUNTRY_ID="664" LOCATION_REFERENCESYSTEM_ID="2054"/>
4
  <AGENTBASE DTYPE="Person" ID="5000" CREATED="2018-03-26 14:23:59.0" UUID="d0568bb1-4dc8-40dc-a405-d0b9e714a7a9" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Hallo you" PROTECTEDCOLLECTORTITLECACHE="[null]" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="[null]" NOMENCLATURALTITLE="Hallo you" CODE="[null]" NAME="[null]" FIRSTNAME="[null]" INITIALS="[null]" LASTNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
3
  <ADDRESS ID="5000" CREATED="2018-04-27 06:10:06.0" UUID="89159856-090e-43e7-8095-ffdd45ce9492" UPDATED="[null]" LOCALITY="locality" LOCATION_ERRORRADIUS="3" LOCATION_LATITUDE="33.3" LOCATION_LONGITUDE="50.02" POBOX="pobox" POSTCODE="postcode" REGION="region" STREET="street" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" COUNTRY_ID="664" LOCATION_REFERENCESYSTEM_ID="2054"/>
4
  <AGENTBASE DTYPE="Person" ID="5000" CREATED="2018-04-27 06:10:06.0" UUID="d0568bb1-4dc8-40dc-a405-d0b9e714a7a9" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="A. Adonis" PROTECTEDCOLLECTORTITLECACHE="[null]" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="[null]" NOMENCLATURALTITLE="A. Adonis" CODE="[null]" NAME="[null]" FIRSTNAME="[null]" INITIALS="[null]" LASTNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
5
  <AGENTBASE DTYPE="Person" ID="5001" CREATED="2018-04-27 06:10:06.0" UUID="b56453b2-c371-4ff4-ad5d-93205695b235" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="B. Belalugosi" PROTECTEDCOLLECTORTITLECACHE="[null]" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="[null]" NOMENCLATURALTITLE="B. Belalugosi" CODE="[null]" NAME="[null]" FIRSTNAME="[null]" INITIALS="[null]" LASTNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
6
  <AGENTBASE DTYPE="Team" ID="5002" CREATED="2018-04-27 06:10:06.0" UUID="f2ab0cab-f8a4-4db0-9f2d-2f0a1b627597" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="A. Adonis &amp; B. Belalugosi" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="false" NOMENCLATURALTITLE="A. Adonis &amp; B. Belalugosi" CODE="[null]" NAME="[null]" FIRSTNAME="[null]" INITIALS="[null]" LASTNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
5 7
  <AGENTBASE_CONTACT_EMAILADDRESSES AGENTBASE_ID="5000" CONTACT_EMAILADDRESSES_ELEMENT="My.email@web.de"/>
6 8
  <AGENTBASE_CONTACT_FAXNUMBERS AGENTBASE_ID="5000" CONTACT_FAXNUMBERS_ELEMENT="0049-30-1234545"/>
7 9
  <AGENTBASE_CONTACT_PHONENUMBERS AGENTBASE_ID="5000" CONTACT_PHONENUMBERS_ELEMENT="0049-30-1234546"/>
8 10
  <AGENTBASE_CONTACT_URLS AGENTBASE_ID="5000" CONTACT_URLS_ELEMENT="http://www.test.de"/>
9 11
  <AGENTBASE_ADDRESS AGENTBASE_ID="5000" CONTACT_ADDRESSES_ID="5000"/>
10
  <REFERENCE ID="5000" CREATED="2018-03-26 14:23:59.0" UUID="f48196c6-854a-416e-8f2a-67bd39e988dc" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="The Book" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" ABBREVTITLE="[null]" ABBREVTITLECACHE="Hallo you" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" ACCESSED="[null]" LASTRETRIEVED="[null]" EXTERNALID="[null]" EXTERNALLINK="[null]" AUTHORITYTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="5000" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
11
  <TAXONNAME ID="5000" CREATED="2018-03-26 14:23:59.0" UUID="98cbb643-d521-4ca7-86f7-8180bea85d9f" UPDATED="[null]" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Species testii" APPENDEDPHRASE="[null]" FULLTITLECACHE="Species testii, The Book" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="5000" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
12
  <HOMOTYPICALGROUP ID="5000" CREATED="2018-03-26 14:23:59.0" UUID="0d456d8f-ca26-40c1-979b-0b8c42f4553b" UPDATED="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
12
  <AGENTBASE_AGENTBASE TEAM_ID="5002" TEAMMEMBERS_ID="5000" SORTINDEX="0"/>
13
  <AGENTBASE_AGENTBASE TEAM_ID="5002" TEAMMEMBERS_ID="5001" SORTINDEX="1"/>
14
  <REFERENCE ID="5000" CREATED="2018-04-27 06:10:06.0" UUID="f48196c6-854a-416e-8f2a-67bd39e988dc" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="A. Adonis &amp; B. Belalugosi, The Book" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="The Book" ABBREVTITLE="[null]" ABBREVTITLECACHE="A. Adonis &amp; B. Belalugosi, The Book" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" URI="[null]" VOLUME="[null]" ACCESSED="[null]" LASTRETRIEVED="[null]" EXTERNALID="[null]" EXTERNALLINK="[null]" AUTHORITYTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="5002" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
15
  <TAXONNAME ID="5000" CREATED="2018-04-27 06:10:06.0" UUID="98cbb643-d521-4ca7-86f7-8180bea85d9f" UPDATED="[null]" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Species testii" APPENDEDPHRASE="[null]" FULLTITLECACHE="Species testii, The Book" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="5000" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
16
  <HOMOTYPICALGROUP ID="5000" CREATED="2018-04-27 06:10:06.0" UUID="14a0bc9a-9c9c-4fab-9e36-052966715d99" UPDATED="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
17
  <TAXONBASE DTYPE="Taxon" ID="5000" CREATED="2018-04-27 06:10:06.0" UUID="07171a4c-f9f0-4459-a7e4-9f75981f7027" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" SECMICROREFERENCE="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Species testii sec. ???" APPENDEDPHRASE="[null]" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" EXCLUDED="[null]" TAXONSTATUSUNKNOWN="false" UNPLACED="[null]" PARTIAL="[null]" PROPARTE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" NAME_ID="5000" SEC_ID="[null]" ACCEPTEDTAXON_ID="[null]" TYPE_ID="[null]"/>
13 18
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="Address" NEXT_VAL="5001"/>
14
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="AgentBase" NEXT_VAL="5001"/>
19
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="AgentBase" NEXT_VAL="5003"/>
15 20
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="AuditEvent" NEXT_VAL="5002"/>
16 21
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="HomotypicalGroup" NEXT_VAL="5001"/>
17 22
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="Reference" NEXT_VAL="5001"/>
23
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="TaxonBase" NEXT_VAL="5001"/>
18 24
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="TaxonName" NEXT_VAL="5001"/>
19 25
</dataset>

Also available in: Unified diff