Project

General

Profile

« Previous | Next » 

Revision 20fa5279

Added by Andreas Kohlbecker over 6 years ago

ref #7114 fixing delete problems in DerivedUnitConverter and adding according test

View differences:

cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/utility/DerivedUnitConverter.java
13 13

  
14 14
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
15 15
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
16
import eu.etaxonomy.cdm.model.media.Media;
17
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
18
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
16 19
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
17 20
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
18 21
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
......
25 28
 */
26 29
public class DerivedUnitConverter<TARGET extends DerivedUnit> {
27 30

  
28
    private DerivedUnit du;
31
    private DerivedUnit source;
29 32

  
30 33
    IOccurrenceService service;
31 34

  
......
37 40
            throw new NullPointerException();
38 41
        }
39 42
        this.service = service;
40
        this.du = HibernateProxyHelper.deproxy(derivedUnit, DerivedUnit.class);
43
        this.source = HibernateProxyHelper.deproxy(derivedUnit, DerivedUnit.class);
44

  
41 45
    }
42 46

  
43 47
    /**
48
     * converts the <code>source</code> <code>DerivedUnit</code> this converter has been created for into a <code>DerivedUnit</code> of the type <code>TARGET</code>.
49
     * If the <code>source</code> instance was persisted the target instance will also be written into data base and the source is deleted from there.
50
     *
44 51
     * @param targetType
45 52
     * @param recordBasis
46 53
     * @throws DerivedUnitConversionException
......
48 55
    @SuppressWarnings("unchecked")
49 56
    public TARGET convertTo(Class<TARGET> targetType, SpecimenOrObservationType recordBasis) throws DerivedUnitConversionException {
50 57

  
51
        if(du.getClass().equals(targetType)){
58
        if(source.getClass().equals(targetType)){
52 59
            // nothing to do
53
            return (TARGET) du;
60
            return (TARGET) source;
54 61
        }
55 62

  
56 63
        if(!isSuppoprtedType(targetType)){
......
63 70
        if(!canConvert()){
64 71
            throw new DerivedUnitConversionException(
65 72
                    String.format("%s can not be converted into %s as long it contains unconvertable non null properties",
66
                            du.toString(),
73
                            source.toString(),
67 74
                            targetType.getName())
68 75
                    );
69 76
        }
......
81 88
        }
82 89

  
83 90

  
84
        service.delete(du);
91
        if(source.getId() > 0){
92
            service.merge(newInstance);
93
            service.delete(source);
94
        }
85 95

  
86 96
        return newInstance;
87 97

  
......
91 101
     * @param newInstance
92 102
     */
93 103
    private void copyPropertiesTo(TARGET n) {
94
        n.setAccessionNumber(du.getAccessionNumber());
95
        n.setBarcode(du.getBarcode());
96
        n.setCatalogNumber(du.getCatalogNumber());
97
        n.setCollection(du.getCollection());
98
        n.setDerivedFrom(du.getDerivedFrom());
99
        n.setExsiccatum(du.getExsiccatum());
100
        n.setIndividualCount(du.getIndividualCount());
101
        n.setKindOfUnit(du.getKindOfUnit());
102
        n.setLifeStage(du.getLifeStage());
103
        n.setLsid(du.getLsid());
104
        n.setOriginalLabelInfo(du.getOriginalLabelInfo());
105
        n.setPreferredStableUri(du.getPreferredStableUri());
106
        n.setPreservation(du.getPreservation());
107
        n.setPublish(du.isPublish());
108
        n.setProtectedIdentityCache(du.isProtectedIdentityCache());
109
        n.setProtectedTitleCache(du.isProtectedTitleCache());
110
        // n.setRecordBasis(du.getRecordBasis()); // not to copy, this it is set for the new instance explicitly
111
        n.setSex(du.getSex());
112
        n.setStoredUnder(du.getStoredUnder());
113
        n.setTitleCache(du.getTitleCache(), n.isProtectedTitleCache());
114
        du.getSources().forEach(s -> n.addSource(s));
115
        du.getAnnotations().forEach(a -> n.addAnnotation(a));
116
        du.getCredits().forEach(c -> n.addCredit(c));
117
        du.getDerivationEvents().forEach(de -> n.addDerivationEvent(de));
118
        du.getDescriptions().forEach(d -> n.addDescription(d));
119
        du.getDeterminations().forEach(det -> n.addDetermination(det));
120
        du.getExtensions().forEach(e -> n.addExtension(e));
121
        du.getIdentifiers().forEach(i -> n.addIdentifier(i));
122
        du.getMarkers().forEach(m -> n.addMarker(m));
123
        du.getRights().forEach(r -> n.addRights(r));
124
        n.addSources(du.getSources());
125
        du.getSpecimenTypeDesignations().forEach(std -> n.addSpecimenTypeDesignation(std));
104
        n.setAccessionNumber(source.getAccessionNumber());
105
        n.setBarcode(source.getBarcode());
106
        n.setCatalogNumber(source.getCatalogNumber());
107
        n.setCollection(source.getCollection());
108
        DerivationEvent derivationEvent = source.getDerivedFrom();
109
        derivationEvent.getDerivatives().remove(source);
110
        n.setDerivedFrom(source.getDerivedFrom());
111
        source.setDerivedFrom(null);
112
        n.setExsiccatum(source.getExsiccatum());
113
        n.setIndividualCount(source.getIndividualCount());
114
        n.setKindOfUnit(source.getKindOfUnit());
115
        n.setLifeStage(source.getLifeStage());
116
        n.setLsid(source.getLsid());
117
        n.setOriginalLabelInfo(source.getOriginalLabelInfo());
118
        n.setPreferredStableUri(source.getPreferredStableUri());
119
        n.setPreservation(source.getPreservation());
120
        n.setPublish(source.isPublish());
121
        n.setProtectedIdentityCache(source.isProtectedIdentityCache());
122
        n.setProtectedTitleCache(source.isProtectedTitleCache());
123
        // n.setRecordBasis(source.getRecordBasis()); // not to copy, this it is set for the new instance explicitly
124
        n.setSex(source.getSex());
125
        n.setStoredUnder(source.getStoredUnder());
126
        n.setTitleCache(source.getTitleCache(), n.isProtectedTitleCache());
127
        source.getSources().forEach(s -> n.addSource(s));
128
        source.getAnnotations().forEach(a -> n.addAnnotation(a));
129
        source.getCredits().forEach(c -> n.addCredit(c));
130
        source.getDerivationEvents().forEach(de -> n.addDerivationEvent(de));
131
        source.getDerivationEvents().clear();
132
        source.getDescriptions().forEach(d -> n.addDescription(d));
133
        source.getDeterminations().forEach(det -> n.addDetermination(det));
134
        source.getDeterminations().clear();
135
        source.getExtensions().forEach(e -> n.addExtension(e));
136
        source.getIdentifiers().forEach(i -> n.addIdentifier(i));
137
        source.getMarkers().forEach(m -> n.addMarker(m));
138
        source.getRights().forEach(r -> n.addRights(r));
139
        n.addSources(source.getSources());
140
        for(SpecimenTypeDesignation std :  source.getSpecimenTypeDesignations()) {
141
            std.setTypeSpecimen(n);
142
            n.addSpecimenTypeDesignation(std);
143
         }
144
        source.getSpecimenTypeDesignations().clear();
126 145

  
127 146
    }
128 147

  
......
139 158
     */
140 159
    private boolean canConvert() {
141 160

  
142
        if(du.getClass().equals(DerivedUnit.class)) {
161
        if(source.getClass().equals(DerivedUnit.class)) {
143 162
            return true;
144 163
        }
145
        if(du.getClass().equals(MediaSpecimen.class)){
146
            MediaSpecimen ms = (MediaSpecimen)du;
147
            return ms.getMediaSpecimen() == null;
164
        if(source.getClass().equals(MediaSpecimen.class)){
165
            MediaSpecimen ms = (MediaSpecimen)source;
166
            Media media = ms.getMediaSpecimen();
167
            return media == null;
148 168
        }
149 169

  
150 170
        return false;
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/utility/DerivedUnitConverterIntegrationTest.java
11 11
import static org.junit.Assert.assertEquals;
12 12

  
13 13
import java.io.FileNotFoundException;
14
import java.util.Arrays;
15
import java.util.UUID;
14 16

  
17
import org.hibernate.SessionFactory;
15 18
import org.junit.Test;
16 19
import org.unitils.dbunit.annotation.DataSet;
17 20
import org.unitils.spring.annotation.SpringBeanByType;
18 21

  
19 22
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
20 23
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
24
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
21 25
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
22 26
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
23 27
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
......
34 38
    @SpringBeanByType
35 39
    private IOccurrenceService service;
36 40

  
41
    @SpringBeanByType
42
    SessionFactory sessionFactory;
43

  
37 44
    @Test
38 45
    public void toMediaSpecimen_issue7114() throws DerivedUnitConversionException {
39 46

  
......
79 86

  
80 87
    }
81 88

  
89
    /**
90
     * Test with DerivedUnit which is used in a couple of associations to prevent from
91
     * org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade ...
92
     */
93
    @DataSet("DerivedUnitConverterIntegrationTest.cascadeDelete.xml")
94
    @Test
95
    public void cascadeDelete() throws DerivedUnitConversionException{
96

  
97
        // NOTE:
98
        // normally we would run this test as CdmIntegrationTest, but due to bug #7138
99
        // this is not possible, so we use CdmTransactionalIntegrationTest as super class
100
        // and stop the transaction at the beginning of the test
101
        commit();
102

  
103
        UUID uuid = UUID.fromString("10eceb2c-9b51-458e-8dcd-2cb92cc558a9");
104
        MediaSpecimen du = (MediaSpecimen) service.load(uuid, Arrays.asList(new String[]{"*",
105
                "derivedFrom.*",
106
                "derivedFrom.originals.*",
107
                "derivedFrom.originals.derivationEvents",
108
                "specimenTypeDesignations.typifiedNames.typeDesignations",
109
                //
110
                "derivedFrom.originals.gatheringEvent.$",
111
                "derivedFrom.originals.gatheringEvent.country",
112
                "derivedFrom.originals.gatheringEvent.collectingAreas",
113
                "derivedFrom.originals.gatheringEvent.actor.teamMembers",
114
                "derivedFrom.originals.derivationEvents.derivatives" }));
115
        DerivedUnitConverter<DerivedUnit> duc = DerivedUnitConverterFactory.createDerivedUnitConverter(du, DerivedUnit.class);
116
        DerivedUnit target = duc.convertTo(DerivedUnit.class, SpecimenOrObservationType.HumanObservation);
117

  
118
        //service.save(target); // save is performed in convertTo()
119

  
120
        assertEquals(2, service.list(null, null, null, null, null).size());
121
        assertEquals(1, service.list(DerivedUnit.class, null, null, null, null).size());
122
        assertEquals(1, service.list(FieldUnit.class, null, null, null, null).size());
123

  
124
    }
125

  
82 126
    /**
83 127
     * {@inheritDoc}
84 128
     */
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/utility/DerivedUnitConverterIntegrationTest.cascadeDelete.xml
1
<?xml version='1.0' encoding='UTF-8'?>
2
<dataset>
3
  <TAXONNAME ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="47d9263e-b32a-42af-98ea-5528f154384f" UPDATED="[null]" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Planothidium victori" APPENDEDPHRASE="[null]" FULLTITLECACHE="Planothidium victori in - undefined journal -: 11-45" NOMENCLATURALMICROREFERENCE="11-45" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Planothidium" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Planothidium victori" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="victori" 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]"/>
4
  <REFERENCE ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="45804c65-7df9-42fd-b43a-818a8958c264" UPDATED="2017-11-23 15:32:58.33" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" 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="P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64" ABBREVTITLE="[null]" ABBREVTITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" 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]"/>
5
  <AGENTBASE DTYPE="Team" ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="05555fcb-72bf-49d0-9677-4de87f13e9ed" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Novis, Braidwood &amp; Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood &amp; Kilroy" 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]"/>
6
  <HOMOTYPICALGROUP ID="5000" CREATED="2017-11-23 15:32:58.0" UUID="042ac145-cf9f-47c2-b4a1-8a4350e234eb" UPDATED="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
7
  <DERIVATIONEVENT ID="5000" CREATED="2017-11-24 16:26:03.0" UUID="42610c79-b50f-4d86-94e6-9f775266f6e5" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" INSTITUTION_ID="[null]" TYPE_ID="1998"/>
8
  <GATHERINGEVENT ID="5000" CREATED="2017-11-24 16:26:03.0" UUID="23d40440-38bb-46c1-af11-6e25dcfa0145" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" ABSOLUTEELEVATION="[null]" ABSOLUTEELEVATIONMAX="[null]" ABSOLUTEELEVATIONTEXT="[null]" COLLECTINGMETHOD="[null]" DISTANCETOGROUND="[null]" DISTANCETOGROUNDMAX="[null]" DISTANCETOGROUNDTEXT="[null]" DISTANCETOWATERSURFACE="[null]" DISTANCETOWATERSURFACEMAX="[null]" DISTANCETOWATERSURFACETEXT="[null]" EXACTLOCATION_ERRORRADIUS="[null]" EXACTLOCATION_LATITUDE="[null]" EXACTLOCATION_LONGITUDE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" COUNTRY_ID="[null]" EXACTLOCATION_REFERENCESYSTEM_ID="[null]" LOCALITY_ID="5000"/>
9
  <LANGUAGESTRING ID="5000" CREATED="2017-11-24 16:26:03.0" UUID="c63419cd-445c-4086-a03a-c2d200ad6fe5" UPDATED="[null]" TEXT="Somewhere" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LANGUAGE_ID="406"/>
10
  <SPECIMENOROBSERVATIONBASE DTYPE="FieldUnit" ID="5001" CREATED="2017-11-24 16:26:03.0" UUID="22be718a-6f21-4b74-aae3-bb7d7d659e1c" UPDATED="2017-11-24 16:26:04.307" RECORDBASIS="FU" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Somewhere, FieldNumber." PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="FieldNotes" FIELDNUMBER="FieldNumber" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="5000" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
11
  <SPECIMENOROBSERVATIONBASE DTYPE="MediaSpecimen" ID="5002" CREATED="2017-11-24 16:26:04.0" UUID="10eceb2c-9b51-458e-8dcd-2cb92cc558a9" UPDATED="2017-11-24 16:26:04.308" RECORDBASIS="SI" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Somewhere, FieldNumber (TEST_1)." PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="TEST_1" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="5000" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
12
  <TYPEDESIGNATIONBASE DTYPE="SpecimenTypeDesignation" ID="5000" CREATED="2017-11-24 16:26:03.0" UUID="a1896ae2-4396-4243-988e-3d74058b44ab" UPDATED="[null]" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" NOTDESIGNATED="false" CONSERVEDTYPE="[null]" REJECTEDTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CITATION_ID="5000" TYPESTATUS_ID="821" TYPENAME_ID="[null]" TYPESPECIMEN_ID="5002"/>
13
  <TAXONNAME_TYPEDESIGNATIONBASE TAXONNAME_ID="5000" TYPEDESIGNATIONS_ID="5000"/>
14
  <SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ORIGINALS_ID="5001" DERIVATIONEVENTS_ID="5000"/>
15
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="AgentBase" NEXT_VAL="5001"/>
16
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="AuditEvent" NEXT_VAL="5007"/>
17
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="CdmMetaData" NEXT_VAL="5010"/>
18
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="DefinedTermBase" NEXT_VAL="7193"/>
19
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="DerivationEvent" NEXT_VAL="5002"/>
20
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="GatheringEvent" NEXT_VAL="5001"/>
21
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="GrantedAuthorityImpl" NEXT_VAL="5034"/>
22
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="HomotypicalGroup" NEXT_VAL="5001"/>
23
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="LanguageString" NEXT_VAL="5001"/>
24
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="Media" NEXT_VAL="5001"/>
25
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="MediaRepresentation" NEXT_VAL="5001"/>
26
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="MediaRepresentationPart" NEXT_VAL="5001"/>
27
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="PermissionGroup" NEXT_VAL="5010"/>
28
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="Reference" NEXT_VAL="5001"/>
29
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="Representation" NEXT_VAL="7297"/>
30
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="SpecimenOrObservationBase" NEXT_VAL="5004"/>
31
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="TaxonName" NEXT_VAL="5001"/>
32
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="TermVocabulary" NEXT_VAL="5045"/>
33
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="TypeDesignationBase" NEXT_VAL="5002"/>
34
  <HIBERNATE_SEQUENCES SEQUENCE_NAME="UserAccount" NEXT_VAL="5002"/>
35
</dataset>

Also available in: Unified diff