Package nl.vpro.domain.media
Class Location
- java.lang.Object
-
- nl.vpro.domain.DomainObject
-
- nl.vpro.domain.AbstractPublishableObject<T>
-
- nl.vpro.domain.media.support.PublishableObject<Location>
-
- nl.vpro.domain.media.Location
-
- All Implemented Interfaces:
Serializable
,Comparable<Location>
,Accountable
,Changeable
,Child<MediaObject>
,Embargo
,Identifiable<Long>
,nl.vpro.domain.media.support.MutableOwnable
,nl.vpro.domain.media.support.Ownable
,TrackableObject
,MutableEmbargo<Location>
,MutableEmbargoDeprecated<Location>
,Publishable<Location>
,Trackable
@Entity public class Location extends PublishableObject<Location> implements nl.vpro.domain.media.support.MutableOwnable, Comparable<Location>, Child<MediaObject>
AMediaObject
can have more than one location which should differ in URL and owner. The location owner describes an origin of the location. Several media suppliers provide their own locations. To prevent conflicts while updating for incoming data, locations for those suppliers are kept in parallel. Note that this class confirms to a natural ordering not consistent with equals.- Since:
- 0.4
- Author:
- Roelof Jan Koekoek
- See Also:
OwnerType
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Location.Builder
static class
Location.IllegalAuthorityRecord
static class
Location.PresentationComparator
-
Field Summary
Fields Modifier and Type Field Description protected AVAttributes
avAttributes
protected Duration
duration
protected MediaObject
mediaObject
protected Long
neboId
protected Duration
offset
protected @NonNull nl.vpro.domain.media.support.OwnerType
owner
protected Platform
platform
static Comparator<Location>
PRESENTATION_ORDER
protected String
programUrl
protected String
subtitles
-
Fields inherited from class nl.vpro.domain.media.support.PublishableObject
PUBLISH_WORKFLOW, workflow
-
Fields inherited from class nl.vpro.domain.AbstractPublishableObject
createdBy, creationInstant, lastModified, lastModifiedBy, lastPublished, publishStart, publishStop
-
Fields inherited from class nl.vpro.domain.DomainObject
id
-
-
Constructor Summary
Constructors Modifier Constructor Description Location()
Location(@NonNull nl.vpro.domain.media.support.OwnerType owner)
Location(String programUrl, AVAttributes avAttributes)
Deprecated.Location(String programUrl, nl.vpro.domain.media.support.OwnerType owner)
Location(String programUrl, nl.vpro.domain.media.support.OwnerType owner, AVAttributes avAttributes)
protected
Location(String programUrl, nl.vpro.domain.media.support.OwnerType owner, AVAttributes avAttributes, Duration duration, Integer bitrate, AVFileFormat avFileFormat, AudioAttributes audioAttributes, VideoAttributes videoAttributes, Platform platform, Instant publishStart, Instant publishStop, Workflow workflow, Instant creationDate)
Location(String programUrl, nl.vpro.domain.media.support.OwnerType owner, Platform platform)
Location(Location source)
Location(Location source, MediaObject parent)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static @NonNull Location.Builder
builder()
int
compareTo(@NonNull Location that)
Locations are basicly order on their programUrlstatic Location
copy(Location source)
static Location
copy(Location source, MediaObject parent)
boolean
equals(Object o)
Authority
getAuthority()
AVAttributes
getAvAttributes()
@Nullable AVFileFormat
getAvFileFormat()
@Nullable Integer
getBitrate()
@Nullable Long
getByteSize()
Duration
getDuration()
Duration
getOffset()
@NonNull nl.vpro.domain.media.support.OwnerType
getOwner()
MediaObject
getParent()
Implementations can optionally become child of a trackable parent where the parents track-ability decides on this child's track-ability.Platform
getPlatform()
String
getProgramUrl()
Instant
getPublishStartInstant()
@Nullable Instant
getPublishStopInstant()
The publish stop of a location is rather complicated: 1.String
getScheme()
String
getSubtitles()
protected String
getUrnPrefix()
boolean
hasDrm()
int
hashCode()
boolean
hasPlatform()
boolean
hasVideoSizing()
static Long
idFromUrn(String urn)
boolean
isAuthorityUpdate()
boolean
onStreaming()
static String
sanitizedProgramUrl(String value)
void
setAuthorityUpdate(Boolean ceresUpdate)
Location
setAvAttributes(AVAttributes avAttributes)
Location
setAvFileFormat(AVFileFormat format)
Location
setBitrate(@Nullable Integer bitrate)
Location
setByteSize(Long byteSize)
void
setDuration(Duration duration)
Location
setOffset(Duration offset)
void
setOwner(@NonNull nl.vpro.domain.media.support.OwnerType owner)
void
setParent(MediaObject mediaObject)
void
setPlatform(Platform platform)
Location
setProgramUrl(String url)
@NonNull Location
setPublishStartInstant(Instant publishStart)
@NonNull Location
setPublishStopInstant(Instant publishStop)
Location
setSubtitles(String subtitles)
void
setWorkflow(Workflow workflow)
String
toString()
static Location
update(Location from, Location to, nl.vpro.domain.media.support.OwnerType owner)
static String
urnForId(long id)
-
Methods inherited from class nl.vpro.domain.media.support.PublishableObject
acceptChanges, beforeUnmarshal, calcCRC32, getHash, getWorkflow, hasChanges, isActivation, isDeactivation, isDeleted, serializeForCalcCRC32
-
Methods inherited from class nl.vpro.domain.AbstractPublishableObject
getCreatedBy, getCreationInstant, getLastModifiedBy, getLastModifiedInstant, getLastPublishedInstant, getUrn, setCreatedBy, setCreationInstant, setLastModifiedBy, setLastModifiedInstant, setLastPublishedInstant, setUrn
-
Methods inherited from class nl.vpro.domain.DomainObject
getId, isPersisted, setId
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface nl.vpro.domain.Embargo
asRange, inPublicationWindow, inPublicationWindow, isUnderEmbargo, isUnderEmbargo, wasUnderEmbargo, wasUnderEmbargo, willBePublished, willBePublished, willBeUnderEmbargo, willBeUnderEmbargo
-
Methods inherited from interface nl.vpro.domain.MutableEmbargo
set
-
Methods inherited from interface nl.vpro.domain.MutableEmbargoDeprecated
getPublishStart, getPublishStop, setPublishStart, setPublishStop
-
Methods inherited from interface nl.vpro.domain.Trackable
getCreationInstant, getLastModifiedInstant
-
Methods inherited from interface nl.vpro.domain.media.TrackableObject
isMerged, isPublishable, isPublishable, isRevocable
-
-
-
-
Field Detail
-
avAttributes
protected AVAttributes avAttributes
-
mediaObject
protected MediaObject mediaObject
-
subtitles
protected String subtitles
-
offset
protected Duration offset
-
duration
protected Duration duration
-
owner
protected @NonNull nl.vpro.domain.media.support.OwnerType owner
-
neboId
protected Long neboId
-
platform
protected Platform platform
-
PRESENTATION_ORDER
public static final Comparator<Location> PRESENTATION_ORDER
-
-
Constructor Detail
-
Location
public Location()
-
Location
public Location(@NonNull nl.vpro.domain.media.support.OwnerType owner)
-
Location
public Location(String programUrl, nl.vpro.domain.media.support.OwnerType owner)
-
Location
public Location(String programUrl, nl.vpro.domain.media.support.OwnerType owner, Platform platform)
-
Location
@Deprecated public Location(String programUrl, AVAttributes avAttributes)
Deprecated.
-
Location
public Location(String programUrl, nl.vpro.domain.media.support.OwnerType owner, AVAttributes avAttributes)
-
Location
protected Location(String programUrl, nl.vpro.domain.media.support.OwnerType owner, AVAttributes avAttributes, Duration duration, Integer bitrate, AVFileFormat avFileFormat, AudioAttributes audioAttributes, VideoAttributes videoAttributes, Platform platform, Instant publishStart, Instant publishStop, Workflow workflow, Instant creationDate)
-
Location
public Location(Location source)
-
Location
public Location(Location source, MediaObject parent)
-
-
Method Detail
-
copy
public static Location copy(Location source, MediaObject parent)
-
urnForId
public static String urnForId(long id)
-
update
public static Location update(Location from, Location to, nl.vpro.domain.media.support.OwnerType owner)
-
getPlatform
public Platform getPlatform()
-
setPlatform
public void setPlatform(Platform platform)
-
getProgramUrl
public String getProgramUrl()
-
getScheme
public String getScheme()
-
getAvAttributes
public AVAttributes getAvAttributes()
-
setAvAttributes
public Location setAvAttributes(AVAttributes avAttributes)
-
getParent
public MediaObject getParent()
Description copied from interface:TrackableObject
Implementations can optionally become child of a trackable parent where the parents track-ability decides on this child's track-ability.- Specified by:
getParent
in interfaceChild<MediaObject>
- Specified by:
getParent
in interfaceTrackableObject
- Returns:
- a trackable parent, null when a parent is not set or no parent-child relation exists
- See Also:
Image.getParent()
,getParent()
,Segment.getParent()
-
setParent
public void setParent(MediaObject mediaObject)
- Specified by:
setParent
in interfaceChild<MediaObject>
-
getUrnPrefix
protected String getUrnPrefix()
- Specified by:
getUrnPrefix
in classAbstractPublishableObject<Location>
-
getSubtitles
public String getSubtitles()
-
getOffset
public Duration getOffset()
-
getDuration
public Duration getDuration()
-
setDuration
public void setDuration(Duration duration)
-
getOwner
public @NonNull nl.vpro.domain.media.support.OwnerType getOwner()
- Specified by:
getOwner
in interfacenl.vpro.domain.media.support.Ownable
-
setOwner
public void setOwner(@NonNull nl.vpro.domain.media.support.OwnerType owner)
- Specified by:
setOwner
in interfacenl.vpro.domain.media.support.MutableOwnable
-
getBitrate
public @Nullable Integer getBitrate()
-
getByteSize
public @Nullable Long getByteSize()
-
getAvFileFormat
public @Nullable AVFileFormat getAvFileFormat()
-
setAvFileFormat
public Location setAvFileFormat(AVFileFormat format)
-
hasPlatform
public boolean hasPlatform()
-
hasDrm
public boolean hasDrm()
-
onStreaming
public boolean onStreaming()
-
hasVideoSizing
public boolean hasVideoSizing()
-
isAuthorityUpdate
public boolean isAuthorityUpdate()
-
setAuthorityUpdate
public void setAuthorityUpdate(Boolean ceresUpdate)
-
getPublishStartInstant
public Instant getPublishStartInstant()
- Specified by:
getPublishStartInstant
in interfaceEmbargo
- Overrides:
getPublishStartInstant
in classAbstractPublishableObject<Location>
-
setPublishStartInstant
public @NonNull Location setPublishStartInstant(Instant publishStart)
- Specified by:
setPublishStartInstant
in interfaceMutableEmbargo<Location>
- Overrides:
setPublishStartInstant
in classAbstractPublishableObject<Location>
-
getPublishStopInstant
public @Nullable Instant getPublishStopInstant()
The publish stop of a location is rather complicated: 1. It is the offline date of the corresponding streaming platform status if that is available. 2. It not, then it is the offline date of the corresponding authority record. 3. It that too is not available then it will fall back to it's own fieldAbstractPublishableObject.getPublishStopInstant()
- Specified by:
getPublishStopInstant
in interfaceEmbargo
- Overrides:
getPublishStopInstant
in classAbstractPublishableObject<Location>
-
setPublishStopInstant
public @NonNull Location setPublishStopInstant(Instant publishStop)
- Specified by:
setPublishStopInstant
in interfaceMutableEmbargo<Location>
- Overrides:
setPublishStopInstant
in classAbstractPublishableObject<Location>
-
getAuthority
public Authority getAuthority()
-
compareTo
public int compareTo(@NonNull Location that)
Locations are basicly order on their programUrl- Specified by:
compareTo
in interfaceComparable<Location>
-
setWorkflow
public void setWorkflow(Workflow workflow)
- Overrides:
setWorkflow
in classPublishableObject<Location>
-
toString
public String toString()
- Overrides:
toString
in classPublishableObject<Location>
-
equals
public boolean equals(Object o)
- Overrides:
equals
in classDomainObject
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classDomainObject
-
builder
public static @NonNull Location.Builder builder()
-
-