/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License * at: * * http://opensource.org/licenses/ecl2.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package org.opencastproject.oaipmh.persistence; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.Lob; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.UniqueConstraint; @Entity(name = "OaiPmhEntity") @IdClass(OaiPmhEntityId.class) @Table(name = "mh_oaipmh", uniqueConstraints = @UniqueConstraint(columnNames = { "modification_date" })) @NamedQueries({ @NamedQuery(name = "OaiPmh.findById", query = "SELECT o FROM OaiPmhEntity o WHERE o.mediaPackageId=:mediaPackageId AND o.repositoryId=:repository AND o.organization=:organization") }) public class OaiPmhEntity { /** media package id, primary key */ @Id @Column(name = "id", length = 128) private String mediaPackageId; /** Organization id */ @Id @Column(name = "organization", length = 128) protected String organization; /** Repository id */ @Id @Column(name = "repo_id") private String repositoryId; /** Series id */ @Column(name = "series_id") private String series; /** Flag indicating deletion. */ @Column(name = "deleted") private boolean deleted = false; /** The last modification date */ @Column( name = "modification_date", insertable = false, updatable = false, // this is H2 syntax - Opencast uses a dedicated database dependent schema in production columnDefinition = "TIMESTAMP AS CURRENT_TIMESTAMP()") @Temporal(TemporalType.TIMESTAMP) private Date modificationDate; /** Serialized media package */ @Lob @Column(name = "mediapackage_xml", length = 65535) private String mediaPackageXML; /** Serialized series dublincore */ @Lob @Column(name = "series_dublincore_xml", length = 65535) private String seriesDublinCoreXML; /** Serialized series ACL XML */ @Lob @Column(name = "series_acl_xml", length = 65535) private String seriesAclXML; /** Serialized episode dublincore */ @Lob @Column(name = "episode_dublincore_xml", length = 65535) private String episodeDublinCoreXML; /** * Default constructor without any import. */ public OaiPmhEntity() { } /** * Returns media package id. * * @return media package id */ public String getMediaPackageId() { return mediaPackageId; } /** * Sets media package id. Id length limit is 128 charachters. * * @param mediaPackageId */ public void setMediaPackageId(String mediaPackageId) { this.mediaPackageId = mediaPackageId; } /** * @return the organization */ public String getOrganization() { return organization; } /** * @param organization * the organization to set */ public void setOrganization(String organization) { this.organization = organization; } /** * @return the deletion flag */ public boolean isDeleted() { return deleted; } /** * Sets the deletion flag * * @param deleted * the deletion flag */ public void setDeleted(boolean deleted) { this.deleted = deleted; } /** * @return the series identifier */ public String getSeries() { return series; } /** * Sets the series identifier * * @param series * the series identifier */ public void setSeries(String series) { this.series = series; } /** * @return the modification date */ public Date getModificationDate() { return modificationDate; } /** * Returns serialized media package. * * @return serialized media package */ public String getMediaPackageXML() { return mediaPackageXML; } /** * Sets serialized media package * * @param mediaPackageXML */ public void setMediaPackageXML(String mediaPackageXML) { this.mediaPackageXML = mediaPackageXML; } /** * @return the repository id */ public String getRepositoryId() { return repositoryId; } /** * Sets the repository id * * @param repositoryId */ public void setRepositoryId(String repositoryId) { this.repositoryId = repositoryId; } /** * @return the serialized series dublincore */ public String getSeriesDublinCoreXML() { return seriesDublinCoreXML; } /** * Sets the serialized series dublincore * * @param seriesDublinCoreXML */ public void setSeriesDublinCoreXML(String seriesDublinCoreXML) { this.seriesDublinCoreXML = seriesDublinCoreXML; } /** * @return the serialized episode dublincore */ public String getEpisodeDublinCoreXML() { return episodeDublinCoreXML; } /** * Sets the serialized episode dublincore * * @param episodeDublinCoreXML */ public void setEpisodeDublinCoreXML(String episodeDublinCoreXML) { this.episodeDublinCoreXML = episodeDublinCoreXML; } public String getSeriesAclXML() { return seriesAclXML; } public void setSeriesAclXML(String seriesAclXML) { this.seriesAclXML = seriesAclXML; } }