List of usage examples for org.apache.commons.fileupload.util Streams asString
public static String asString(InputStream pStream) throws IOException
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 } }