/** * Parses the serialized media package element list. * * @param xml * String to be parsed * @return parsed media package element list * @throws MediaPackageException * if de-serialization fails */ public static List<? extends MediaPackageElement> getArrayFromXml(String xml) throws MediaPackageException { // TODO write real deserialization function try { List<MediaPackageElement> elements = new LinkedList<MediaPackageElement>(); String[] xmlArray = xml.split("###"); for (String xmlElement : xmlArray) { if ("".equals(xmlElement.trim())) continue; elements.add(getFromXml(xmlElement.trim())); } return elements; } catch (Exception e) { if (e instanceof MediaPackageException) { throw (MediaPackageException) e; } else { throw new MediaPackageException(e); } } }
try { final String xml = IOUtils.toString(response.getEntity().getContent(), Charset.forName("utf-8")); return (Publication) MediaPackageElementParser.getFromXml(xml); } catch (final Exception e) { throw new PublicationException(
/** * Remove all files created by the given jobs * @param jobs */ private void cleanupWorkspace(List<Job> jobs) { for (Job job : jobs) { String jobPayload = job.getPayload(); if (StringUtils.isNotEmpty(jobPayload)) { try { MediaPackageElement timelinepreviewsMpe = MediaPackageElementParser.getFromXml(jobPayload); URI timelinepreviewsUri = timelinepreviewsMpe.getURI(); workspace.delete(timelinepreviewsUri); } catch (MediaPackageException ex) { // unexpected job payload logger.error("Can't parse timeline previews attachment from job {}", job.getId()); } catch (NotFoundException ex) { // this is ok, because we want delete the file } catch (IOException ex) { logger.warn("Deleting timeline previews image file from workspace failed: {}", ex.getMessage()); // this is ok, because workspace cleaner will remove old files if they exist } } } }
MediaPackageElement sourceTrack = MediaPackageElementParser.getFromXml(sourceAudioTrackAsXml); if (!Track.TYPE.equals(sourceTrack.getElementType())) return Response.status(Response.Status.BAD_REQUEST).entity("sourceAudioTrack element must be of type track")
MediaPackageElement sourceTrack = MediaPackageElementParser.getFromXml(sourceAudioTrackAsXml); if (!Track.TYPE.equals(sourceTrack.getElementType())) return Response.status(Response.Status.BAD_REQUEST).entity("sourceAudioTrack element must be of type track")
MediaPackageElement sourceTrack = MediaPackageElementParser.getFromXml(trackAsXml); if (!Track.TYPE.equals(sourceTrack.getElementType())) return Response.status(Response.Status.BAD_REQUEST).entity("mediapackage element must be of type track").build();
@POST @Produces(MediaType.TEXT_XML) @Path("enrich") @RestQuery(name = "enrich", description = "Analyze and add missing metadata of a given media file", restParameters = { @RestParameter(description = "MediaPackage Element, that should be enriched with metadata ", isRequired = true, name = "mediaPackageElement", type = RestParameter.Type.TEXT), @RestParameter(description = "Should the existing metadata values remain", isRequired = true, name = "override", type = RestParameter.Type.BOOLEAN), @RestParameter(description = "Options passed to media inspection service", isRequired = false, name = "options", type = RestParameter.Type.STRING) }, reponses = { @RestResponse(description = "XML encoded receipt is returned.", responseCode = HttpServletResponse.SC_OK), @RestResponse(description = "Service unavailabe or not currently present", responseCode = HttpServletResponse.SC_SERVICE_UNAVAILABLE), @RestResponse(description = "Problem retrieving media file or invalid media file or URL.", responseCode = HttpServletResponse.SC_INTERNAL_SERVER_ERROR) }, returnDescription = "Return a receipt to check on the status and outcome of the job") public Response enrichTrack(@FormParam("mediaPackageElement") String mediaPackageElement, @FormParam("override") boolean override, @FormParam("options") String options) { checkNotNull(service); try { Job job = service.enrich(MediaPackageElementParser.getFromXml(mediaPackageElement), override, Options.fromJson(options)); return Response.ok(new JaxbJob(job)).build(); } catch (Exception e) { logger.info(e.getMessage(), e); return Response.serverError().build(); } }
/** * {@inheritDoc} * * @see org.opencastproject.job.api.AbstractJobProducer#process(org.opencastproject.job.api.Job) */ @Override protected String process(Job job) throws Exception { Operation op = null; String operation = job.getOperation(); List<String> arguments = job.getArguments(); try { op = Operation.valueOf(operation); switch (op) { case Waveform: Track track = (Track) MediaPackageElementParser.getFromXml(arguments.get(0)); int pixelsPerMinute = Integer.parseInt(arguments.get(1)); int minWidth = Integer.parseInt(arguments.get(2)); int maxWidth = Integer.parseInt(arguments.get(3)); int height = Integer.parseInt(arguments.get(4)); Attachment waveformMpe = extractWaveform(track, pixelsPerMinute, minWidth, maxWidth, height); return MediaPackageElementParser.getAsXml(waveformMpe); default: throw new ServiceRegistryException("This service can't handle operations of type '" + op + "'"); } } catch (IndexOutOfBoundsException e) { throw new ServiceRegistryException("This argument list for operation '" + op + "' does not meet expectations", e); } catch (MediaPackageException | WaveformServiceException e) { throw new ServiceRegistryException("Error handling operation '" + op + "'", e); } }
@FormParam("maxWidth") int maxWidth, @FormParam("height") int height) { try { MediaPackageElement sourceTrack = MediaPackageElementParser.getFromXml(track); if (!Track.TYPE.equals(sourceTrack.getElementType())) return Response.status(Response.Status.BAD_REQUEST).entity("Track element must be of type track").build();
break; case Enrich: MediaPackageElement element = MediaPackageElementParser.getFromXml(arguments.get(0)); boolean overwrite = Boolean.parseBoolean(arguments.get(1)); options = Options.fromJson(arguments.get(2));
/** * {@inheritDoc} * * @see org.opencastproject.job.api.AbstractJobProducer#process(org.opencastproject.job.api.Job) */ @Override protected String process(Job job) throws Exception { Operation op = null; String operation = job.getOperation(); List<String> arguments = job.getArguments(); try { op = Operation.valueOf(operation); switch (op) { case TimelinePreview: Track track = (Track) MediaPackageElementParser .getFromXml(arguments.get(0)); int imageCount = Integer.parseInt(arguments.get(1)); Attachment timelinePreviewsMpe = generatePreviewImages(job, track, imageCount); return MediaPackageElementParser.getAsXml(timelinePreviewsMpe); default: throw new IllegalStateException("Don't know how to handle operation '" + operation + "'"); } } catch (IllegalArgumentException e) { throw new ServiceRegistryException("This service can't handle operations of type '" + op + "'", e); } catch (IndexOutOfBoundsException e) { throw new ServiceRegistryException("This argument list for operation '" + op + "' does not meet expectations", e); } catch (Exception e) { throw new ServiceRegistryException("Error handling operation '" + op + "'", e); } }
switch (op) { case Analyze: audioTrack = (TrackImpl) MediaPackageElementParser.getFromXml(arguments.get(0)); serialized = analyze(job, audioTrack).map(MediaPackageElementParser.<Track> getAsXml()).getOrElse(""); break; case Normalize: audioTrack = (TrackImpl) MediaPackageElementParser.getFromXml(arguments.get(0)); Float targetRmsLevDb = new Float(arguments.get(1)); serialized = normalize(job, audioTrack, targetRmsLevDb).map(MediaPackageElementParser.<Track> getAsXml())
throw new WorkflowOperationException("Transcription format conversion job did not complete successfully"); transcription = MediaPackageElementParser.getFromXml(job.getPayload());
waveformMpe = MediaPackageElementParser.getFromXml(jobPayload); URI newURI = workspace.moveTo(waveformMpe.getURI(), mediaPackage.getIdentifier().toString(), waveformMpe.getIdentifier(), "waveform.png");
File timelinePreviewsFile = null; try { timelinePreviewsMpe = MediaPackageElementParser.getFromXml(jobPayload); timelinePreviewsFile = workspace.get(timelinePreviewsMpe.getURI()); } catch (MediaPackageException ex) {