import eu.etaxonomy.cdm.model.common.Keyword;\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.common.MultilanguageSet;\r
import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;\r
import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
import eu.etaxonomy.cdm.model.common.TermBase;\r
static Logger logger = Logger.getLogger(RelationshipBase.class);
// FIXME: TaxonBase.class does not cover TaxonNameBase which also implements IRelated.
-// @XmlElement(name = "RelatedFrom", type = Taxon.class)
@XmlElement(name = "RelatedFrom", type = TaxonBase.class)
@XmlIDREF
@XmlSchemaType(name = "IDREF")
private FROM relatedFrom;
-// @XmlElement(name = "RelatedFrom", type = Taxon.class)
@XmlElement(name = "RelatedTo", type = TaxonBase.class)
@XmlIDREF
@XmlSchemaType(name = "IDREF")
@XmlElementWrapper(name = "Representations")
@XmlElement(name = "Representation")
-// @XmlIDREF
-// @XmlSchemaType(name = "IDREF")
+ @XmlIDREF
+ @XmlSchemaType(name = "IDREF")
private Set<Representation> representations = new HashSet<Representation>();
public TermBase(){
package eu.etaxonomy.cdm.model.description;
+import java.util.HashMap;
import java.util.Map;
import eu.etaxonomy.cdm.jaxb.MultilanguageSetAdapter;
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TextData", propOrder = {
- "multilanguageStringMap",
+ "multiLanguageText",
"format"
})
@XmlRootElement(name = "TextData")
static Logger logger = Logger.getLogger(TextData.class);
- @XmlElement(name = "MultilanguageStringMap")
+ //@XmlElement(name = "MultiLanguageText", type = MultilanguageSet.class)
+ @XmlElement(name = "MultiLanguageText")
@XmlJavaTypeAdapter(MultilanguageSetAdapter.class)
- private Map<Language, LanguageString> multilanguageStringMap;
+ private Map<Language, LanguageString> multiLanguageText;
@XmlElement(name = "Format")
@XmlIDREF
@Cascade({CascadeType.SAVE_UPDATE})
public Map<Language, LanguageString> getMultilanguageText() {
initTextSet();
- return multilanguageStringMap;
+ return multiLanguageText;
}
protected void setMultilanguageText(Map<Language, LanguageString> texts) {
- this.multilanguageStringMap = texts;
+ this.multiLanguageText = texts;
}
@Transient
public String getText(Language language) {
initTextSet();
- LanguageString languageString = multilanguageStringMap.get(language);
+ LanguageString languageString = multiLanguageText.get(language);
if (languageString == null){
return null;
}else{
}
}
- @Transient
- public MultilanguageSet getMultilanguageSet() {
- return null; //TODO
- }
-
@Transient
public LanguageString putText(String text, Language language) {
initTextSet();
- LanguageString result = this.multilanguageStringMap.put(language , LanguageString.NewInstance(text, language));
+ LanguageString result = this.multiLanguageText.put(language , LanguageString.NewInstance(text, language));
return (result == null ? null : result);
}
@Transient
return null;
}else{
Language language = languageString.getLanguage();
- return this.multilanguageStringMap.put(language, languageString);
+ return this.multiLanguageText.put(language, languageString);
}
}
public LanguageString removeText(Language language) {
initTextSet();
- return this.multilanguageStringMap.remove(language);
+ return this.multiLanguageText.remove(language);
}
private void initTextSet(){
- if (multilanguageStringMap == null){
- multilanguageStringMap = MultilanguageSet.NewInstance();
+ if (multiLanguageText == null){
+ multiLanguageText = MultilanguageSet.NewInstance();
}
}
public int countLanguages(){
initTextSet();
- return multilanguageStringMap.size();
+ return multiLanguageText.size();
}
package eu.etaxonomy.cdm.model.media;
+import eu.etaxonomy.cdm.jaxb.MultilanguageSetAdapter;
import eu.etaxonomy.cdm.model.agent.Agent;
import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
import eu.etaxonomy.cdm.model.common.Language;
import java.util.*;
import javax.persistence.*;
+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 javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* @author m.doering
* @version 1.0
* @created 08-Nov-2007 13:06:34
*/
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Media", propOrder = {
+ "title",
+ "mediaCreated",
+ "description",
+ "representations",
+ "rights",
+ "artist"
+})
+@XmlRootElement(name = "Media")
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Media extends AnnotatableEntity {
private static final Logger logger = Logger.getLogger(Media.class);
- @XmlElement(name = "Title")
+ @XmlElement(name = "MediaTitle")
+ @XmlJavaTypeAdapter(MultilanguageSetAdapter.class)
private MultilanguageSet title = new MultilanguageSet();
//creation date of the media (not of the record)
@XmlElement(name = "MediaCreated")
private Calendar mediaCreated;
- @XmlElement(name = "Description")
+ @XmlElement(name = "MediaDescription")
+ @XmlJavaTypeAdapter(MultilanguageSetAdapter.class)
private MultilanguageSet description = new MultilanguageSet();
//A single medium such as a picture can have multiple representations in files.
@XmlElement(name = "Right")
private Set<Rights> rights = new HashSet<Rights>();
+ @XmlElement(name = "Artist")
+ @XmlIDREF
+ @XmlSchemaType(name = "IDREF")
private Agent artist;
/**
import java.util.ArrayList;
import java.util.List;
+
import org.apache.log4j.Logger;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.IndexColumn;
import eu.etaxonomy.cdm.model.common.VersionableEntity;
-import eu.etaxonomy.cdm.model.description.CategoricalData;
-import eu.etaxonomy.cdm.model.description.CommonTaxonName;
-import eu.etaxonomy.cdm.model.description.Distribution;
-import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
-import eu.etaxonomy.cdm.model.description.QuantitativeData;
-import eu.etaxonomy.cdm.model.description.TaxonInteraction;
-import eu.etaxonomy.cdm.model.description.TextData;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
@XmlTransient
//FIXME: ArrayIndexOutOfBoundException during marshalling
// @XmlElementWrapper(name = "MediaRepresentationParts")
-// @XmlElement(name = "MediaRepresentationPart")
+// @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),
// })
private List<MediaRepresentationPart> mediaRepresentationParts = new ArrayList<MediaRepresentationPart>();
-
+
+ // Defining mediaRepresentationParts as ArrayList gives hibernate.AnnotationException
+
/**
* Factory method
* @return
@XmlElement(name = "Size")\r
private Integer size;\r
\r
- //the MEdiaRepresentation this MediaRepresentation\r
+ //the MediaRepresentation of this MediaRepresentationPart\r
@XmlTransient\r
private MediaRepresentation mediaRepresentation;\r
\r