Example usage for org.apache.commons.fileupload.util Streams asString

List of usage examples for org.apache.commons.fileupload.util Streams asString

Introduction

In this page you can find the example usage for org.apache.commons.fileupload.util Streams asString.

Prototype

public static String asString(InputStream pStream) throws IOException 

Source Link

Document

This convenience method allows to read a org.apache.commons.fileupload.FileItemStream 's content into a string.

Usage

From source file:org.kurento.repository.internal.http.RepositoryHttpServlet.java

private void uploadMultipart(HttpServletRequest req, HttpServletResponse resp, OutputStream repoItemOutputStrem)
        throws IOException {

    log.debug("Multipart detected");

    ServletFileUpload upload = new ServletFileUpload();

    try {/* w w  w .j a v a2  s.c o m*/

        // Parse the request
        FileItemIterator iter = upload.getItemIterator(req);
        while (iter.hasNext()) {
            FileItemStream item = iter.next();
            String name = item.getFieldName();
            try (InputStream stream = item.openStream()) {
                if (item.isFormField()) {
                    // TODO What to do with this?
                    log.debug("Form field {} with value {} detected.", name, Streams.asString(stream));
                } else {

                    // TODO Must we support multiple files uploading?
                    log.debug("File field {} with file name detected.", name, item.getName());

                    log.debug("Start to receive bytes (estimated bytes)",
                            Integer.toString(req.getContentLength()));
                    int bytes = IOUtils.copy(stream, repoItemOutputStrem);
                    resp.setStatus(SC_OK);
                    log.debug("Bytes received: {}", Integer.toString(bytes));
                }
            }
        }

    } catch (FileUploadException e) {
        throw new IOException(e);
    }
}

From source file:org.nema.medical.mint.server.controller.JobsController.java

public void handleUpload(HttpServletRequest request, File jobFolder, List<File> files,
        Map<String, String> params) throws IOException, FileUploadException {

    byte buf[] = new byte[32 * 1024];

    int fileCount = 0;
    LOG.info("creating local files");

    // Parse the request
    ServletFileUpload upload = new ServletFileUpload();
    FileItemIterator iter;//from w  w w  .  ja v a 2 s. c  o m
    iter = upload.getItemIterator(request);
    while (iter.hasNext()) {
        FileItemStream item = iter.next();
        String name = item.getFieldName();
        InputStream in = item.openStream();

        if (item.isFormField()) {
            String value = Streams.asString(in);
            LOG.debug("found form field " + name + " = " + value);
            params.put(name, value);
        } else {
            File file;

            // special handling for first file - must be metadata!
            if (files.isEmpty()) {
                String filename = item.getName();

                LOG.info("loading metadata from " + filename);
                outer: {
                    for (String extension : supportedMetadataExtensions) {
                        if (filename.endsWith(extension)) {
                            filename = "metadata" + extension;
                            break outer;
                        }
                    }

                    //At this point, no proper filename has been established. Last resort, use content type!
                    String contentType = item.getContentType();
                    if ("text/xml".equals(contentType)) {
                        filename = "metadata.xml";
                    } else if ("application/octet-stream".equals(contentType)) {
                        filename = "metadata.gpb";
                    } else {
                        // dump out and write the content... will fail later
                        LOG.error("unable to determine metadata type for " + item.getName());
                        filename = "metadata.dat";
                    }
                }

                file = new File(jobFolder, filename);
            } else {
                final String msgPartName = item.getFieldName();
                try {
                    if (!msgPartName.startsWith("binary")) {
                        throw new Exception();
                    }
                    final String itemIdStr = msgPartName.substring("binary".length());
                    final int itemId = Integer.parseInt(itemIdStr);
                    file = new File(jobFolder, String.format("%d.dat", itemId));
                } catch (final Exception e) {
                    throw new IOException("Invalid message part name for binary data: '" + msgPartName
                            + "'; must start with 'binary', followed by a number");
                }
            }

            if (file.exists()) {
                throw new IOException("File for message part already exists: '" + file.getName() + "'");
            }
            FileOutputStream out = null;
            out = new FileOutputStream(file);
            try {
                while (true) {
                    int len = in.read(buf);
                    if (len < 0)
                        break;
                    out.write(buf, 0, len);
                }
            } finally {
                if (out != null) {
                    out.close();
                    files.add(file);
                    fileCount++;
                }
            }
        }
    }
    LOG.info("created " + fileCount + " files.");
}

From source file:org.onecmdb.ui.gwt.desktop.server.command.ChangeUploadCommand.java

private void getFileItem(HttpServletRequest request) throws FileUploadException, IOException {
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if (!isMultipart) {
        throw new IllegalArgumentException("Not multipart...");
    }/*from w  w w. j  av  a 2 s  .c o m*/

    ServletFileUpload upload = new ServletFileUpload();

    List<String> mdrEntries = new ArrayList<String>();

    // Parse the request
    FileItemIterator iter = upload.getItemIterator(request);
    while (iter.hasNext()) {
        FileItemStream item = iter.next();

        String name = item.getFieldName();
        InputStream stream = item.openStream();
        if (item.isFormField()) {
            System.out.println("Form field " + name + " with value " + Streams.asString(stream) + " detected.");
        } else {
            System.out.println("File field " + name + " with file name " + item.getName() + " detected.");
            // Process the input stream
        }
        String mdrEntry = handleInput(name, stream);
        mdrEntries.add(mdrEntry);
    }
    commitContent(mdrEntries);
}

From source file:org.onecmdb.ui.gwt.desktop.server.servlet.ContentServiceServlet.java

private void getFileItem(HttpServletRequest request, File root) throws FileUploadException, IOException {
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if (!isMultipart) {
        throw new IllegalArgumentException("Not multipart...");
    }//from w  w w  .ja v a  2  s  . c o m

    ServletFileUpload upload = new ServletFileUpload();

    // Parse the request
    FileItemIterator iter = upload.getItemIterator(request);

    String fileName = null;
    String path = null;
    while (iter.hasNext()) {
        FileItemStream item = iter.next();

        String name = item.getFieldName();
        InputStream stream = item.openStream();
        System.out.println("Name=" + item.getName());

        if (item.isFormField()) {
            String value = Streams.asString(stream);
            System.out.println("FormField " + name + "=" + value);
            if (name.equals("name")) {
                fileName = value;
            }
            if (name.equals("path")) {
                path = value;
            }

        } else {
            System.out.println("File field " + name + " with file name " + item.getName() + " detected.");

            File output = new File(root, path + "/" + fileName);
            System.out.println("Write upload to " + output.getPath());

            IOUtil.copyCompletely(stream, new FileOutputStream(output));
        }

    }
}

From source file:org.opencastproject.fileupload.rest.FileUploadRestService.java

@POST
@Produces(MediaType.APPLICATION_XML)//  w  w  w  . ja  v a  2  s.  c  om
@Path("job/{jobID}")
@RestQuery(name = "newjob", description = "Appends the next chunk of data to the file on the server.", pathParameters = {
        @RestParameter(description = "The ID of the upload job", isRequired = false, name = "jobID", type = RestParameter.Type.STRING) }, restParameters = {
                @RestParameter(description = "The number of the current chunk", isRequired = false, name = "chunknumber", type = RestParameter.Type.STRING),
                @RestParameter(description = "The payload", isRequired = false, name = "filedata", type = RestParameter.Type.FILE) }, reponses = {
                        @RestResponse(description = "the chunk data was successfully appended to file on server", responseCode = HttpServletResponse.SC_OK),
                        @RestResponse(description = "the upload job was not found", responseCode = HttpServletResponse.SC_NOT_FOUND),
                        @RestResponse(description = "the request was malformed", responseCode = HttpServletResponse.SC_BAD_REQUEST) }, returnDescription = "The XML representation of the updated upload job")
public Response postPayload(@PathParam("jobID") String jobId, @Context HttpServletRequest request) {
    try {
        if (!ServletFileUpload.isMultipartContent(request)) { // make sure request is "multipart/form-data"
            throw new FileUploadException("Request is not of type multipart/form-data");
        }
        if (uploadService.hasJob(jobId)) { // testing for existence of job here already so we can generate a 404 early
            long chunkNum = 0;
            FileUploadJob job = uploadService.getJob(jobId);
            ServletFileUpload upload = new ServletFileUpload();
            for (FileItemIterator iter = upload.getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                if (item.isFormField()) {
                    String name = item.getFieldName();
                    if (REQUESTFIELD_CHUNKNUM.equalsIgnoreCase(name)) {
                        chunkNum = Long.parseLong(Streams.asString(item.openStream()));
                    }
                } else if (REQUESTFIELD_DATA.equalsIgnoreCase(item.getFieldName())) {
                    uploadService.acceptChunk(job, chunkNum, item.openStream());
                    return Response.ok(job).build();
                }
            }
            throw new FileUploadException("No payload!");
        } else {
            log.warn("Upload job not found: " + jobId);
            return Response.status(Response.Status.NOT_FOUND).build();
        }
    } catch (FileUploadException e) {
        log.error(e.getMessage(), e);
        return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
    } catch (Exception e) {
        log.error(e.getMessage(), e);
        return Response.serverError().entity(buildUnexpectedErrorMessage(e)).build();
    }
}

From source file:org.opencastproject.index.service.impl.IndexServiceImpl.java

@Override
public String createEvent(HttpServletRequest request)
        throws InternalServerErrorException, IllegalArgumentException {
    JSONObject metadataJson = null;//from   w  w  w .jav  a2  s  .  com
    MediaPackage mp = null;
    try {
        if (ServletFileUpload.isMultipartContent(request)) {
            mp = getIngestService().createMediaPackage();

            for (FileItemIterator iter = new ServletFileUpload().getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                String fieldName = item.getFieldName();
                if (item.isFormField()) {
                    if ("metadata".equals(fieldName)) {
                        String metadata = Streams.asString(item.openStream());
                        try {
                            metadataJson = (JSONObject) parser.parse(metadata);
                        } catch (Exception e) {
                            logger.warn("Unable to parse metadata {}", metadata);
                            throw new IllegalArgumentException("Unable to parse metadata");
                        }
                    }
                } else {
                    if ("presenter".equals(item.getFieldName())) {
                        mp = getIngestService().addTrack(item.openStream(), item.getName(),
                                MediaPackageElements.PRESENTER_SOURCE, mp);
                    } else if ("presentation".equals(item.getFieldName())) {
                        mp = getIngestService().addTrack(item.openStream(), item.getName(),
                                MediaPackageElements.PRESENTATION_SOURCE, mp);
                    } else if ("audio".equals(item.getFieldName())) {
                        mp = getIngestService().addTrack(item.openStream(), item.getName(),
                                new MediaPackageElementFlavor("presenter-audio", "source"), mp);
                    } else {
                        logger.warn("Unknown field name found {}", item.getFieldName());
                    }
                }
            }
        } else {
            throw new IllegalArgumentException("No multipart content");
        }

        // MH-10834 If there is only an audio track, change the flavor from presenter-audio/source to presenter/source.
        if (mp.getTracks().length == 1 && mp.getTracks()[0].getFlavor()
                .equals(new MediaPackageElementFlavor("presenter-audio", "source"))) {
            Track audioTrack = mp.getTracks()[0];
            mp.remove(audioTrack);
            audioTrack.setFlavor(MediaPackageElements.PRESENTER_SOURCE);
            mp.add(audioTrack);
        }

        return createEvent(metadataJson, mp);
    } catch (Exception e) {
        logger.error("Unable to create event: {}", ExceptionUtils.getStackTrace(e));
        throw new InternalServerErrorException(e.getMessage());
    }
}

From source file:org.opencastproject.ingest.endpoint.IngestRestService.java

protected Response addMediaPackageElement(HttpServletRequest request, MediaPackageElement.Type type) {
    MediaPackageElementFlavor flavor = null;
    try {//  w w w  .j  av  a2 s.co  m
        InputStream in = null;
        String fileName = null;
        MediaPackage mp = null;
        if (ServletFileUpload.isMultipartContent(request)) {
            boolean isDone = false;
            for (FileItemIterator iter = new ServletFileUpload().getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                String fieldName = item.getFieldName();
                if (item.isFormField()) {
                    if ("flavor".equals(fieldName)) {
                        String flavorString = Streams.asString(item.openStream());
                        if (flavorString != null) {
                            flavor = MediaPackageElementFlavor.parseFlavor(flavorString);
                        }
                    } else if ("mediaPackage".equals(fieldName)) {
                        mp = factory.newMediaPackageBuilder().loadFromXml(item.openStream());
                    }
                } else {
                    // once the body gets read iter.hasNext must not be invoked or the stream can not be read
                    // MH-9579
                    fileName = item.getName();
                    in = item.openStream();
                    isDone = true;
                }
                if (isDone) {
                    break;
                }
            }
            if (MediaPackageSupport.sanityCheck(mp).isSome())
                return Response.serverError().status(Status.BAD_REQUEST).build();
            switch (type) {
            case Attachment:
                mp = ingestService.addAttachment(in, fileName, flavor, mp);
                break;
            case Catalog:
                mp = ingestService.addCatalog(in, fileName, flavor, mp);
                break;
            case Track:
                mp = ingestService.addTrack(in, fileName, flavor, mp);
                break;
            default:
                throw new IllegalStateException("Type must be one of track, catalog, or attachment");
            }
            // ingestService.ingest(mp);
            return Response.ok(MediaPackageParser.getAsXml(mp)).build();
        }
        return Response.serverError().status(Status.BAD_REQUEST).build();
    } catch (Exception e) {
        logger.warn(e.getMessage(), e);
        return Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build();
    }
}

From source file:org.opencastproject.ingest.endpoint.IngestRestService.java

@POST
@Produces(MediaType.TEXT_XML)/*from  w ww . ja  va2s. c  om*/
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("addMediaPackage/{wdID}")
@RestQuery(name = "addMediaPackage", description = "Create and ingest media package from media tracks with additional Dublin Core metadata. Notice: It is mandatory to set a title for the recording. This can be done with the 'title' form field or by supplying a DC catalog with a title included.", pathParameters = {
        @RestParameter(description = "Workflow definition id", isRequired = true, name = "wdID", type = RestParameter.Type.STRING) }, restParameters = {
                @RestParameter(description = "The kind of media track. This has to be specified in the request prior to each media track", isRequired = true, name = "flavor", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "abstract", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "accessRights", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "available", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "contributor", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "coverage", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "created", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "creator", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "date", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "description", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "extent", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "format", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "identifier", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "isPartOf", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "isReferencedBy", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "isReplacedBy", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "language", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "license", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "publisher", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "relation", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "replaces", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "rights", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "rightsHolder", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "source", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "spatial", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "subject", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "temporal", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "title", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "type", type = RestParameter.Type.STRING),
                @RestParameter(description = "URL of episode DublinCore Catalog", isRequired = false, name = "episodeDCCatalogUri", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode DublinCore Catalog", isRequired = false, name = "episodeDCCatalog", type = RestParameter.Type.STRING),
                @RestParameter(description = "URL of series DublinCore Catalog", isRequired = false, name = "seriesDCCatalogUri", type = RestParameter.Type.STRING),
                @RestParameter(description = "Series DublinCore Catalog", isRequired = false, name = "seriesDCCatalog", type = RestParameter.Type.STRING),
                @RestParameter(description = "URL of a media track file", isRequired = false, name = "mediaUri", type = RestParameter.Type.STRING) }, bodyParameter = @RestParameter(description = "The media track file", isRequired = true, name = "BODY", type = RestParameter.Type.FILE), reponses = {
                        @RestResponse(description = "Returns augmented media package", responseCode = HttpServletResponse.SC_OK),
                        @RestResponse(description = "", responseCode = HttpServletResponse.SC_BAD_REQUEST),
                        @RestResponse(description = "", responseCode = HttpServletResponse.SC_INTERNAL_SERVER_ERROR) }, returnDescription = "")
public Response addMediaPackage(@Context HttpServletRequest request, @PathParam("wdID") String wdID) {
    MediaPackageElementFlavor flavor = null;
    try {
        MediaPackage mp = ingestService.createMediaPackage();
        DublinCoreCatalog dcc = null;
        Map<String, String> workflowProperties = new HashMap<String, String>();
        int seriesDCCatalogNumber = 0;
        int episodeDCCatalogNumber = 0;
        boolean hasMedia = false;
        if (ServletFileUpload.isMultipartContent(request)) {
            for (FileItemIterator iter = new ServletFileUpload().getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                if (item.isFormField()) {
                    String fieldName = item.getFieldName();
                    String value = Streams.asString(item.openStream());
                    /* Ignore empty fields */
                    if ("".equals(value)) {
                        continue;
                    }

                    /* Remember? the flavor for the next media. */
                    if ("flavor".equals(fieldName)) {
                        flavor = MediaPackageElementFlavor.parseFlavor(value);

                        /* Fields for DC catalog */
                    } else if (dcterms.contains(fieldName)) {
                        if ("identifier".equals(fieldName)) {
                            /* Use the identifier for the mediapackage */
                            mp.setIdentifier(new IdImpl(value));
                        }
                        EName en = new EName(DublinCore.TERMS_NS_URI, fieldName);
                        if (dcc == null) {
                            dcc = dublinCoreService.newInstance();
                        }
                        dcc.add(en, value);

                        /* Episode metadata by URL */
                    } else if ("episodeDCCatalogUri".equals(fieldName)) {
                        try {
                            URI dcurl = new URI(value);
                            ingestService.addCatalog(dcurl, MediaPackageElements.EPISODE, mp);
                            episodeDCCatalogNumber += 1;
                        } catch (java.net.URISyntaxException e) {
                            /* Parameter was not a valid URL: Return 400 Bad Request */
                            logger.warn(e.getMessage(), e);
                            return Response.serverError().status(Status.BAD_REQUEST).build();
                        }

                        /* Episode metadata DC catalog (XML) as string */
                    } else if ("episodeDCCatalog".equals(fieldName)) {
                        String fileName = "episode" + episodeDCCatalogNumber + ".xml";
                        episodeDCCatalogNumber += 1;
                        InputStream is = new ByteArrayInputStream(value.getBytes("UTF-8"));
                        ingestService.addCatalog(is, fileName, MediaPackageElements.EPISODE, mp);

                        /* Series by URL */
                    } else if ("seriesDCCatalogUri".equals(fieldName)) {
                        try {
                            URI dcurl = new URI(value);
                            ingestService.addCatalog(dcurl, MediaPackageElements.SERIES, mp);
                        } catch (java.net.URISyntaxException e) {
                            /* Parameter was not a valid URL: Return 400 Bad Request */
                            logger.warn(e.getMessage(), e);
                            return Response.serverError().status(Status.BAD_REQUEST).build();
                        }

                        /* Series DC catalog (XML) as string */
                    } else if ("seriesDCCatalog".equals(fieldName)) {
                        String fileName = "series" + seriesDCCatalogNumber + ".xml";
                        seriesDCCatalogNumber += 1;
                        InputStream is = new ByteArrayInputStream(value.getBytes("UTF-8"));
                        ingestService.addCatalog(is, fileName, MediaPackageElements.SERIES, mp);

                        /* Add media files by URL */
                    } else if ("mediaUri".equals(fieldName)) {
                        if (flavor == null) {
                            /* A flavor has to be specified in the request prior the media file */
                            return Response.serverError().status(Status.BAD_REQUEST).build();
                        }
                        URI mediaUrl;
                        try {
                            mediaUrl = new URI(value);
                        } catch (java.net.URISyntaxException e) {
                            /* Parameter was not a valid URL: Return 400 Bad Request */
                            logger.warn(e.getMessage(), e);
                            return Response.serverError().status(Status.BAD_REQUEST).build();
                        }
                        ingestService.addTrack(mediaUrl, flavor, mp);
                        hasMedia = true;

                    } else {
                        /* Tread everything else as workflow properties */
                        workflowProperties.put(fieldName, value);
                    }

                    /* Media files as request parameter */
                } else {
                    if (flavor == null) {
                        /* A flavor has to be specified in the request prior the video file */
                        return Response.serverError().status(Status.BAD_REQUEST).build();
                    }
                    ingestService.addTrack(item.openStream(), item.getName(), flavor, mp);
                    hasMedia = true;
                }
            }

            /* Check if we got any media. Fail if not. */
            if (!hasMedia) {
                logger.warn("Rejected ingest without actual media.");
                return Response.serverError().status(Status.BAD_REQUEST).build();
            }

            Catalog[] dccs = mp.getCatalogs(MediaPackageElements.EPISODE);
            for (int i = 0; i < dccs.length; i++) {
                EName en = new EName(DublinCore.TERMS_NS_URI, "identifier");
                String id = ((DublinCoreCatalog) dccs[i]).getFirst(en);
                if (id != null) {
                    mp.setIdentifier(new IdImpl(id));
                }
            }

            /* Add episode mediapackage if metadata were send separately */
            if (dcc != null) {
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                dcc.toXml(out, true);
                InputStream in = new ByteArrayInputStream(out.toByteArray());
                ingestService.addCatalog(in, "dublincore.xml", MediaPackageElements.EPISODE, mp);

                /* Check if we have metadata for the episode */
            } else if (episodeDCCatalogNumber == 0) {
                logger.warn("Rejected ingest without episode metadata. At least provide a title.");
                return Response.serverError().status(Status.BAD_REQUEST).build();
            }

            WorkflowInstance workflow = (wdID == null) ? ingestService.ingest(mp)
                    : ingestService.ingest(mp, wdID, workflowProperties);
            return Response.ok(workflow).build();
        }
        return Response.serverError().status(Status.BAD_REQUEST).build();
    } catch (Exception e) {
        logger.warn(e.getMessage(), e);
        return Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build();
    }
}

From source file:org.opencastproject.ingest.endpoint.IngestRestService.java

/**
 * Add an elements to a MediaPackage and keeps track of the progress of the upload. Returns an HTML that triggers the
 * host sites UploadListener.uploadComplete javascript event Returns an HTML that triggers the host sites
 * UploadListener.uplaodFailed javascript event in case of error
 * /*from ww  w .  j ava2  s .  c o  m*/
 * @param jobId
 *          of the upload job
 * @param request
 *          containing the file, the flavor and the MediaPackage to which it should be added
 * @return HTML that calls the UploadListener.uploadComplete javascript handler
 */
@POST
@Path("addElementMonitored/{jobId}")
@Produces(MediaType.TEXT_HTML)
public Response addElementMonitored(@PathParam("jobId") String jobId, @Context HttpServletRequest request) {
    UploadJob job = null;
    MediaPackage mp = null;
    String fileName = null;
    MediaPackageElementFlavor flavor = null;
    String elementType = "track";
    EntityManager em = null;
    try {
        em = emf.createEntityManager();
        try { // try to get UploadJob, responde 404 if not successful
            // job = em.find(UploadJob.class, jobId);
            if (jobs.containsKey(jobId)) {
                job = jobs.get(jobId);
            } else {
                throw new NoResultException("Job not found");
            }
        } catch (NoResultException e) {
            logger.warn("Upload job not found for Id: " + jobId);
            return buildUploadFailedRepsonse(job);
        }
        if (ServletFileUpload.isMultipartContent(request)) {
            ServletFileUpload upload = new ServletFileUpload();
            UploadProgressListener listener = new UploadProgressListener(job, this.emf);
            upload.setProgressListener(listener);
            for (FileItemIterator iter = upload.getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                String fieldName = item.getFieldName();
                if ("mediaPackage".equalsIgnoreCase(fieldName)) {
                    mp = factory.newMediaPackageBuilder().loadFromXml(item.openStream());
                } else if ("flavor".equals(fieldName)) {
                    String flavorString = Streams.asString(item.openStream());
                    if (flavorString != null) {
                        flavor = MediaPackageElementFlavor.parseFlavor(flavorString);
                    }
                } else if ("elementType".equalsIgnoreCase(fieldName)) {
                    String typeString = Streams.asString(item.openStream());
                    if (typeString != null) {
                        elementType = typeString;
                    }
                } else if ("file".equalsIgnoreCase(fieldName)) {
                    fileName = item.getName();
                    job.setFilename(fileName);
                    if ((mp != null) && (flavor != null) && (fileName != null)) {
                        // decide which element type to add
                        if ("TRACK".equalsIgnoreCase(elementType)) {
                            mp = ingestService.addTrack(item.openStream(), fileName, flavor, mp);
                        } else if ("CATALOG".equalsIgnoreCase(elementType)) {
                            logger.info("Adding Catalog: " + fileName + " - " + flavor);
                            mp = ingestService.addCatalog(item.openStream(), fileName, flavor, mp);
                        }
                        InputStream is = null;
                        try {
                            is = getClass().getResourceAsStream("/templates/complete.html");
                            String html = IOUtils.toString(is, "UTF-8");
                            html = html.replaceAll("\\{mediaPackage\\}", MediaPackageParser.getAsXml(mp));
                            html = html.replaceAll("\\{jobId\\}", job.getId());
                            return Response.ok(html).build();
                        } finally {
                            IOUtils.closeQuietly(is);
                        }
                    }
                }
            }
        } else {
            logger.warn("Job " + job.getId() + ": message is not multipart/form-data encoded");
        }
        return buildUploadFailedRepsonse(job);
    } catch (Exception ex) {
        logger.error(ex.getMessage());
        return buildUploadFailedRepsonse(job);
    } finally {
        if (em != null)
            em.close();
    }
}

From source file:org.oryxeditor.server.StencilSetExtensionGeneratorServlet.java

/**
 * Request parameters are documented in/*from  w w  w .  j a va 2s .  co m*/
 * editor/test/examples/stencilset-extension-generator.xhtml
 * The parameter 'csvFile' is always required.
 * An example CSV file can be found in
 * editor/test/examples/design-thinking-example-data.csv
 * which has been exported using OpenOffice.org from
 * editor/test/examples/design-thinking-example-data.ods
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    this.request = request;
    this.response = response;
    this.baseUrl = Repository.getBaseUrl(request);
    this.repository = new Repository(baseUrl);

    // parameters and their default values
    String modelNamePrefix = "Generated Model using ";
    String stencilSetExtensionNamePrefix = StencilSetExtensionGenerator.DEFAULT_STENCIL_SET_EXTENSION_NAME_PREFIX;
    String baseStencilSetPath = StencilSetExtensionGenerator.DEFAULT_BASE_STENCIL_SET_PATH;
    String baseStencilSet = StencilSetExtensionGenerator.DEFAULT_BASE_STENCIL_SET;
    String baseStencil = StencilSetExtensionGenerator.DEFAULT_BASE_STENCIL;
    List<String> stencilSetExtensionUrls = new ArrayList<String>();
    String[] columnPropertyMapping = null;
    String[] csvHeader = null;
    List<Map<String, String>> stencilPropertyMatrix = new ArrayList<Map<String, String>>();
    String modelDescription = "The initial version of this model has been created by the Stencilset Extension Generator.";
    String additionalERDFContentForGeneratedModel = "";
    String[] modelTags = null;

    // Check that we have a file upload request
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if (isMultipart) {

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload();

        // Parse the request
        FileItemIterator iterator;
        try {
            iterator = upload.getItemIterator(request);
            while (iterator.hasNext()) {
                FileItemStream item = iterator.next();
                String name = item.getFieldName();
                InputStream stream = item.openStream();
                if (item.isFormField()) {
                    // ordinary form field
                    String value = Streams.asString(stream);
                    //System.out.println("Form field " + name + " with value "
                    //    + value + " detected.");
                    if (name.equals("modelNamePrefix")) {
                        modelNamePrefix = value;
                    } else if (name.equals("stencilSetExtensionNamePrefix")) {
                        stencilSetExtensionNamePrefix = value;
                    } else if (name.equals("baseStencilSetPath")) {
                        baseStencilSetPath = value;
                    } else if (name.equals("baseStencilSet")) {
                        baseStencilSet = value;
                    } else if (name.equals("stencilSetExtension")) {
                        stencilSetExtensionUrls.add(value);
                    } else if (name.equals("baseStencil")) {
                        baseStencil = value;
                    } else if (name.equals("columnPropertyMapping")) {
                        columnPropertyMapping = value.split(",");
                    } else if (name.equals("modelDescription")) {
                        modelDescription = value;
                    } else if (name.equals("modelTags")) {
                        modelTags = value.split(",");
                    } else if (name.equals("additionalERDFContentForGeneratedModel")) {
                        additionalERDFContentForGeneratedModel = value;
                    }
                } else {
                    // file field
                    //System.out.println("File field " + name + " with file name "
                    //    + item.getName() + " detected.");
                    // Process the input stream
                    if (name.equals("csvFile")) {
                        CsvMapReader csvFileReader = new CsvMapReader(new InputStreamReader(stream),
                                CsvPreference.EXCEL_PREFERENCE);
                        csvHeader = csvFileReader.getCSVHeader(true);
                        if (columnPropertyMapping != null && columnPropertyMapping.length > 0) {
                            csvHeader = columnPropertyMapping;
                        }
                        Map<String, String> row;
                        while ((row = csvFileReader.read(csvHeader)) != null) {
                            stencilPropertyMatrix.add(row);
                        }
                    }
                }
            }

            // generate stencil set
            Date creationDate = new Date(System.currentTimeMillis());
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss.SSS");
            String stencilSetExtensionName = stencilSetExtensionNamePrefix + " "
                    + dateFormat.format(creationDate);

            stencilSetExtensionUrls
                    .add(StencilSetExtensionGenerator.generateStencilSetExtension(stencilSetExtensionName,
                            stencilPropertyMatrix, columnPropertyMapping, baseStencilSet, baseStencil));

            // generate new model
            String modelName = modelNamePrefix + stencilSetExtensionName;
            String model = repository.generateERDF(UUID.randomUUID().toString(),
                    additionalERDFContentForGeneratedModel, baseStencilSetPath, baseStencilSet,
                    stencilSetExtensionUrls, modelName, modelDescription);
            String modelUrl = baseUrl + repository.saveNewModel(model, modelName, modelDescription,
                    baseStencilSet, baseStencilSetPath);

            // hack for reverse proxies:
            modelUrl = modelUrl.substring(modelUrl.lastIndexOf("http://"));

            // tag model
            if (modelTags != null) {
                for (String tagName : modelTags) {
                    repository.addTag(modelUrl, tagName.trim());
                }
            }

            // redirect client to editor with that newly generated model
            response.setHeader("Location", modelUrl);
            response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } else {
        // TODO Add some error message
    }
}