/** * Generates a filename using the base name of a source element and the extension of a derived element. * * @param source * the source media package element * @param derived * the derived media package element * @return the filename */ protected String getFileNameFromElements(MediaPackageElement source, MediaPackageElement derived) { String fileName = FilenameUtils.getBaseName(source.getURI().getPath()); String fileExtension = FilenameUtils.getExtension(derived.getURI().getPath()); return fileName + "." + fileExtension; }
/** * Creates a reference to the specified media package element. * <p> * Note that the referenced element must already be part of the media package, otherwise a * <code>MediaPackageException</code> will be thrown as the object holding this reference is added to the media * package. * * @param mediaPackageElement * the media package element to refer to */ public MediaPackageReferenceImpl(MediaPackageElement mediaPackageElement) { if (mediaPackageElement == null) throw new IllegalArgumentException("Parameter media package element must not be null"); this.type = mediaPackageElement.getElementType().toString().toLowerCase(); this.identifier = mediaPackageElement.getIdentifier(); if (identifier == null) throw new IllegalArgumentException("Media package element must have an identifier"); this.properties = new HashMap<String, String>(); }
@Override public Boolean apply(MediaPackageElement mpe) { // match is commutative return MediaPackageElements.XACML_POLICY_EPISODE.matches(mpe.getFlavor()); } };
/** * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (!(obj instanceof MediaPackageElement)) return false; MediaPackageElement e = (MediaPackageElement) obj; if (mediaPackage != null && e.getMediaPackage() != null && !mediaPackage.equals(e.getMediaPackage())) return false; if (id != null && !id.equals(e.getIdentifier())) return false; if (uri != null && !uri.equals(e.getURI())) return false; return true; }
transcription.setFlavor(flavor); for (String tag : asList(targetTagOption)) { if (StringUtils.trimToNull(tag) != null) transcription.addTag(tag); String uri = transcription.getURI().toString(); String ext = uri.substring(uri.lastIndexOf(".")); transcription.setURI(workspace.moveTo(transcription.getURI(), mediaPackage.getIdentifier().toString(), transcription.getIdentifier(), "captions." + ext)); } catch (Exception e) { throw new WorkflowOperationException(e);
File file; try { file = workspace.get(element.getURI()); } catch (NotFoundException e) { throw new MediaInspectionException("Unable to find " + element.getURI() + " in the workspace", e); } catch (IOException e) { throw new MediaInspectionException("Error accessing " + element.getURI() + " in the workspace", e); if (element.getChecksum() == null || override) { try { element.setChecksum(Checksum.create(ChecksumType.DEFAULT_TYPE, file)); } catch (IOException e) { throw new MediaInspectionException("Error generating checksum for " + element.getURI(), e); if (element.getMimeType() == null || override) { try { element.setMimeType(MimeTypes.fromURI(file.toURI())); } catch (UnknownFileTypeException e) { logger.info("unable to determine the mime type for {}", file.getName());
@Override public String apply(MediaPackageElement mediaPackageElement) { return mediaPackageElement.getIdentifier(); } };
/** * {@inheritDoc} * * @see org.opencastproject.mediapackage.MediaPackage#getAttachmentsByTags(java.util.Collection) */ @Override public Attachment[] getAttachmentsByTags(Collection<String> tags) { MediaPackageElement[] matchingElements = getElementsByTags(tags); List<Attachment> attachments = new ArrayList<Attachment>(); for (MediaPackageElement element : matchingElements) { if (Attachment.TYPE.equals(element.getElementType())) { attachments.add((Attachment) element); } } return attachments.toArray(new Attachment[attachments.size()]); }
if (element.getIdentifier() == null) { if (element instanceof AbstractMediaPackageElement) { element.setIdentifier(id); } else throw new UnsupportedElementException(element, "Found unkown element without id");
for (String tag : e.getTags()) { if (excludeTags.contains(tag)) continue elementLoop; if (flavor.matches(e.getFlavor())) { matchesFlavor = true; break; if (withTagsAndFlavors && matchesFlavor && e.containsTag(tags)) result.add((T) e); if (!withTagsAndFlavors && ((!flavors.isEmpty() && matchesFlavor) || (!tags.isEmpty() && e.containsTag(tags)))) result.add((T) e);
/** * {@inheritDoc} * * @see org.opencastproject.mediapackage.MediaPackage#getDerived(org.opencastproject.mediapackage.MediaPackageElement, * org.opencastproject.mediapackage.MediaPackageElementFlavor) */ @Override public MediaPackageElement[] getDerived(MediaPackageElement sourceElement, MediaPackageElementFlavor derivateFlavor) { if (sourceElement == null) throw new IllegalArgumentException("Source element cannot be null"); if (derivateFlavor == null) throw new IllegalArgumentException("Derivate flavor cannot be null"); MediaPackageReference reference = new MediaPackageReferenceImpl(sourceElement); List<MediaPackageElement> elements = new ArrayList<MediaPackageElement>(); for (MediaPackageElement element : getElements()) { if (derivateFlavor.equals(element.getFlavor()) && reference.equals(element.getReference())) elements.add(element); } return elements.toArray(new MediaPackageElement[elements.size()]); }
element.setFlavor(flavor); builderPlugin.destroy(); return element;
try { waveformMpe = MediaPackageElementParser.getFromXml(jobPayload); URI newURI = workspace.moveTo(waveformMpe.getURI(), mediaPackage.getIdentifier().toString(), waveformMpe.getIdentifier(), "waveform.png"); waveformMpe.setURI(newURI); } catch (MediaPackageException ex) { throw new WorkflowOperationException("Waveform image file '" + waveformMpe.getURI() + "' not found", ex); } catch (IOException ex) { throw new WorkflowOperationException("Can't get workflow image file '" + waveformMpe.getURI() + "' from workspace"); targetFlavor = new MediaPackageElementFlavor(waveformMpe.getFlavor().getType(), targetFlavor.getSubtype()); targetFlavor = new MediaPackageElementFlavor(targetFlavor.getType(), waveformMpe.getFlavor().getSubtype()); waveformMpe.setFlavor(targetFlavor); for (String tag : asList(targetTagsProperty)) { waveformMpe.addTag(tag);
/** * @see org.opencastproject.mediapackage.MediaPackage#getCatalog(java.lang.String) */ @Override public Catalog getCatalog(String catalogId) { synchronized (elements) { for (MediaPackageElement e : elements) { if (e.getIdentifier().equals(catalogId) && e instanceof Catalog) return (Catalog) e; } } return null; }
/** * {@inheritDoc} * * @see org.opencastproject.mediapackage.MediaPackage#getCatalogsByTags(java.util.Collection) */ @Override public Catalog[] getCatalogsByTags(Collection<String> tags) { MediaPackageElement[] matchingElements = getElementsByTags(tags); List<Catalog> catalogs = new ArrayList<Catalog>(); for (MediaPackageElement element : matchingElements) { if (Catalog.TYPE.equals(element.getElementType())) { catalogs.add((Catalog) element); } } return catalogs.toArray(new Catalog[catalogs.size()]); }
try { for (MediaPackageElement e : src.elements()) { if (dest.getElementById(e.getIdentifier()) == null) dest.add(e); else { if (MergeMode.Replace == mode) { logger.debug("Replacing element " + e.getIdentifier() + " while merging " + dest + " with " + src); dest.remove(dest.getElementById(e.getIdentifier())); dest.add(e); } else if (MergeMode.Skip == mode) { logger.debug("Skipping element " + e.getIdentifier() + " while merging " + dest + " with " + src); continue; } else if (MergeMode.Merge == mode) { logger.debug("Renaming element " + e.getIdentifier() + " while merging " + dest + " with " + src); e.setIdentifier(null); dest.add(e); } else if (MergeMode.Fail == mode) { throw new MediaPackageException("Target media package " + dest + " already contains element with id " + e.getIdentifier());
try { timelinePreviewsMpe = MediaPackageElementParser.getFromXml(jobPayload); timelinePreviewsFile = workspace.get(timelinePreviewsMpe.getURI()); } catch (MediaPackageException ex) { throw new WorkflowOperationException("Timeline preview images file '" + timelinePreviewsMpe.getURI() + "' not found", ex); } catch (IOException ex) { throw new WorkflowOperationException("Can't get workflow image file '" + timelinePreviewsMpe.getURI() + "' from workspace"); timelinePreviewsMpe.getURI(), mediaPackage.getIdentifier().compact()); String fileName = FilenameUtils.getName(timelinePreviewsMpe.getURI().getPath()); URI timelinePreviewsWfrUri = workspace.put(mediaPackage.getIdentifier().compact(), timelinePreviewsMpe.getIdentifier(), fileName, timelinePreviewsInputStream); timelinePreviewsMpe.setURI(timelinePreviewsWfrUri); } catch (FileNotFoundException ex) { throw new WorkflowOperationException("Timeline preview images file " + timelinePreviewsFile.getPath() targetFlavor = new MediaPackageElementFlavor(timelinePreviewsMpe.getFlavor().getType(), targetFlavor.getSubtype()); targetFlavor = new MediaPackageElementFlavor(targetFlavor.getType(), timelinePreviewsMpe.getFlavor().getSubtype()); timelinePreviewsMpe.setFlavor(targetFlavor); if (!StringUtils.isEmpty(targetTagsProperty)) { for (String tag : asList(targetTagsProperty)) { timelinePreviewsMpe.addTag(tag);
/** * @see java.lang.Comparable#compareTo(java.lang.Object) */ @Override public int compareTo(MediaPackageElement o) { return uri.toString().compareTo(o.getURI().toString()); }
/** * {@inheritDoc} * * @see org.opencastproject.mediapackage.MediaPackage#getTrack(java.lang.String) */ @Override public Track getTrack(String trackId) { synchronized (elements) { for (MediaPackageElement e : elements) { if (e.getIdentifier().equals(trackId) && e instanceof Track) return (Track) e; } } return null; }
/** * {@inheritDoc} * * @see org.opencastproject.mediapackage.MediaPackage#getTracksByTags(java.util.Collection) */ @Override public Track[] getTracksByTags(Collection<String> tags) { MediaPackageElement[] matchingElements = getElementsByTags(tags); List<Track> tracks = new ArrayList<Track>(); for (MediaPackageElement element : matchingElements) { if (Track.TYPE.equals(element.getElementType())) { tracks.add((Track) element); } } return tracks.toArray(new Track[tracks.size()]); }