/** * 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.scheduler.impl.persistence; import org.opencastproject.scheduler.api.SchedulerService.ReviewStatus; import java.util.Date; import javax.persistence.Access; import javax.persistence.AccessType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; 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 object for storing events in persistence storage. Event ID is stored as primary key, DUBLIN_CORE field is used * to store serialized Dublin core and 'CA_METADATA' is used to store capture agent specific metadata. * */ @Entity(name = "EventEntity") @Access(AccessType.FIELD) @NamedQueries({ // Job queries @NamedQuery(name = "Event.findAll", query = "SELECT e FROM EventEntity e "), @NamedQuery(name = "Event.findByMpId", query = "SELECT e FROM EventEntity e WHERE e.mediaPackageId = :mpId"), @NamedQuery(name = "Event.countAll", query = "SELECT COUNT(e) FROM EventEntity e "), @NamedQuery(name = "Event.countBlacklisted", query = "SELECT COUNT(e) FROM EventEntity e WHERE e.blacklisted = TRUE"), @NamedQuery(name = "Event.countRespones", query = "SELECT COUNT(e) FROM EventEntity e WHERE e.reviewDate IS NOT NULL"), @NamedQuery(name = "Event.countConfirmed", query = "SELECT COUNT(e) FROM EventEntity e WHERE e.reviewStatus = org.opencastproject.scheduler.api.SchedulerService$ReviewStatus.CONFIRMED"), @NamedQuery(name = "Event.countConfirmedByDateRange", query = "SELECT COUNT(e) FROM EventEntity e WHERE e.reviewDate >= :start AND e.reviewDate < :end AND e.reviewStatus = org.opencastproject.scheduler.api.SchedulerService$ReviewStatus.CONFIRMED"), @NamedQuery(name = "Event.countUnconfirmed", query = "SELECT COUNT(e) FROM EventEntity e WHERE e.reviewStatus = org.opencastproject.scheduler.api.SchedulerService$ReviewStatus.UNCONFIRMED"), @NamedQuery(name = "Event.countOptedOut", query = "SELECT COUNT(e) FROM EventEntity e WHERE e.optOut = TRUE") }) @Table(name = "mh_scheduled_event", uniqueConstraints = { @UniqueConstraint(columnNames = { "mediapackage_id" }) }) public class EventEntity { /** Event ID, primary key */ @Id @Column(name = "id") private Long eventId; /** Mediapackage ID */ @Column(name = "mediapackage_id") private String mediaPackageId; /** Serialized Dublin core */ @Lob @Column(name = "dublin_core", length = 65535) private String dublinCoreXML; /** Serialized Capture agent metadata */ @Lob @Column(name = "capture_agent_metadata", length = 65535) private String captureAgentMetadata; /** Serialized access control */ @Lob @Column(name = "access_control", length = 65535) private String accessControl; /** Opt-out status */ @Column(name = "opt_out") private boolean optOut = false; /** Review status */ @Column(name = "review_status") private String reviewStatus = ReviewStatus.UNSENT.toString(); @Column(name = "review_date") @Temporal(TemporalType.TIMESTAMP) private Date reviewDate; /** Opt-out status */ @Column(name = "blacklisted") private boolean blacklisted = false; /** * Default constructor without any import. */ public EventEntity() { } /** * Returns event ID. * * @return event ID */ public Long getEventId() { return eventId; } /** * Sets event ID. * * @param eventId */ public void setEventId(Long eventId) { this.eventId = eventId; } /** * Returns the mediapackage ID. * * @return the mediapackage ID */ public String getMediaPackageId() { return mediaPackageId; } /** * Sets the mediapackage ID. * * @param mediaPackageId * the mediapackage ID */ public void setMediaPackageId(String mediaPackageId) { this.mediaPackageId = mediaPackageId; } /** * Returns serialized Dublin core. * * @return serialized Dublin core */ public String getEventDublinCore() { return dublinCoreXML; } /** * Sets serialized Dublin core. * * @param dublinCoreXML * serialized Dublin core */ public void setEventDublinCore(String dublinCoreXML) { this.dublinCoreXML = dublinCoreXML; } /** * Returns serialized capture agent metadata * * @return serialized metadata */ public String getCaptureAgentMetadata() { return captureAgentMetadata; } /** * Sets serialized capture agent metadata * * @param captureAgentMetadata * serialized metadata */ public void setCaptureAgentMetadata(String captureAgentMetadata) { this.captureAgentMetadata = captureAgentMetadata; } /** * Returns serialized access control * * @return serialized access control */ public String getAccessControl() { return accessControl; } /** * Sets serialized access control. * * @param accessControl * serialized access control */ public void setAccessControl(String accessControl) { this.accessControl = accessControl; } /** * Returns the opted out status * * @return the opted out status */ public boolean isOptOut() { return optOut; } /** * Sets the opted out status * * @param optOut * the opted out status */ public void setOptOut(boolean optOut) { this.optOut = optOut; } /** * Returns the review status * * @return the review status */ public ReviewStatus getReviewStatus() { return ReviewStatus.valueOf(reviewStatus); } /** * Sets the review status * * @param reviewStatus * the review status */ public void setReviewStatus(ReviewStatus reviewStatus) { this.reviewStatus = reviewStatus.toString(); } /** * Returns the review date * * @return the review date */ public Date getReviewDate() { return reviewDate; } /** * Sets the review date * * @param reviewDate * the review date */ public void setReviewDate(Date reviewDate) { this.reviewDate = reviewDate; } /** * Returns the blacklist status * * @return the blacklist status */ public boolean isBlacklisted() { return blacklisted; } /** * Sets the blacklist status * * @param blacklisted * the blacklist status */ public void setBlacklistStatus(boolean blacklisted) { this.blacklisted = blacklisted; } }