From 3b54d0c9efb23a6cba339ba52d6699b0b943436d Mon Sep 17 00:00:00 2001 From: "a.babadshanjan" Date: Fri, 5 Sep 2008 11:02:21 +0000 Subject: [PATCH] Fixed marshalling/unmarshalling of ReferenceBase, TypeDesignationBase, etc. Added saveAll() to CdmEntityDaoBase. --- .../cdm/model/common/OriginalSource.java | 19 +++++++++++++++ .../model/common/RelationshipTermBase.java | 22 ++++++++++++++++++ .../etaxonomy/cdm/model/common/TermBase.java | 4 ++-- .../cdm/model/media/MediaRepresentation.java | 23 ++++++++----------- .../cdm/model/name/TypeDesignationBase.java | 13 +++++------ .../cdm/model/reference/PrintedUnitBase.java | 4 ++++ 6 files changed, 62 insertions(+), 23 deletions(-) diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSource.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSource.java index be1fa59726..0fae607de7 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSource.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/OriginalSource.java @@ -12,6 +12,12 @@ package eu.etaxonomy.cdm.model.common; import javax.persistence.Entity; import javax.persistence.Transient; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlType; import org.apache.log4j.Logger; @@ -23,12 +29,25 @@ import org.apache.log4j.Logger; * @created 08-Nov-2007 13:06:22 */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "OriginalSource", propOrder = { + "idInSource", + "idNamespace" +}) +@XmlRootElement(name = "OriginalSource") @Entity public class OriginalSource extends ReferencedEntityBase implements Cloneable{ + static Logger logger = Logger.getLogger(OriginalSource.class); + //The object's ID in the source, where the alternative string comes from + @XmlElement(name = "IdInSource") private String idInSource; + + @XmlElement(name = "IdNamespace") private String idNamespace; + + @XmlTransient private IdentifiableEntity sourcedObj; /** diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/RelationshipTermBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/RelationshipTermBase.java index 438c6d3cbd..0804e28f6b 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/RelationshipTermBase.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/RelationshipTermBase.java @@ -8,7 +8,14 @@ import javax.persistence.JoinTable; import javax.persistence.MappedSuperclass; import javax.persistence.OneToMany; import javax.persistence.Transient; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlIDREF; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlSchemaType; +import javax.xml.bind.annotation.XmlType; import org.apache.log4j.Logger; import org.hibernate.annotations.Cascade; @@ -16,13 +23,28 @@ import org.hibernate.annotations.CascadeType; import au.com.bytecode.opencsv.CSVWriter; +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "RelationshipTermBase", propOrder = { + "symmetric", + "transitive", + "inverseRepresentations" +}) @XmlRootElement(name = "RelationshipTermBase") @MappedSuperclass public abstract class RelationshipTermBase extends OrderedTermBase { + static Logger logger = Logger.getLogger(RelationshipTermBase.class); + @XmlElement(name = "Symmetric") private boolean symmetric; + + @XmlElement(name = "Transitive") private boolean transitive; + + @XmlElementWrapper(name = "InverseRepresentations") + @XmlElement(name = "InverseRepresentation") + @XmlIDREF + @XmlSchemaType(name = "IDREF") private Set inverseRepresentations = new HashSet(); public RelationshipTermBase() { diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermBase.java index acaf63bb82..ec07de11b1 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermBase.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermBase.java @@ -37,8 +37,8 @@ public abstract class TermBase extends VersionableEntity { @XmlElementWrapper(name = "Representations") @XmlElement(name = "Representation") - @XmlIDREF - @XmlSchemaType(name = "IDREF") +// @XmlIDREF +// @XmlSchemaType(name = "IDREF") private Set representations = new HashSet(); public TermBase(){ diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MediaRepresentation.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MediaRepresentation.java index e61dec77e4..45cf1379dd 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MediaRepresentation.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MediaRepresentation.java @@ -38,8 +38,8 @@ import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "MediaRepresentation", propOrder = { "mimeType", - "suffix" -// "mediaRepresentationParts" + "suffix", + "mediaRepresentationParts" }) @Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @@ -58,19 +58,14 @@ public class MediaRepresentation extends VersionableEntity { @XmlTransient private Media media; - @XmlTransient - //FIXME: ArrayIndexOutOfBoundException during marshalling -// @XmlElementWrapper(name = "MediaRepresentationParts") -// @XmlElement(name = "MediaRepresentationPart", type = ArrayList.class) -// @XmlElements({ -// @XmlElement(name = "AudioFile", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = CategoricalData.class), -// @XmlElement(name = "ImageFile", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = CommonTaxonName.class), -// @XmlElement(name = "MovieFile", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = Distribution.class), -// }) + @XmlElementWrapper(name = "MediaRepresentationParts") + @XmlElements({ + @XmlElement(name = "AudioFile", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = AudioFile.class), + @XmlElement(name = "ImageFile", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = ImageFile.class), + @XmlElement(name = "MovieFile", namespace = "http://etaxonomy.eu/cdm/model/media/1.0", type = MovieFile.class), + }) private List mediaRepresentationParts = new ArrayList(); - // Defining mediaRepresentationParts as ArrayList gives hibernate.AnnotationException - /** * Factory method * @return @@ -138,7 +133,7 @@ public class MediaRepresentation extends VersionableEntity { @OneToMany(mappedBy="mediaRepresentation",fetch= FetchType.LAZY) - @IndexColumn(name="sortIndex", base = 1) + @IndexColumn(name="sortIndex", base = 0) @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE}) public List getParts(){ return this.mediaRepresentationParts; diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TypeDesignationBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TypeDesignationBase.java index 4cb9c370d7..384f92a833 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TypeDesignationBase.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TypeDesignationBase.java @@ -49,7 +49,7 @@ import eu.etaxonomy.cdm.model.reference.ReferenceBase; */ @XmlRootElement(name = "TypeDesignationBase") @XmlType(name = "TypeDesignationBase", propOrder = { -// "typifiedNames", + "typifiedNames", "homotypicalGroup", "isNotDesignated" }) @@ -62,12 +62,11 @@ public abstract class TypeDesignationBase extends ReferencedEntityBase implement @XmlElement(name = "IsNotDesignated") private boolean isNotDesignated; - // Need the bidirectional reference? - @XmlTransient -// @XmlElementWrapper(name = "TypifiedNames") -// @XmlElement(name = "TypifiedName") -// @XmlIDREF -// @XmlSchemaType(name = "IDREF") + @XmlElementWrapper(name = "TypifiedNames") + @XmlElement(name = "TypifiedName") + @XmlIDREF + @XmlSchemaType(name = "IDREF") + // Need these references (bidirectional) to fill table TypeDesignationBase_TaxonNameBase private Set typifiedNames = new HashSet(); @XmlElement(name = "HomotypicalGroup") diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintedUnitBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintedUnitBase.java index cef6a11622..6632c12391 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintedUnitBase.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/PrintedUnitBase.java @@ -15,7 +15,9 @@ import javax.persistence.ManyToOne; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlIDREF; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import org.apache.log4j.Logger; @@ -56,6 +58,8 @@ public abstract class PrintedUnitBase extends PublicationBase { private String pages; @XmlElement(name = "InSeries") + @XmlIDREF + @XmlSchemaType(name = "IDREF") private PrintSeries inSeries; @XmlElement(name = "SeriesPart") -- 2.34.1