All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencastproject.ingest.api.IngestService Maven / Gradle / Ivy

The newest version!
/*
 * 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.ingest.api;

import org.opencastproject.job.api.JobProducer;
import org.opencastproject.mediapackage.MediaPackage;
import org.opencastproject.mediapackage.MediaPackageElementFlavor;
import org.opencastproject.mediapackage.MediaPackageException;
import org.opencastproject.scheduler.api.SchedulerException;
import org.opencastproject.security.api.UnauthorizedException;
import org.opencastproject.util.ConfigurationException;
import org.opencastproject.util.NotFoundException;
import org.opencastproject.workflow.api.WorkflowInstance;

import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.util.Map;

/**
 * Generates {@link MediaPackage}s from media, metadata, and attachments.
 */
public interface IngestService extends JobProducer {

  String UTC_DATE_FORMAT = "yyyyMMdd'T'HHmmss'Z'";
  String START_DATE_KEY = "ingest_start_date";

  /**
   * Ingests the compressed mediapackage and starts the workflow as defined by workflowDefinitionID. The
   * properties specified in properties will be submitted as configuration data to the workflow.
   *
   * @param zippedMediaPackage
   *          A zipped file containing manifest, tracks, catalogs and attachments
   * @param workflowDefinitionID
   *          workflow to be used with this media package
   * @param wfConfig
   *          configuration parameters for the workflow
   * @return Workflow instance.
   * @throws MediaPackageException
   *           if the mediapackage contained in the zip stream is invalid
   * @throws IOException
   *           if reading from the input stream fails
   * @throws IngestException
   *           if an unexpected error occurs
   * @throws NotFoundException
   *           if the workflow definition was not found
   */
  WorkflowInstance addZippedMediaPackage(InputStream zippedMediaPackage, String workflowDefinitionID,
          Map wfConfig) throws MediaPackageException, IOException, IngestException, NotFoundException;

  /**
   * Ingests the compressed mediapackage and starts the workflow as defined by workflowDefinitionID. The
   * properties specified in properties will be submitted as configuration data to the workflow.
   * 

* The steps defined in that workflow will be appended to the already running workflow instance * workflowId. If that workflow can't be found, a {@link NotFoundException} will be thrown. If the * workflowId is null, a new {@link WorkflowInstance} is created. * * @param zippedMediaPackage * A zipped file containing manifest, tracks, catalogs and attachments * @param workflowDefinitionID * workflow to be used with this media package * @param wfConfig * configuration parameters for the workflow * @param workflowId * the workflow instance * @return Workflow instance. * @throws MediaPackageException * if the mediapackage contained in the zip stream is invalid * @throws IOException * if reading from the input stream fails * @throws IngestException * if an unexpected error occurs * @throws NotFoundException * if either one of the workflow definition or workflow instance was not found * @throws UnauthorizedException * if the current user does not have {@link org.opencastproject.security.api.Permissions.Action#READ} on the * workflow instance's mediapackage. * * @deprecated As of release 2.4, the scheduler service is able to store a mediapackage. Thereby the concept of the * pre-procesing workflow is obsolete and there is no more need to resume such a workflow by this method. */ @Deprecated WorkflowInstance addZippedMediaPackage(InputStream zippedMediaPackage, String workflowDefinitionID, Map wfConfig, Long workflowId) throws MediaPackageException, IOException, IngestException, NotFoundException, UnauthorizedException; /** * Create a new MediaPackage in the repository. * * @return The created MediaPackage * @throws MediaPackageException * @throws ConfigurationException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage createMediaPackage() throws MediaPackageException, ConfigurationException, IOException, IngestException; /** * Create a new MediaPackage in the repository. * @param mediaPackageID * The Id for the new Mediapackage * @return The created MediaPackage * @throws MediaPackageException * @throws ConfigurationException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage createMediaPackage(String mediaPackageID) throws MediaPackageException, ConfigurationException, IOException, IngestException; /** * Add a media track to an existing MediaPackage in the repository * * @param uri * The URL of the file to add * @param flavor * The flavor of the media that is being added * @param tags * Tags to add to the Track * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackageManifest The manifest of a specific Opencast MediaPackage element * @throws MediaPackageException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addTrack(URI uri, MediaPackageElementFlavor flavor, String[] tags, MediaPackage mediaPackage) throws MediaPackageException, IOException, IngestException; /** * Add a media track to an existing MediaPackage in the repository * * @param mediaFile * The media file to add * @param flavor * The flavor of the media that is being added * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackage The updated Opencast MediaPackage element * @throws MediaPackageException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addTrack(InputStream mediaFile, String fileName, MediaPackageElementFlavor flavor, MediaPackage mediaPackage) throws MediaPackageException, IOException, IngestException; /** * Add a media track to an existing MediaPackage in the repository * * @param mediaFile * The media file to add * @param flavor * The flavor of the media that is being added * @param tags * Tags to Add to the Track * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackage The updated Opencast MediaPackage element * @throws MediaPackageException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addTrack(InputStream mediaFile, String fileName, MediaPackageElementFlavor flavor, String [] tags, MediaPackage mediaPackage) throws MediaPackageException, IOException, IngestException; /** * Adds a partial media track to the existing MediaPackage in the repository * * @param uri * the URL of the file to add * @param flavor * the flavor of the media that is being added * @param startTime * the start time * @param mediaPackage * the mediapackage * @return the updated mediapackage * @throws IOException * if reading or writing of the partial track fails * @throws IngestException * if an unexpected error occurs */ MediaPackage addPartialTrack(URI uri, MediaPackageElementFlavor flavor, long startTime, MediaPackage mediaPackage) throws IOException, IngestException; /** * Adds a partial media track to the existing MediaPackage in the repository * * @param mediaFile * the media file to add * @param fileName * the file name * @param flavor * the flavor of the media that is being added * @param startTime * the start time * @param mediaPackage * the mediapackage * @return the updated mediapackage * @throws IOException * if reading or writing of the partial track fails * @throws IngestException * if an unexpected error occurs */ MediaPackage addPartialTrack(InputStream mediaFile, String fileName, MediaPackageElementFlavor flavor, long startTime, MediaPackage mediaPackage) throws IOException, IngestException; /** * Add a [metadata catalog] to an existing MediaPackage in the repository * * @param uri * The URL of the file to add * @param flavor * The flavor of the media that is being added * @param tags * Tags to add to the catalog * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackage The updated Opencast MediaPackage element * @throws MediaPackageException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addCatalog(URI uri, MediaPackageElementFlavor flavor, String[] tags, MediaPackage mediaPackage) throws MediaPackageException, IOException, IngestException; /** * Add a [metadata catalog] to an existing MediaPackage in the repository * * @param catalog * The catalog file to add * @param flavor * The flavor of the media that is being added * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackage The updated Opencast MediaPackage element * @throws MediaPackageException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addCatalog(InputStream catalog, String fileName, MediaPackageElementFlavor flavor, MediaPackage mediaPackage) throws MediaPackageException, IOException, IngestException; /** * Add a [metadata catalog] to an existing MediaPackage in the repository * * @param catalog * The catalog file to add * @param flavor * The flavor of the media that is being added * @param tags * The tags for the media that is being added: * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackage The updated Opencast MediaPackage element * @throws IllegalArgumentException * if the data passed to this method are not valid * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addCatalog(InputStream catalog, String fileName, MediaPackageElementFlavor flavor, String[] tags, MediaPackage mediaPackage) throws IllegalArgumentException, IOException, IngestException; /** * Add an attachment to an existing MediaPackage in the repository * * @param uri * The URL of the file to add * @param flavor * The flavor of the media that is being added * @param tags * Tags to add to the attachment * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackage The updated Opencast MediaPackage element * @throws MediaPackageException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addAttachment(URI uri, MediaPackageElementFlavor flavor, String[] tags, MediaPackage mediaPackage) throws MediaPackageException, IOException, IngestException; /** * Add an attachment to an existing MediaPackage in the repository * * @param file * The file to add * @param flavor * The flavor of the media that is being added * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackage The updated Opencast MediaPackage element * @throws MediaPackageException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addAttachment(InputStream file, String fileName, MediaPackageElementFlavor flavor, MediaPackage mediaPackage) throws MediaPackageException, IOException, IngestException; /** * Add an attachment to an existing MediaPackage in the repository * * @param file * The file to add * @param flavor * The flavor of the media that is being added * @param tags * The tags of the media thas is being added * @param mediaPackage * The specific Opencast MediaPackage to which Media is being added * @return MediaPackage The updated Opencast MediaPackage element * @throws MediaPackageException * @throws IOException * @throws IngestException * if an unexpected error occurs */ MediaPackage addAttachment(InputStream file, String fileName, MediaPackageElementFlavor flavor, String[] tags, MediaPackage mediaPackage) throws MediaPackageException, IOException, IngestException; /** * Ingests the mediapackage and starts the default workflow as defined by the * org.opencastproject.workflow.default.definition key, found in the system configuration. * * @param mediaPackage * The specific Opencast MediaPackage being ingested * @return Workflow instance id. * @throws IngestException * if an unexpected error occurs */ WorkflowInstance ingest(MediaPackage mediaPackage) throws IllegalStateException, IngestException; /** * Ingests the mediapackage and starts the workflow as defined by workflowDefinitionID. The properties * specified in properties will be submitted as configuration data to the workflow. * * @param mediaPackage * The specific Opencast MediaPackage being ingested * @param workflowDefinitionID * workflow to be used with this media package * @param properties * configuration properties for the workflow * @return Workflow instance id. * @throws IngestException * if an unexpected error occurs * @throws NotFoundException * if the workflow defintion can't be found */ WorkflowInstance ingest(MediaPackage mediaPackage, String workflowDefinitionID, Map properties) throws IllegalStateException, IngestException, NotFoundException; /** * Ingests the mediapackage and starts the workflow as defined by workflowDefinitionID. The properties * specified in properties will be submitted as configuration data to the workflow. *

* The steps defined in that workflow will be appended to the already running workflow instance * workflowId. If that workflow can't be found, a {@link NotFoundException} will be thrown. If the * workflowId is null, a new {@link WorkflowInstance} is created. * * @param mediaPackage * The specific Opencast MediaPackage being ingested * @param workflowDefinitionID * workflow to be used with this media package * @param properties * configuration properties for the workflow * @param workflowId * the workflow identifier * @return Workflow instance id. * @throws IngestException * if an unexpected error occurs * @throws NotFoundException * if either one of the workflow definition or workflow instance was not found * @throws UnauthorizedException * if the current user does not have {@link org.opencastproject.security.api.Permissions.Action#READ} on the * workflow instance's mediapackage. * * @deprecated As of release 2.4, the scheduler service is able to store a mediapackage. Thereby the concept of the * pre-procesing workflow is obsolete and there is no more need to resume such a workflow by this method. */ @Deprecated WorkflowInstance ingest(MediaPackage mediaPackage, String workflowDefinitionID, Map properties, Long workflowId) throws IllegalStateException, IngestException, NotFoundException, UnauthorizedException; /** * Schedule an event with a given media package. * * @param mediaPackage * The specific Opencast MediaPackage being ingested * @param workflowDefinitionID * workflow to be used with this media package * @param properties * configuration properties for the workflow * @throws IngestException * if an unexpected error occurs * @throws NotFoundException * if the workflow defintion can't be found */ void schedule(MediaPackage mediaPackage, String workflowDefinitionID, Map properties) throws IllegalStateException, IngestException, NotFoundException, UnauthorizedException, SchedulerException; /** * Delete an existing MediaPackage and any linked files from the temporary ingest filestore. * * @param mediaPackage * The specific Opencast MediaPackage * @throws IngestException * if an unexpected error occurs */ void discardMediaPackage(MediaPackage mediaPackage) throws IOException, IngestException; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy