Revision 20fa5279
Added by Andreas Kohlbecker over 6 years ago
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 & Kilroy, P.M. Novis, J. Braidwood & 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 & 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 & Kilroy, P.M. Novis, J. Braidwood & 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 & Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood & 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
ref #7114 fixing delete problems in DerivedUnitConverter and adding according test