IMAGEGALLERY BOOLEAN NOT NULL,
CREATEDBY_ID INTEGER,
UPDATEDBY_ID INTEGER,
+ SPECIMEN_ID INTEGER,
TAXON_ID INTEGER,
TAXONNAME_ID INTEGER
);
IMAGEGALLERY BOOLEAN,
CREATEDBY_ID INTEGER,
UPDATEDBY_ID INTEGER,
+ SPECIMEN_ID INTEGER,
TAXON_ID INTEGER,
TAXONNAME_ID INTEGER
);
REVTYPE TINYINT
);
-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SCOPE_AUD;
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE(
- DESCRIPTIONS_ID INTEGER NOT NULL,
- DESCRIBEDSPECIMENOROBSERVATIONS_ID INTEGER NOT NULL
-);
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE;
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD(
- REV INTEGER NOT NULL,
- DESCRIPTIONS_ID INTEGER NOT NULL,
- DESCRIBEDSPECIMENOROBSERVATIONS_ID INTEGER NOT NULL,
- REVTYPE TINYINT
-);
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD;
CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE(
DTYPE VARCHAR(31) NOT NULL,
ID INTEGER NOT NULL,
ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_969 PRIMARY KEY(MEDIA_ID, TITLE_MAPKEY_ID);
ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_A53 PRIMARY KEY(WORKINGSET_ID, DESCRIPTIONS_ID);
ALTER TABLE PUBLIC.SEQUENCE_REFERENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_514 PRIMARY KEY(REV, SEQUENCE_ID, CITATIONS_ID);
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_4D8 PRIMARY KEY(DESCRIPTIONS_ID, DESCRIBEDSPECIMENOROBSERVATIONS_ID);
ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_906 PRIMARY KEY(FEATURETREE_ID, SOURCES_ID);
ALTER TABLE PUBLIC.RIGHTS ADD CONSTRAINT PUBLIC.CONSTRAINT_901 PRIMARY KEY(ID);
ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_909 PRIMARY KEY(REV, MEDIA_ID, SOURCES_ID);
ALTER TABLE PUBLIC.TAXONBASE_RIGHTS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_61 PRIMARY KEY(REV, TAXONBASE_ID, RIGHTS_ID);
ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_1DF PRIMARY KEY(TERMVOCABULARY_ID, SORTINDEX);
ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.CONSTRAINT_69E PRIMARY KEY(ID);
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_DB5 PRIMARY KEY(REV, DESCRIPTIONS_ID, DESCRIBEDSPECIMENOROBSERVATIONS_ID);
ALTER TABLE PUBLIC.USERACCOUNT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_850 PRIMARY KEY(ID, REV);
ALTER TABLE PUBLIC.MEDIAKEY_TAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_3AB PRIMARY KEY(MEDIAKEY_ID, TAXON_ID);
ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_83E PRIMARY KEY(ID);
ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D0152FCC4B FOREIGN KEY(FEATURENODE_ID) REFERENCES PUBLIC.FEATURENODE(ID) NOCHECK;
ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKE644349534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.COLLECTION_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK9AABDB5434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(DESCRIPTIONS_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;
+ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(SPECIMEN_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.STATEDATA_AUD ADD CONSTRAINT PUBLIC.FKDA6A700C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272C8505DB FOREIGN KEY(PRESERVATION_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.MEDIA_RIGHTS ADD CONSTRAINT PUBLIC.FKDB1266D2C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTS(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B74FED214 FOREIGN KEY(SEC_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;
ALTER TABLE PUBLIC.SEQUENCE_MARKER ADD CONSTRAINT PUBLIC.FK3D22B278D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD805C9E3461 FOREIGN KEY(DESCRIBEDSPECIMENOROBSERVATIONS_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74FDF299D00 FOREIGN KEY(ANNOTATIONTYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.AGENTBASE_MARKER ADD CONSTRAINT PUBLIC.FK365D5D6386EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK41ED09739C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.FK668D5B9123DB7F04 FOREIGN KEY(DESCRIPTIVESYSTEM_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;
ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.FKFB1697BB4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;
ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE_AUD ADD CONSTRAINT PUBLIC.FKA8A87CFE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.FKF1B33B5134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK8F2D512A258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;
ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDDE9A3E39 FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD ADD CONSTRAINT PUBLIC.FK8619495F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
IMAGEGALLERY BOOLEAN NOT NULL,
CREATEDBY_ID INTEGER,
UPDATEDBY_ID INTEGER,
+ SPECIMEN_ID INTEGER,
TAXON_ID INTEGER,
TAXONNAME_ID INTEGER
);
IMAGEGALLERY BOOLEAN,
CREATEDBY_ID INTEGER,
UPDATEDBY_ID INTEGER,
+ SPECIMEN_ID INTEGER,
TAXON_ID INTEGER,
TAXONNAME_ID INTEGER
);
REVTYPE TINYINT
);
-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SCOPE_AUD;
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE(
- DESCRIPTIONS_ID INTEGER NOT NULL,
- DESCRIBEDSPECIMENOROBSERVATIONS_ID INTEGER NOT NULL
-);
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE;
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD(
- REV INTEGER NOT NULL,
- DESCRIPTIONS_ID INTEGER NOT NULL,
- DESCRIBEDSPECIMENOROBSERVATIONS_ID INTEGER NOT NULL,
- REVTYPE TINYINT
-);
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD;
CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE(
DTYPE VARCHAR(31) NOT NULL,
ID INTEGER NOT NULL,
ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_969 PRIMARY KEY(MEDIA_ID, TITLE_MAPKEY_ID);
ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_A53 PRIMARY KEY(WORKINGSET_ID, DESCRIPTIONS_ID);
ALTER TABLE PUBLIC.SEQUENCE_REFERENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_514 PRIMARY KEY(REV, SEQUENCE_ID, CITATIONS_ID);
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_4D8 PRIMARY KEY(DESCRIPTIONS_ID, DESCRIBEDSPECIMENOROBSERVATIONS_ID);
ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_906 PRIMARY KEY(FEATURETREE_ID, SOURCES_ID);
ALTER TABLE PUBLIC.RIGHTS ADD CONSTRAINT PUBLIC.CONSTRAINT_901 PRIMARY KEY(ID);
ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_909 PRIMARY KEY(REV, MEDIA_ID, SOURCES_ID);
ALTER TABLE PUBLIC.TAXONBASE_RIGHTS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_61 PRIMARY KEY(REV, TAXONBASE_ID, RIGHTS_ID);
ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_1DF PRIMARY KEY(TERMVOCABULARY_ID, SORTINDEX);
ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.CONSTRAINT_69E PRIMARY KEY(ID);
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_DB5 PRIMARY KEY(REV, DESCRIPTIONS_ID, DESCRIBEDSPECIMENOROBSERVATIONS_ID);
ALTER TABLE PUBLIC.USERACCOUNT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_850 PRIMARY KEY(ID, REV);
ALTER TABLE PUBLIC.MEDIAKEY_TAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_3AB PRIMARY KEY(MEDIAKEY_ID, TAXON_ID);
ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_83E PRIMARY KEY(ID);
ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D0152FCC4B FOREIGN KEY(FEATURENODE_ID) REFERENCES PUBLIC.FEATURENODE(ID) NOCHECK;
ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKE644349534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.COLLECTION_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK9AABDB5434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(DESCRIPTIONS_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;
+ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(SPECIMEN_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.STATEDATA_AUD ADD CONSTRAINT PUBLIC.FKDA6A700C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272C8505DB FOREIGN KEY(PRESERVATION_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.MEDIA_RIGHTS ADD CONSTRAINT PUBLIC.FKDB1266D2C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTS(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B74FED214 FOREIGN KEY(SEC_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;
ALTER TABLE PUBLIC.SEQUENCE_MARKER ADD CONSTRAINT PUBLIC.FK3D22B278D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD805C9E3461 FOREIGN KEY(DESCRIBEDSPECIMENOROBSERVATIONS_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74FDF299D00 FOREIGN KEY(ANNOTATIONTYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.AGENTBASE_MARKER ADD CONSTRAINT PUBLIC.FK365D5D6386EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK41ED09739C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.FK668D5B9123DB7F04 FOREIGN KEY(DESCRIPTIVESYSTEM_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;
ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.FKFB1697BB4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;
ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE_AUD ADD CONSTRAINT PUBLIC.FKA8A87CFE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.FKF1B33B5134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK8F2D512A258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;
ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDDE9A3E39 FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD ADD CONSTRAINT PUBLIC.FK8619495F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
import java.util.HashSet;
import java.util.Set;
+import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlAccessType;
import org.hibernate.search.annotations.ClassBridge;
import org.hibernate.search.annotations.ClassBridges;
import org.hibernate.search.annotations.ContainedIn;
-import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.IndexedEmbedded;
import eu.etaxonomy.cdm.hibernate.search.DescriptionBaseClassBridge;
import eu.etaxonomy.cdm.hibernate.search.GroupByTaxonClassBridge;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.name.NameRelationship;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
/**
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DescriptionBase", propOrder = {
- "describedSpecimenOrObservations",
+ "describedSpecimenOrObservation",
"descriptionSources",
"descriptiveSystem",
"workingSets",
private static final long serialVersionUID = 5504218413819040193L;
private static final Logger logger = Logger.getLogger(DescriptionBase.class);
- @XmlElementWrapper(name = "DescribedSpecimenOrObservations")
- @XmlElement(name = "DescribedSpecimenOrObservation")
+// @XmlElementWrapper(name = "DescribedSpecimenOrObservations")
+// @XmlElement(name = "DescribedSpecimenOrObservation")
+// @XmlIDREF
+// @XmlSchemaType(name="IDREF")
+// @ManyToMany(fetch = FetchType.LAZY)
+// @Cascade(CascadeType.SAVE_UPDATE)
+// private Set<SpecimenOrObservationBase> describedSpecimenOrObservations = new HashSet<SpecimenOrObservationBase>();
+
+ @XmlElement( name = "DescribedSpecimenOrObservation")
+ @ManyToOne(fetch = FetchType.LAZY)
@XmlIDREF
@XmlSchemaType(name="IDREF")
- @ManyToMany(fetch = FetchType.LAZY)
@Cascade(CascadeType.SAVE_UPDATE)
- private Set<SpecimenOrObservationBase> describedSpecimenOrObservations = new HashSet<SpecimenOrObservationBase>();
-
+ @JoinColumn(name="specimen_id")
+ @IndexedEmbedded
+ //TODO maybe move down to specific classes SpecimenDescription (with Cascade.Delete) and TaxonDescription (without Cascade)
+ private SpecimenOrObservationBase describedSpecimenOrObservation;
+
+
@XmlElementWrapper(name = "DescriptionSources")
@XmlElement(name = "DescriptionSource")
@XmlIDREF
@XmlElement(name = "ImageGallery")
private boolean imageGallery;
-
+
/**
- * Returns the set of {@link SpecimenOrObservationBase specimens or observations} involved in
+ * Returns a {@link SpecimenOrObservationBase specimen or observation} involved in
* <i>this</i> description as a whole. {@link TaxonDescription Taxon descriptions} are also often based
* on concrete specimens or observations. For {@link TaxonNameDescription taxon name descriptions}
- * this set should be empty.
- *
- * @see #addDescribedSpecimenOrObservations(SpecimenOrObservationBase)
- * @see #removeDescribedSpecimenOrObservations(SpecimenOrObservationBase)
- */
- public Set<SpecimenOrObservationBase> getDescribedSpecimenOrObservations() {
- return describedSpecimenOrObservations;
- }
-
- /**
- * Adds an existing {@link SpecimenOrObservationBase specimen or observation} to the set of
- * {@link #getDescribedSpecimenOrObservations() specimens or observations} described in <i>this</i>
- * description or which <i>this</i> description is based on.<BR>
- * Due to bidirectionality if <i>this</i> description is a {@link SpecimenDescription specimen description},
- * <i>this</i> description will also be added to the set of specimen
- * descriptions corresponding to the given additional specimen or observation.
- *
- * @param describedSpecimenOrObservation the specimen or observation to be added to <i>this</i> description
- * @see #getDescribedSpecimenOrObservations()
- * @see SpecimenOrObservationBase#addDescription(DescriptionBase)
+ * this attribute should be empty.
+ * To handle sets of specimen or observations one may first group them by a derivation event of type
+ * "Grouping" and then use the grouped unit here.
+ * @return
*/
- public void addDescribedSpecimenOrObservation(SpecimenOrObservationBase describedSpecimenOrObservation) {
- logger.debug("addDescribedSpecimenOrObservations");
- this.describedSpecimenOrObservations.add(describedSpecimenOrObservation);
- if (! describedSpecimenOrObservation.getDescriptions().contains(this)){
- describedSpecimenOrObservation.addDescription(this);
- }
- }
-
- /**
- * Removes one element from the set of {@link #getDescribedSpecimenOrObservations() specimens or observations} involved
- * in <i>this</i> description.<BR>
- * Due to bidirectionality if <i>this</i> description is a {@link SpecimenDescription specimen description},
- * <i>this</i> description will also be removed from the set of specimen
- * descriptions corresponding to the given specimen or observation.
- *
- * @param describedSpecimenOrObservation the specimen or observation which should be removed
- * @see #getDescribedSpecimenOrObservations()
- * @see #addDescribedSpecimenOrObservations(SpecimenOrObservationBase)
- * @see SpecimenOrObservationBase#removeDescription(DescriptionBase)
- */
- public void removeDescribedSpecimenOrObservation(SpecimenOrObservationBase describedSpecimenOrObservation) {
- this.describedSpecimenOrObservations.remove(describedSpecimenOrObservation);
- if (describedSpecimenOrObservation.getDescriptions().contains(this)){
- describedSpecimenOrObservation.removeDescription(this);
- }
- }
-
- /**
+ public SpecimenOrObservationBase getDescribedSpecimenOrObservation() {
+ return describedSpecimenOrObservation;
+ }
+
+
+ /**
+ * @see #getDescribedSpecimenOrObservation()
+ * @param describedSpecimenOrObservation
+ */
+ //TODO bidirectional method should maybe removed as a description should belong to its specimen or taxon
+ public void setDescribedSpecimenOrObservation(SpecimenOrObservationBase describedSpecimenOrObservation) {
+ if (describedSpecimenOrObservation == null ){
+ this.describedSpecimenOrObservation.removeDescription(this);
+ }else if (! describedSpecimenOrObservation.getDescriptions().contains(this)){
+ describedSpecimenOrObservation.addDescription(this);
+ }
+ this.describedSpecimenOrObservation = describedSpecimenOrObservation;
+ }
+
+
+ /**
* Returns the set of {@link Reference references} used as sources for <i>this</i> description as a
* whole. More than one source can be used for a general description without
* assigning for each data element of the description one of those sources.
result.addElement(newElement);
}
- //specimen or observations
- result.describedSpecimenOrObservations = new HashSet<SpecimenOrObservationBase>();
- for (SpecimenOrObservationBase specimenOrObservation : getDescribedSpecimenOrObservations()){
- specimenOrObservation.addDescription(result);
- }
-
//no changes to: imageGallery
return result;
} catch (CloneNotSupportedException e) {
* Creates a new empty specimen description instance.
*/
public static SpecimenDescription NewInstance(SpecimenOrObservationBase specimen){
- SpecimenDescription result = new SpecimenDescription();
- result.addDescribedSpecimenOrObservation(specimen);
- return result;
+ SpecimenDescription description = new SpecimenDescription();
+ description.setDescribedSpecimenOrObservation(specimen);
+ return description;
}
//*********************** CLONE ********************************************************/
private Taxon taxon;
- public void setTaxon(Taxon taxon) {
- this.taxon = taxon;
- }
/**
* Creates a new empty taxon description instance.
}
+ public void setTaxon(Taxon taxon) {
+ this.taxon = taxon;
+ }
+
/**
* Returns the set of {@link NamedArea named areas} indicating the geospatial
* data where <i>this</i> taxon description is valid.
import org.hibernate.annotations.Table;
import org.hibernate.envers.Audited;
import org.hibernate.search.annotations.Analyze;
+import org.hibernate.search.annotations.ContainedIn;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.IndexedEmbedded;
import org.hibernate.search.annotations.NumericField;
import eu.etaxonomy.cdm.jaxb.MultilanguageTextAdapter;
import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.IMultiLanguageTextHolder;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.MultilanguageText;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
@XmlElementWrapper(name = "Descriptions")
@XmlElement(name = "Description")
- @ManyToMany(fetch = FetchType.LAZY,mappedBy="describedSpecimenOrObservations",targetEntity=DescriptionBase.class)
+ @OneToMany(mappedBy="describedSpecimenOrObservation", fetch = FetchType.LAZY)
@Cascade(CascadeType.SAVE_UPDATE)
- @NotNull
+ @ContainedIn
+ @NotNull
private Set<DescriptionBase> descriptions = new HashSet<DescriptionBase>();
-
+
+
@XmlElementWrapper(name = "Determinations")
@XmlElement(name = "Determination")
@OneToMany(mappedBy="identifiedUnit", orphanRemoval=true)
return specimenDescriptions;
}
/**
- * Returns the {@link SpecimenDescription specimen descriptions} this specimen is part of.
+ * Returns the {@link SpecimenDescription specimen descriptions} which act as an image gallery
+ * and which this specimen is part of.
* @see #getDescriptions()
* @return
*/
return specimenDescriptions;
}
+
/**
* Adds a new description to this specimen or observation
* @param description
*/
public void addDescription(DescriptionBase description) {
- this.descriptions.add(description);
- if (! description.getDescribedSpecimenOrObservations().contains(this)){
- description.addDescribedSpecimenOrObservation(this);
+ if (description.getDescribedSpecimenOrObservation() != null){
+ description.getDescribedSpecimenOrObservation().removeDescription(description);
}
-// Method method = ReflectionUtils.findMethod(SpecimenDescription.class, "addDescribedSpecimenOrObservation", new Class[] {SpecimenOrObservationBase.class});
-// ReflectionUtils.makeAccessible(method);
-// ReflectionUtils.invokeMethod(method, description, new Object[] {this});
+ descriptions.add(description);
+ description.setDescribedSpecimenOrObservation(this);
}
/**
* @param description
*/
public void removeDescription(DescriptionBase description) {
- this.descriptions.remove(description);
- if (description.getDescribedSpecimenOrObservations().contains(this)){
- description.removeDescribedSpecimenOrObservation(this);
- }
-// Method method = ReflectionUtils.findMethod(SpecimenDescription.class, "removeDescribedSpecimenOrObservations", new Class[] {SpecimenOrObservationBase.class});
-// ReflectionUtils.makeAccessible(method);
-// ReflectionUtils.invokeMethod(method, description, new Object[] {this});
+ boolean existed = descriptions.remove(description);
+ if (existed){
+ description.setDescribedSpecimenOrObservation(null);
+ }
}
public Set<DerivationEvent> getDerivationEvents() {
private Taxon taxonomicParentCache;
-
@XmlElementWrapper(name = "taxonNodes")
@XmlElement(name = "taxonNode")
@XmlIDREF
@XmlElement(name = "TaxonomicChildrenCount")
@Deprecated //will be removed in future versions. Use Classification/TaxonNode instead
private int taxonomicChildrenCount;
-
-// ************* CONSTRUCTORS *************/
-
- //TODO should be private, but still produces Spring init errors
- @Deprecated
- public Taxon(){
- this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<Taxon>();
- }
-
+
+// ************************* FACTORY METHODS ********************************/
+
/**
- * Class constructor: creates a new (accepted/correct) taxon instance with
+ * Creates a new (accepted/correct) taxon instance with
* the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
* using it.
*
* @param taxonNameBase the taxon name used
* @param sec the reference using the taxon name
- * @see TaxonBase#TaxonBase(TaxonNameBase, Reference)
+ * @see #Taxon(TaxonNameBase, Reference)
*/
- public Taxon(TaxonNameBase taxonNameBase, Reference sec){
- super(taxonNameBase, sec);
- this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<Taxon>();
+ public static Taxon NewInstance(TaxonNameBase taxonNameBase, Reference sec){
+ Taxon result = new Taxon(taxonNameBase, sec);
+ return result;
}
-//********* METHODS **************************************/
-
/**
- * Creates a new (accepted/correct) taxon instance with
+ * Creates a new taxon instance with an unknown status (accepted/synonym) and with
* the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
* using it.
*
* @param sec the reference using the taxon name
* @see #Taxon(TaxonNameBase, Reference)
*/
- public static Taxon NewInstance(TaxonNameBase taxonNameBase, Reference sec){
+ public static Taxon NewUnknownStatusInstance(TaxonNameBase taxonNameBase, Reference sec){
Taxon result = new Taxon(taxonNameBase, sec);
+ result.setTaxonStatusUnknown(true);
return result;
}
+// ************* CONSTRUCTORS *************/
+
+ //TODO should be private, but still produces Spring init errors
+ @Deprecated
+ public Taxon(){
+ this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<Taxon>();
+ }
/**
- * Creates a new taxon instance with an unknown status (accepted/synonym) and with
+ * Class constructor: creates a new (accepted/correct) taxon instance with
* the {@link eu.etaxonomy.cdm.model.name.TaxonNameBase taxon name} used and the {@link eu.etaxonomy.cdm.model.reference.Reference reference}
* using it.
*
* @param taxonNameBase the taxon name used
* @param sec the reference using the taxon name
- * @see #Taxon(TaxonNameBase, Reference)
+ * @see TaxonBase#TaxonBase(TaxonNameBase, Reference)
*/
- public static Taxon NewUnknownStatusInstance(TaxonNameBase taxonNameBase, Reference sec){
- Taxon result = new Taxon(taxonNameBase, sec);
- result.setTaxonStatusUnknown(true);
- return result;
+ public Taxon(TaxonNameBase taxonNameBase, Reference sec){
+ super(taxonNameBase, sec);
+ this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<Taxon>();
}
+//********* METHODS **************************************/
+
+
+
/**
* Returns the set of {@link eu.etaxonomy.cdm.model.description.TaxonDescription taxon descriptions}
* concerning <i>this</i> taxon.
import java.util.Set;\r
import java.util.UUID;\r
\r
-import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.model.common.Marker;\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.cdm.model.description.SpecimenDescription;\r
\r
public String getTitleCache(SpecimenDescription specimenDescription) {\r
String title;\r
- Set<SpecimenOrObservationBase> specimens = specimenDescription.getDescribedSpecimenOrObservations(); \r
- if (specimens.isEmpty()){\r
+ SpecimenOrObservationBase specimen = specimenDescription.getDescribedSpecimenOrObservation(); \r
+ if (specimen == null){\r
title = getFirstPart(specimenDescription);\r
title = title.replace(" for ", "");\r
}else{\r
- title = null;\r
- for (SpecimenOrObservationBase specimen : specimens){\r
- title = CdmUtils.concat(",", title, specimen.getTitleCache());\r
- }\r
+ title = specimen.getTitleCache();\r
title = getFirstPart(specimenDescription) + title;\r
}\r
return title;\r
specimen.setPreservation(null);\r
}\r
\r
+ @Test\r
+ public void testBidirectionalSpecimenDescription(){\r
+ Assert.assertNotNull("Specimen should exist", specimen);\r
+ \r
+ SpecimenDescription desc = SpecimenDescription.NewInstance(specimen);\r
+ Assert.assertNotNull("Description should exist.", desc);\r
+ Assert.assertSame("Descriptions specimen should be set correctly", desc.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertTrue("Specimen should contain description", specimen.getDescriptions().contains(desc));\r
+ \r
+ SpecimenDescription desc2 = SpecimenDescription.NewInstance();\r
+ Assert.assertNotNull("Description should exist.", desc2);\r
+ specimen.addDescription(desc2);\r
+ Assert.assertSame("Description2 specimen should be set correctly", desc2.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertSame("Descriptions specimen should still be set correctly", desc.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertTrue("Specimen should contain description2", specimen.getDescriptions().contains(desc2));\r
+ Assert.assertTrue("Specimen should still contain description", specimen.getDescriptions().contains(desc));\r
+ \r
+ SpecimenDescription desc3 = SpecimenDescription.NewInstance();\r
+ Assert.assertNotNull("Description should exist.", desc3);\r
+ desc3.setDescribedSpecimenOrObservation(specimen);\r
+ Assert.assertSame("Description3 specimen should be set correctly", desc3.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertSame("Descriptions2 specimen should still be set correctly", desc2.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertSame("Descriptions specimen should still be set correctly", desc.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertTrue("Specimen should contain description3", specimen.getDescriptions().contains(desc3));\r
+ Assert.assertTrue("Specimen should still contain description2", specimen.getDescriptions().contains(desc2));\r
+ Assert.assertTrue("Specimen should still contain description", specimen.getDescriptions().contains(desc));\r
+\r
+ \r
+ //change specimen of a given description\r
+ DerivedUnit specimen2 = DerivedUnit.NewPreservedSpecimenInstance();\r
+ Assert.assertNotNull("Specimen should exist.", specimen2);\r
+ desc3.setDescribedSpecimenOrObservation(specimen2);\r
+ Assert.assertSame("Description3 new specimen should be set correctly", desc3.getDescribedSpecimenOrObservation(),specimen2);\r
+ Assert.assertSame("Descriptions2 specimen should still be set correctly", desc2.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertSame("Descriptions specimen should still be set correctly", desc.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertTrue("Specimen2 should contain description3", specimen2.getDescriptions().contains(desc3));\r
+ Assert.assertEquals("Specimen2 should contain exactly 1 description", 1, specimen2.getDescriptions().size());\r
+ Assert.assertFalse("Specimen should no longer contain description3", specimen.getDescriptions().contains(desc3));\r
+ Assert.assertTrue("Specimen should still contain description2", specimen.getDescriptions().contains(desc2));\r
+ Assert.assertTrue("Specimen should still contain description", specimen.getDescriptions().contains(desc));\r
+\r
+ //remove description which is not contained\r
+ specimen.removeDescription(desc3);\r
+ Assert.assertSame("Nothing should have changed", desc3.getDescribedSpecimenOrObservation(),specimen2);\r
+ Assert.assertSame("Nothing should have changed", desc2.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertSame("Nothing should have changed", desc.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertTrue("Nothing should have changed", specimen2.getDescriptions().contains(desc3));\r
+ Assert.assertEquals("Nothing should have changed", 1, specimen2.getDescriptions().size());\r
+ Assert.assertFalse("Nothing should have changed", specimen.getDescriptions().contains(desc3));\r
+ Assert.assertTrue("Nothing should have changed", specimen.getDescriptions().contains(desc2));\r
+ Assert.assertTrue("Nothing should have changed", specimen.getDescriptions().contains(desc));\r
+ \r
+ //remove description\r
+ specimen.removeDescription(desc2);\r
+ Assert.assertNull("Descriptions2 specimen should not exist anymore", desc2.getDescribedSpecimenOrObservation());\r
+ Assert.assertSame("Description3 specimen should still be set correctly", desc3.getDescribedSpecimenOrObservation(),specimen2);\r
+ Assert.assertSame("Descriptions specimen should still be set correctly", desc.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertTrue("Specimen2 should still contain description3", specimen2.getDescriptions().contains(desc3));\r
+ Assert.assertEquals("Specimen2 should still contain exactly 1 description", 1, specimen2.getDescriptions().size());\r
+ Assert.assertFalse("Specimen should not contain description2 anymore", specimen.getDescriptions().contains(desc2));\r
+ Assert.assertFalse("Specimen should still no longer contain description3", specimen.getDescriptions().contains(desc3));\r
+ Assert.assertTrue("Specimen should still contain description", specimen.getDescriptions().contains(desc));\r
+\r
+ //remove description by setting null specimen\r
+ desc3.setDescribedSpecimenOrObservation(null);\r
+ Assert.assertNull("Description3 specimen should not exist anymore", desc3.getDescribedSpecimenOrObservation());\r
+ Assert.assertNull("Descriptions2 specimen should still not exist anymore", desc2.getDescribedSpecimenOrObservation());\r
+ Assert.assertSame("Descriptions specimen should still be set correctly", desc.getDescribedSpecimenOrObservation(),specimen);\r
+ Assert.assertFalse("Specimen2 should not contain description3 anymore", specimen2.getDescriptions().contains(desc3));\r
+ Assert.assertEquals("Specimen2 should contain no description now", 0, specimen2.getDescriptions().size());\r
+ Assert.assertFalse("Specimen should still no longer contain description2", specimen.getDescriptions().contains(desc2));\r
+ Assert.assertFalse("Specimen should still no longer contain description3", specimen.getDescriptions().contains(desc3));\r
+ Assert.assertTrue("Specimen should still contain description", specimen.getDescriptions().contains(desc));\r
+ \r
+ \r
+ }\r
+\r
+ \r
@Test\r
public void testBidirectionalTypeDesignation(){\r
SpecimenTypeDesignation desig1 = SpecimenTypeDesignation.NewInstance();\r
//TODO rename FK column states_id -> stateData_id in DescriptionElementBase_StateData(+AUD) #2923
- //add sortIndex column to TaxonNode and fill with values (compare with FeatureNode filling, however, this
+ //TODO add sortIndex column to TaxonNode and fill with values (compare with FeatureNode filling, however, this
// had a bad performance
+ //specimen descriptions #
+ //TODO add column DescriptionBase.Specimen_ID
+
+ //TODO updated DescriptionBase.Specimen_ID data
+
+ //TODO remove tables DescriptionBase_SpecimenOrObservationBase(_AUD)
+
+
return stepList;
}
IMAGEGALLERY BOOLEAN NOT NULL,
CREATEDBY_ID INTEGER,
UPDATEDBY_ID INTEGER,
+ SPECIMEN_ID INTEGER,
TAXON_ID INTEGER,
TAXONNAME_ID INTEGER
);
IMAGEGALLERY BOOLEAN,
CREATEDBY_ID INTEGER,
UPDATEDBY_ID INTEGER,
+ SPECIMEN_ID INTEGER,
TAXON_ID INTEGER,
TAXONNAME_ID INTEGER
);
REVTYPE TINYINT
);
-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SCOPE_AUD;
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE(
- DESCRIPTIONS_ID INTEGER NOT NULL,
- DESCRIBEDSPECIMENOROBSERVATIONS_ID INTEGER NOT NULL
-);
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE;
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD(
- REV INTEGER NOT NULL,
- DESCRIPTIONS_ID INTEGER NOT NULL,
- DESCRIBEDSPECIMENOROBSERVATIONS_ID INTEGER NOT NULL,
- REVTYPE TINYINT
-);
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD;
CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE(
DTYPE VARCHAR(31) NOT NULL,
ID INTEGER NOT NULL,
ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_969 PRIMARY KEY(MEDIA_ID, TITLE_MAPKEY_ID);
ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_A53 PRIMARY KEY(WORKINGSET_ID, DESCRIPTIONS_ID);
ALTER TABLE PUBLIC.SEQUENCE_REFERENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_514 PRIMARY KEY(REV, SEQUENCE_ID, CITATIONS_ID);
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_4D8 PRIMARY KEY(DESCRIPTIONS_ID, DESCRIBEDSPECIMENOROBSERVATIONS_ID);
ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_906 PRIMARY KEY(FEATURETREE_ID, SOURCES_ID);
ALTER TABLE PUBLIC.RIGHTS ADD CONSTRAINT PUBLIC.CONSTRAINT_901 PRIMARY KEY(ID);
ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_909 PRIMARY KEY(REV, MEDIA_ID, SOURCES_ID);
ALTER TABLE PUBLIC.TAXONBASE_RIGHTS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_61 PRIMARY KEY(REV, TAXONBASE_ID, RIGHTS_ID);
ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_1DF PRIMARY KEY(TERMVOCABULARY_ID, SORTINDEX);
ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.CONSTRAINT_69E PRIMARY KEY(ID);
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_DB5 PRIMARY KEY(REV, DESCRIPTIONS_ID, DESCRIBEDSPECIMENOROBSERVATIONS_ID);
ALTER TABLE PUBLIC.USERACCOUNT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_850 PRIMARY KEY(ID, REV);
ALTER TABLE PUBLIC.MEDIAKEY_TAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_3AB PRIMARY KEY(MEDIAKEY_ID, TAXON_ID);
ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_83E PRIMARY KEY(ID);
ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D0152FCC4B FOREIGN KEY(FEATURENODE_ID) REFERENCES PUBLIC.FEATURENODE(ID) NOCHECK;
ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKE644349534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.COLLECTION_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK9AABDB5434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(DESCRIPTIONS_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;
+ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(SPECIMEN_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.STATEDATA_AUD ADD CONSTRAINT PUBLIC.FKDA6A700C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272C8505DB FOREIGN KEY(PRESERVATION_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.MEDIA_RIGHTS ADD CONSTRAINT PUBLIC.FKDB1266D2C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTS(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B74FED214 FOREIGN KEY(SEC_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;
ALTER TABLE PUBLIC.SEQUENCE_MARKER ADD CONSTRAINT PUBLIC.FK3D22B278D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD805C9E3461 FOREIGN KEY(DESCRIBEDSPECIMENOROBSERVATIONS_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74FDF299D00 FOREIGN KEY(ANNOTATIONTYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.AGENTBASE_MARKER ADD CONSTRAINT PUBLIC.FK365D5D6386EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK41ED09739C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.FK668D5B9123DB7F04 FOREIGN KEY(DESCRIPTIVESYSTEM_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;
ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.FKFB1697BB4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;
ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE_AUD ADD CONSTRAINT PUBLIC.FKA8A87CFE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.FKF1B33B5134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK8F2D512A258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;
ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDDE9A3E39 FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD ADD CONSTRAINT PUBLIC.FK8619495F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
<DESCRIPTIONBASE_RIGHTS_AUD/>
<DESCRIPTIONBASE_SCOPE/>
<DESCRIPTIONBASE_SCOPE_AUD/>
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE/>
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD/>
<DESCRIPTIONELEMENTBASE/>
<DESCRIPTIONELEMENTBASE_ANNOTATION/>
<DESCRIPTIONELEMENTBASE_ANNOTATION_AUD/>
<DESCRIPTIONBASE_RIGHTS_AUD />\r
<DESCRIPTIONBASE_SCOPE />\r
<DESCRIPTIONBASE_SCOPE_AUD />\r
-<DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE />\r
-<DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD />\r
<DESCRIPTIONELEMENTBASE />\r
<DESCRIPTIONELEMENTBASE_ANNOTATION />\r
<DESCRIPTIONELEMENTBASE_ANNOTATION_AUD />\r
<ANNOTATION_AUD ID="1001" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="8cfc78b1-584d-43a0-8f46-820fa656033b" TEXT="A1" LANGUAGE_ID="115"/>\r
<AUDITEVENT REVISIONNUMBER="1000" DATE="2009-06-25 14:42:23.544" TIMESTAMP="1245933743544" UUID="c9c24dd0-6e4d-434b-a310-3e2c6e1ea7c2"/>\r
<AUDITEVENT REVISIONNUMBER="1001" DATE="2009-06-25 14:42:27.778" TIMESTAMP="1245933747778" UUID="1e5f0107-9fd8-4b37-9cea-d2c876098619"/>\r
- <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="1001" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="1002" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="1001" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="1002" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="1001" DESCRIBEDSPECIMENOROBSERVATIONS_ID="1001"/>\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="1002" DESCRIBEDSPECIMENOROBSERVATIONS_ID="1001"/>\r
+ <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="1001" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false" SPECIMEN_ID="1001"/>\r
+ <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="1002" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false" SPECIMEN_ID="1001"/>\r
+ <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="1001" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false" SPECIMEN_ID="1001"/>\r
+ <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="1002" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false" SPECIMEN_ID="1001"/>\r
<SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" RECORDBASIS="1" ID="1001" CREATED="2009-06-25 18:26:26.0" UUID="41539e9c-3764-4f14-9712-2d07d00c8e4c" PROTECTEDTITLECACHE="false" TITLECACHE="" PUBLISH="true"/>\r
<SPECIMENOROBSERVATIONBASE_AUD DTYPE="DerivedUnit" RECORDBASIS="1" ID="1001" REV="1001" REVTYPE="1" CREATED="2009-06-25 18:26:26.0" UUID="41539e9c-3764-4f14-9712-2d07d00c8e4c" PROTECTEDTITLECACHE="false" TITLECACHE="" PUBLISH="true"/>\r
\r
DESCRIPTIONBASE_RIGHTS_AUD*,
DESCRIPTIONBASE_SCOPE*,
DESCRIPTIONBASE_SCOPE_AUD*,
- DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE*,
- DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD*,
DESCRIPTIONELEMENTBASE*,
DESCRIPTIONELEMENTBASE_ANNOTATION*,
DESCRIPTIONELEMENTBASE_ANNOTATION_AUD*,
TITLECACHE CDATA #IMPLIED
CREATEDBY_ID CDATA #IMPLIED
UPDATEDBY_ID CDATA #IMPLIED
- TAXON_FK CDATA #IMPLIED
- TAXONNAME_FK CDATA #IMPLIED
+ SPECIMEN_ID CDATA #IMPLIED
+ TAXON_ID CDATA #IMPLIED
+ TAXONNAME_ID CDATA #IMPLIED
IMAGEGALLERY CDATA #IMPLIED
>
TITLECACHE CDATA #IMPLIED
CREATEDBY_ID CDATA #IMPLIED
UPDATEDBY_ID CDATA #IMPLIED
- TAXON_FK CDATA #IMPLIED
- TAXONNAME_FK CDATA #IMPLIED
+ SPECIMEN_ID CDATA #IMPLIED
+ TAXON_ID CDATA #IMPLIED
+ TAXONNAME_ID CDATA #IMPLIED
IMAGEGALLERY CDATA #IMPLIED
>
REVTYPE CDATA #IMPLIED
>
-<!ELEMENT DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE EMPTY>
-<!ATTLIST DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE
- DESCRIPTIONS_ID CDATA #REQUIRED
- DESCRIBEDSPECIMENOROBSERVATIONS_ID CDATA #REQUIRED
->
-
-<!ELEMENT DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD EMPTY>
-<!ATTLIST DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD
- REV CDATA #REQUIRED
- DESCRIPTIONS_ID CDATA #REQUIRED
- DESCRIBEDSPECIMENOROBSERVATIONS_ID CDATA #REQUIRED
- REVTYPE CDATA #IMPLIED
->
-
<!ELEMENT DESCRIPTIONELEMENTBASE EMPTY>
<!ATTLIST DESCRIPTIONELEMENTBASE
DTYPE CDATA #IMPLIED
*/\r
private void testSpecimenInImageGallery(SpecimenDescription imageGallery, SpecimenOrObservationBase specimen)\r
throws DerivedUnitFacadeNotSupportedException {\r
- Set<SpecimenOrObservationBase> imageGallerySpecimens = imageGallery.getDescribedSpecimenOrObservations();\r
- if (imageGallerySpecimens.size() < 1) {\r
+ SpecimenOrObservationBase imageGallerySpecimen = imageGallery.getDescribedSpecimenOrObservation();\r
+ if (imageGallerySpecimen == null) {\r
throw new DerivedUnitFacadeNotSupportedException(\r
"Image Gallery has no Specimen attached. Please attache according specimen or field unit.");\r
}\r
- if (!imageGallerySpecimens.contains(specimen)) {\r
+ if (! imageGallerySpecimen.equals(specimen)) {\r
throw new DerivedUnitFacadeNotSupportedException(\r
- "Image Gallery has not the facade's field object attached. Please add field object first to image gallery specimenOrObservation list.");\r
+ "Image Gallery has not the facade's field object attached. Please add field object first " +\r
+ "to image gallery specimenOrObservation list.");\r
}\r
}\r
\r
//FIXME check if description is ALWAYS deletable\r
descriptionService.delete(desc);\r
}else{\r
- if (desc.getDescribedSpecimenOrObservations().size()>0){\r
+ if (desc.getDescribedSpecimenOrObservation() != null){\r
String message = "Taxon can't be deleted as it is used in a TaxonDescription" +\r
" which also describes specimens or abservations";\r
throw new ReferencedObjectUndeletableException(message);\r
/**\r
* @author a.mueller\r
* @date 03.06.2010\r
- *\r
*/\r
\r
public class DerivedUnitFacadeFieldUnitCacheStrategyTest extends CdmIntegrationTest {\r
\r
try {\r
SpecimenDescription imageGallery = SpecimenDescription.NewInstance();\r
- imageGallery.addDescribedSpecimenOrObservation(facade.innerFieldUnit());\r
+ imageGallery.setDescribedSpecimenOrObservation(facade.innerFieldUnit());\r
imageGallery.setImageGallery(true);\r
TextData textData = TextData.NewInstance();\r
textData.setFeature(imageFeature);\r
this.service.save(facade.innerDerivedUnit());\r
\r
setComplete(); endTransaction();\r
- try {if (true){printDataSet(System.out, new\r
- String[]{"HIBERNATE_SEQUENCES","SPECIMENOROBSERVATIONBASE","SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT"\r
- ,"DERIVATIONEVENT",\r
- "DESCRIPTIONBASE","DESCRIPTIONELEMENTBASE","DESCRIPTIONELEMENTBASE_MEDIA","DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE",\r
- "MEDIA", "MEDIAREPRESENTATION","MEDIAREPRESENTATIONPART"});}\r
- } catch(Exception e) { logger.warn(e);}\r
+// try {if (true){printDataSet(System.out, new\r
+// String[]{"HIBERNATE_SEQUENCES","SPECIMENOROBSERVATIONBASE","SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT"\r
+// ,"DERIVATIONEVENT",\r
+// "DESCRIPTIONBASE","DESCRIPTIONELEMENTBASE","DESCRIPTIONELEMENTBASE_MEDIA",\r
+// "MEDIA", "MEDIAREPRESENTATION","MEDIAREPRESENTATIONPART"});}\r
+// } catch(Exception e) { logger.warn(e);}\r
\r
}\r
\r
try {\r
SpecimenDescription imageGallery = SpecimenDescription\r
.NewInstance();\r
- imageGallery.addDescribedSpecimenOrObservation(facade\r
- .innerDerivedUnit());\r
+ imageGallery.setDescribedSpecimenOrObservation(facade.innerDerivedUnit());\r
imageGallery.setImageGallery(true);\r
TextData textData = TextData.NewInstance();\r
imageGallery.addElement(textData);\r
// try {if (true){printDataSet(System.out, new\r
// String[]{"HIBERNATE_SEQUENCES","SPECIMENOROBSERVATIONBASE","SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT"\r
// ,"DERIVATIONEVENT",\r
- // "DESCRIPTIONBASE","DESCRIPTIONELEMENTBASE","DESCRIPTIONELEMENTBASE_MEDIA","DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE",\r
+ // "DESCRIPTIONBASE","DESCRIPTIONELEMENTBASE","DESCRIPTIONELEMENTBASE_MEDIA",\r
// "MEDIA", "MEDIAREPRESENTATION","MEDIAREPRESENTATIONPART"});}\r
// } catch(Exception e) { logger.warn(e);}\r
\r
IMAGEGALLERY BOOLEAN NOT NULL,
CREATEDBY_ID INTEGER,
UPDATEDBY_ID INTEGER,
+ SPECIMEN_ID INTEGER,
TAXON_ID INTEGER,
TAXONNAME_ID INTEGER
);
IMAGEGALLERY BOOLEAN,
CREATEDBY_ID INTEGER,
UPDATEDBY_ID INTEGER,
+ SPECIMEN_ID INTEGER,
TAXON_ID INTEGER,
TAXONNAME_ID INTEGER
);
REVTYPE TINYINT
);
-- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SCOPE_AUD;
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE(
- DESCRIPTIONS_ID INTEGER NOT NULL,
- DESCRIBEDSPECIMENOROBSERVATIONS_ID INTEGER NOT NULL
-);
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE;
-CREATE CACHED TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD(
- REV INTEGER NOT NULL,
- DESCRIPTIONS_ID INTEGER NOT NULL,
- DESCRIBEDSPECIMENOROBSERVATIONS_ID INTEGER NOT NULL,
- REVTYPE TINYINT
-);
--- 0 +/- SELECT COUNT(*) FROM PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD;
CREATE CACHED TABLE PUBLIC.DESCRIPTIONELEMENTBASE(
DTYPE VARCHAR(31) NOT NULL,
ID INTEGER NOT NULL,
ALTER TABLE PUBLIC.MEDIA_LANGUAGESTRING ADD CONSTRAINT PUBLIC.CONSTRAINT_969 PRIMARY KEY(MEDIA_ID, TITLE_MAPKEY_ID);
ALTER TABLE PUBLIC.WORKINGSET_DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_A53 PRIMARY KEY(WORKINGSET_ID, DESCRIPTIONS_ID);
ALTER TABLE PUBLIC.SEQUENCE_REFERENCE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_514 PRIMARY KEY(REV, SEQUENCE_ID, CITATIONS_ID);
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_4D8 PRIMARY KEY(DESCRIPTIONS_ID, DESCRIBEDSPECIMENOROBSERVATIONS_ID);
ALTER TABLE PUBLIC.FEATURETREE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.CONSTRAINT_906 PRIMARY KEY(FEATURETREE_ID, SOURCES_ID);
ALTER TABLE PUBLIC.RIGHTS ADD CONSTRAINT PUBLIC.CONSTRAINT_901 PRIMARY KEY(ID);
ALTER TABLE PUBLIC.MEDIA_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_909 PRIMARY KEY(REV, MEDIA_ID, SOURCES_ID);
ALTER TABLE PUBLIC.TAXONBASE_RIGHTS_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_61 PRIMARY KEY(REV, TAXONBASE_ID, RIGHTS_ID);
ALTER TABLE PUBLIC.TERMVOCABULARY_CREDIT ADD CONSTRAINT PUBLIC.CONSTRAINT_1DF PRIMARY KEY(TERMVOCABULARY_ID, SORTINDEX);
ALTER TABLE PUBLIC.FEATURENODE ADD CONSTRAINT PUBLIC.CONSTRAINT_69E PRIMARY KEY(ID);
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_DB5 PRIMARY KEY(REV, DESCRIPTIONS_ID, DESCRIBEDSPECIMENOROBSERVATIONS_ID);
ALTER TABLE PUBLIC.USERACCOUNT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_850 PRIMARY KEY(ID, REV);
ALTER TABLE PUBLIC.MEDIAKEY_TAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_3AB PRIMARY KEY(MEDIAKEY_ID, TAXON_ID);
ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_83E PRIMARY KEY(ID);
ALTER TABLE PUBLIC.FEATURENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D0152FCC4B FOREIGN KEY(FEATURENODE_ID) REFERENCES PUBLIC.FEATURENODE(ID) NOCHECK;
ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKE644349534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.COLLECTION_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK9AABDB5434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(DESCRIPTIONS_ID) REFERENCES PUBLIC.DESCRIPTIONBASE(ID) NOCHECK;
+ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(SPECIMEN_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.STATEDATA_AUD ADD CONSTRAINT PUBLIC.FKDA6A700C34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FK21CA3272C8505DB FOREIGN KEY(PRESERVATION_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.MEDIA_RIGHTS ADD CONSTRAINT PUBLIC.FKDB1266D2C13F7B21 FOREIGN KEY(RIGHTS_ID) REFERENCES PUBLIC.RIGHTS(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONBASE ADD CONSTRAINT PUBLIC.FK9249B49B74FED214 FOREIGN KEY(SEC_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;
ALTER TABLE PUBLIC.SEQUENCE_MARKER ADD CONSTRAINT PUBLIC.FK3D22B278D57FFDD5 FOREIGN KEY(SEQUENCE_ID) REFERENCES PUBLIC.SEQUENCE(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONRELATIONSHIP ADD CONSTRAINT PUBLIC.FK7482BA02AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD805C9E3461 FOREIGN KEY(DESCRIBEDSPECIMENOROBSERVATIONS_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.FK1A21C74FDF299D00 FOREIGN KEY(ANNOTATIONTYPE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.AGENTBASE_MARKER ADD CONSTRAINT PUBLIC.FK365D5D6386EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK41ED09739C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.WORKINGSET ADD CONSTRAINT PUBLIC.FK668D5B9123DB7F04 FOREIGN KEY(DESCRIPTIVESYSTEM_ID) REFERENCES PUBLIC.FEATURETREE(ID) NOCHECK;
ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.FKFB1697BB4FF2DB2C FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK;
ALTER TABLE PUBLIC.AGENTBASE_AGENTBASE_AUD ADD CONSTRAINT PUBLIC.FKA8A87CFE34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
-ALTER TABLE PUBLIC.DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.FKF1B33B5134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
ALTER TABLE PUBLIC.TERMVOCABULARY_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FK8F2D512A258E060 FOREIGN KEY(TERMVOCABULARY_ID) REFERENCES PUBLIC.TERMVOCABULARY(ID) NOCHECK;
ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDDE9A3E39 FOREIGN KEY(TAXON_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK;
ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD ADD CONSTRAINT PUBLIC.FK8619495F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK;
<SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" RECORDBASIS="1" ID="20" PUBLISH="true"/>\r
<SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT/>\r
<DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="10" IMAGEGALLERY="true"/>\r
- <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="10" FEATURE_ID="923" INDESCRIPTION_ID="10"/>\r
+ <DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="10" FEATURE_ID="923" INDESCRIPTION_ID="10" SPECIMEN_ID="20"/>\r
<DESCRIPTIONELEMENTBASE_MEDIA DESCRIPTIONELEMENTBASE_ID="10" MEDIA_ID="10" SORTINDEX="0"/>\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="10" DESCRIBEDSPECIMENOROBSERVATIONS_ID="20"/>\r
<MEDIA DTYPE="Media" ID="10" TITLECACHE="www.derivedUnitImage.de"/>\r
<MEDIAREPRESENTATION ID="10" SUFFIX="png" MEDIA_ID="10"/>\r
<MEDIAREPRESENTATIONPART DTYPE="MediaRepresentationPart" ID="10" SIZE="200" URI="www.derivedUnitImage.de" REPRESENTATION_ID="10" SORTINDEX="0"/>\r
<SPECIMENOROBSERVATIONBASE DTYPE="FieldUnit" ID="31" FIELDNUMBER="12345" PUBLISH="true"/>\r
<SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ORIGINALS_ID="31" DERIVATIONEVENTS_ID="30"/>\r
<DERIVATIONEVENT ID="30"/>\r
- <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="30" IMAGEGALLERY="true"/>\r
+ <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="30" IMAGEGALLERY="true" SPECIMEN_ID="31"/>\r
<DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="30" INDESCRIPTION_ID="30"/>\r
<DESCRIPTIONELEMENTBASE_MEDIA DESCRIPTIONELEMENTBASE_ID="30" MEDIA_ID="30" SORTINDEX="0"/>\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="30" DESCRIBEDSPECIMENOROBSERVATIONS_ID="31"/>\r
<MEDIA DTYPE="Media" ID="30" TITLECACHE="www.abc.de"/>\r
<MEDIAREPRESENTATION ID="30" SUFFIX="jpeg" MEDIA_ID="30"/>\r
<MEDIAREPRESENTATIONPART DTYPE="MediaRepresentationPart" ID="30" SIZE="200" URI="www.abc.de" REPRESENTATION_ID="30" SORTINDEX="0"/>\r
\r
<DERIVATIONEVENT ID="10" CREATED="2011-02-10 10:50:59.0" UUID="42dfd0fb-3d12-4517-8841-9a24e52e88da"/>\r
\r
- <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="10" CREATED="2011-02-10 10:50:59.0" UUID="8cb772e9-1577-45c6-91ab-dbec1413c060" PROTECTEDTITLECACHE="false" TITLECACHE="Field Object Image Gallery" IMAGEGALLERY="true"/>\r
- <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="11" CREATED="2011-02-10 10:50:59.0" UUID="cb03acc4-8363-4020-aeef-ea8a8bcc0fe9" PROTECTEDTITLECACHE="false" TITLECACHE="Derived Unit Image Gallery" IMAGEGALLERY="true"/>\r
+ <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="10" CREATED="2011-02-10 10:50:59.0" UUID="8cb772e9-1577-45c6-91ab-dbec1413c060" PROTECTEDTITLECACHE="false" TITLECACHE="Field Object Image Gallery" IMAGEGALLERY="true" SPECIMEN_ID="11"/>\r
+ <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="11" CREATED="2011-02-10 10:50:59.0" UUID="cb03acc4-8363-4020-aeef-ea8a8bcc0fe9" PROTECTEDTITLECACHE="false" TITLECACHE="Derived Unit Image Gallery" IMAGEGALLERY="true" SPECIMEN_ID="10"/>\r
\r
<DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="10" CREATED="2011-02-10 10:50:59.0" UUID="ad3a172c-396f-44c9-b8a6-c848f6c0e77a" FEATURE_ID="937" INDESCRIPTION_ID="10"/>\r
<DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="11" CREATED="2011-02-10 10:50:59.0" UUID="ab29a73b-e889-4ffa-8e64-563c37ff96f4" FEATURE_ID="937" INDESCRIPTION_ID="11"/>\r
<DESCRIPTIONELEMENTBASE_MEDIA DESCRIPTIONELEMENTBASE_ID="10" MEDIA_ID="10" SORTINDEX="0"/>\r
<DESCRIPTIONELEMENTBASE_MEDIA DESCRIPTIONELEMENTBASE_ID="11" MEDIA_ID="10" SORTINDEX="0"/>\r
\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="10" DESCRIBEDSPECIMENOROBSERVATIONS_ID="11"/>\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="11" DESCRIBEDSPECIMENOROBSERVATIONS_ID="10"/>\r
-\r
<MEDIA DTYPE="Media" ID="10" CREATED="2011-02-10 10:50:59.0" UUID="c4364d8b-90aa-48db-89ad-3acdb2b1f06d" PROTECTEDTITLECACHE="false" TITLECACHE="www.abc.de"/>\r
<MEDIAREPRESENTATION ID="10" CREATED="2011-02-10 10:50:59.0" UUID="4acdb5c3-6925-43cf-8636-545fe0b7a227" SUFFIX="jpeg" MEDIA_ID="10"/>\r
<MEDIAREPRESENTATIONPART DTYPE="MediaRepresentationPart" ID="10" CREATED="2011-02-10 10:50:59.0" UUID="1d19c439-3233-4121-b751-1d8b23cdcd27" SIZE="200" URI="www.abc.de" REPRESENTATION_ID="10" SORTINDEX="0"/>\r
<ANNOTATION_AUD ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 14:42:27.0" UUID="8cfc78b1-584d-43a0-8f46-820fa656033b" TEXT="A1" LANGUAGE_ID="352"/>\r
<AUDITEVENT REVISIONNUMBER="1000" DATE="2009-06-25 14:42:23.544" TIMESTAMP="1245933743544" UUID="c9c24dd0-6e4d-434b-a310-3e2c6e1ea7c2"/>\r
<AUDITEVENT REVISIONNUMBER="1001" DATE="2009-06-25 14:42:27.778" TIMESTAMP="1245933747778" UUID="1e5f0107-9fd8-4b37-9cea-d2c876098619"/>\r
- <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="1" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="2" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="2" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false"/>\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="1" DESCRIBEDSPECIMENOROBSERVATIONS_ID="1"/>\r
- <DESCRIPTIONBASE_SPECIMENOROBSERVATIONBASE DESCRIPTIONS_ID="2" DESCRIBEDSPECIMENOROBSERVATIONS_ID="1"/>\r
+ <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="1" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false" SPECIMEN_ID="1"/>\r
+ <DESCRIPTIONBASE DTYPE="SpecimenDescription" ID="2" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false" SPECIMEN_ID="1"/>\r
+ <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="1" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="40cb1905-f9d8-4647-87ad-40b37a17e85b" PROTECTEDTITLECACHE="true" TITLECACHE="desc2" IMAGEGALLERY="false" SPECIMEN_ID="1"/>\r
+ <DESCRIPTIONBASE_AUD DTYPE="SpecimenDescription" ID="2" REV="1001" REVTYPE="0" CREATED="2009-06-25 18:26:26.0" UUID="3d7d643c-5944-47d6-8938-e884f6d79a70" PROTECTEDTITLECACHE="true" TITLECACHE="desc1" IMAGEGALLERY="false" SPECIMEN_ID="1"/>\r
<SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" RECORDBASIS="1" ID="1" CREATED="2009-06-25 18:26:26.0" UUID="41539e9c-3764-4f14-9712-2d07d00c8e4c" PROTECTEDTITLECACHE="false" TITLECACHE="" PUBLISH="true"/>\r
<SPECIMENOROBSERVATIONBASE_AUD DTYPE="DerivedUnit" RECORDBASIS="1" ID="1" REV="1001" REVTYPE="1" CREATED="2009-06-25 18:26:26.0" UUID="41539e9c-3764-4f14-9712-2d07d00c8e4c" PROTECTEDTITLECACHE="false" TITLECACHE="" PUBLISH="true"/>\r
- <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="3" CREATED="2009-06-25 18:26:26.0" UUID="eb17b80a-9be6-4642-a6a8-b19a318925e6" PROTECTEDTITLECACHE="true" TITLECACHE="desc3" IMAGEGALLERY="false"/>\r
+ <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="3" CREATED="2009-06-25 18:26:26.0" UUID="eb17b80a-9be6-4642-a6a8-b19a318925e6" PROTECTEDTITLECACHE="true" TITLECACHE="desc3" IMAGEGALLERY="false" SPECIMEN_ID="[null]"/>\r
<DESCRIPTIONELEMENTBASE DTYPE="TextData" ID="1" INDESCRIPTION_ID="3" CREATED="2008-12-10 09:56:07.0" UUID="31a0160a-51b2-4565-85cf-2be58cb561d6" UPDATED="2008-12-10 09:56:07.253" FEATURE_ID="922"/>\r
<DESCRIPTIONELEMENTBASE_LANGUAGESTRING DESCRIPTIONELEMENTBASE_ID="1" MULTILANGUAGETEXT_ID="1" MULTILANGUAGETEXT_MAPKEY_ID="406"/>\r
<LANGUAGESTRING ID="1" CREATED="2008-12-10 09:56:07.0" UUID="2a5ceebb-4830-4524-b330-78461bf8cb6b" UPDATED="2008-12-10 09:56:07.253" LANGUAGE_ID="352" TEXT="Lorem ipsum dolor sit amet, consectetur adipiscing elit."/>\r