/** * @param mediaFormats Media formats */ public MediaArgs(MediaFormat... mediaFormats) { mediaFormats(mediaFormats); }
/** * Sets list of media formats to resolve to. * Additionally {@link #isMediaFormatsMandatory()} is set to true. * @param values Media formats * @return this */ public @NotNull MediaArgs mandatoryMediaFormats(MediaFormat... values) { mediaFormats(values); mediaFormatsMandatory(true); return this; }
@Override public @NotNull MediaBuilder mediaFormats(MediaFormat... values) { this.mediaArgs.mediaFormats(values); return this; }
/** * If a set of media formats is given it is filtered to contain only download media formats. * If no is given a new set of allowed media formats is created by getting from all media formats those marked as "download". * If the result is an empty set of media formats (but downloads are requests) resolution is not successful. * @param mediaArgs Media args * @return true if resolving was successful */ private boolean resolveDownloadMediaFormats(MediaArgs mediaArgs) { if (!mediaArgs.isDownload()) { // not filtering for downloads return true; } List<MediaFormat> candidates = new ArrayList<>(); if (mediaArgs.getMediaFormats() != null) { candidates.addAll(ImmutableList.copyOf(mediaArgs.getMediaFormats())); } else { candidates.addAll(mediaFormatHandler.getMediaFormats()); } MediaFormat[] result = candidates.stream() .filter(MediaFormat::isDownload) .toArray(size -> new MediaFormat[size]); if (result.length > 0) { mediaArgs.mediaFormats(result); return true; } else { return false; } }
/** * Resolve media format names to media formats so all downstream logic has only to handle the resolved media formats. * If resolving fails an exception is thrown. * @param mediaArgs Media args * @return true if resolving was successful. */ private boolean resolveMediaFormats(MediaArgs mediaArgs) { // resolved media formats already set? done. if (mediaArgs.getMediaFormats() != null) { return true; } // no media format names present? done. if (mediaArgs.getMediaFormatNames() == null) { return true; } String[] mediaFormatNames = mediaArgs.getMediaFormatNames(); MediaFormat[] mediaFormats = new MediaFormat[mediaFormatNames.length]; boolean resolutionSuccessful = true; for (int i = 0; i < mediaFormatNames.length; i++) { mediaFormats[i] = mediaFormatHandler.getMediaFormat(mediaFormatNames[i]); if (mediaFormats[i] == null) { log.warn("Media format name '" + mediaFormatNames[i] + "' is invalid."); resolutionSuccessful = false; } } mediaArgs.mediaFormats(mediaFormats); mediaArgs.mediaFormatNames((String[])null); return resolutionSuccessful; }