List of usage examples for org.apache.commons.fileupload FileItemIterator next
FileItemStream next() throws FileUploadException, IOException;
From source file:org.camunda.bpm.engine.rest.mapper.MultipartPayloadProvider.java
protected void parseRequest(MultipartFormData multipartFormData, FileUpload fileUpload, RestMultipartRequestContext requestContext) { try {//ww w. jav a2s . co m FileItemIterator itemIterator = fileUpload.getItemIterator(requestContext); while (itemIterator.hasNext()) { FileItemStream stream = itemIterator.next(); multipartFormData.addPart(new FormPart(stream)); } } catch (Exception e) { throw new RestException(Status.BAD_REQUEST, e, "multipart/form-data cannot be processed"); } }
From source file:org.cellprofiler.subimager.ImageWriterHandler.java
public void handle(HttpExchange exchange) throws IOException { if (!exchange.getRequestMethod().equals("POST")) { reportError(exchange, HttpURLConnection.HTTP_BAD_METHOD, "<html><body>writeimage only accepts HTTP post</body></html>"); return;// ww w .j av a 2 s . com } final String contentType = exchange.getRequestHeaders().getFirst("Content-Type"); if (contentType == null) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>No Content-type request header</body></html>"); return; } if (!contentType.startsWith(MULTIPART_FORM_DATA)) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Content type must be " + MULTIPART_FORM_DATA + ".</body></html>"); return; } int idx = contentType.indexOf(BOUNDARY_EQUALS, MULTIPART_FORM_DATA.length()); if (idx == -1) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Did not find boundary identifier in multipart/form-data content type.</body></html>"); return; } final String contentEncoding = exchange.getRequestHeaders().getFirst("Content-Encoding"); String contentLengthString = exchange.getRequestHeaders().getFirst("Content-Length"); if (contentLengthString == null) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>No Content-Length request header</body></html>"); return; } try { Integer.parseInt(contentLengthString); } catch (NumberFormatException e) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, String .format("<html><body>Content length was not a number: %s</body></html>", contentLengthString)); return; } final int contentLength = Integer.parseInt(contentLengthString); final InputStream requestBodyStream = exchange.getRequestBody(); FileUpload upload = new FileUpload(); FileItemIterator fileItemIterator; String omeXML = null; URI uri = null; int index = 0; NDImage ndimage = null; String compression = DEFAULT_COMPRESSION; try { fileItemIterator = upload.getItemIterator(new RequestContext() { public String getCharacterEncoding() { return contentEncoding; } public String getContentType() { return contentType; } public int getContentLength() { return contentLength; } public InputStream getInputStream() throws IOException { return requestBodyStream; } }); while (fileItemIterator.hasNext()) { FileItemStream fis = fileItemIterator.next(); String name = fis.getFieldName(); if (name.equals(NAME_IMAGE)) { String imageContentType = fis.getContentType(); if (imageContentType == null) { reportError(exchange, HttpURLConnection.HTTP_UNSUPPORTED_TYPE, "<html><body>Image form-data field must have a content type.</body></html>"); return; } try { InputStream is = SubimagerUtils.getInputStream(exchange, fis); if (is == null) return; ndimage = NDImage.decode(is); } catch (MalformedStreamException e) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Failed to read body for part, " + name + ".</body></html>"); } catch (IOException e) { reportError(exchange, HttpURLConnection.HTTP_INTERNAL_ERROR, "<html><body>Failed to read multipart body data</body></html>"); return; } catch (org.cellprofiler.subimager.NDImage.FormatException e) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Image data was not in correct format: " + e.getMessage() + "</body></html>"); return; } } else { String partDataString = SubimagerUtils.readFully(exchange, fis); if (partDataString == null) return; if (name.equals(NAME_INDEX)) { try { index = Integer.parseInt(partDataString); } catch (NumberFormatException e) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Index form-data field must be a number: " + partDataString + ".</body></html>"); return; } } else if (name.equals(NAME_OMEXML)) { omeXML = partDataString; } else if (name.equals(NAME_URL)) { try { uri = new URI(partDataString); } catch (URISyntaxException e) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Improperly formatted URL: " + partDataString + ".</body></html>"); return; } } else if (name.equals(NAME_COMPRESSION)) { compression = partDataString; } } } if (ndimage == null) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Request did not have an image part</body></html>"); return; } if (uri == null) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Request did not have a URL part</body></html>"); return; } if (omeXML == null) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, "<html><body>Request did not have an omexml part</body></html>"); return; } writeImage(exchange, ndimage, uri, omeXML, index, compression); } catch (FileUploadException e) { reportError(exchange, HttpURLConnection.HTTP_BAD_REQUEST, String .format("<html><body>Parsing error in multipart message: %s</body></html>", e.getMessage())); return; } }
From source file:org.cellprofiler.subimager.TestImageJHandlerBase.java
protected Response post(Request request, Map<String, NDImage> ndimagesIn, Map<String, NDImage> ndimagesOut) { StringWriter writer = new StringWriter(); try {//from w ww. ja va 2 s. c o m Marshaller marshaller = new Marshaller(writer); marshaller.marshal(request); } catch (MarshalException e2) { throw new AssertionError(e2.getMessage()); } catch (ValidationException e2) { throw new AssertionError(e2.getMessage()); } catch (IOException e) { // TODO Auto-generated catch block throw new AssertionError(e.getMessage()); } String xml = writer.toString(); ArrayList<Part> parts = new ArrayList<Part>(); parts.add(new StringPart(ImageJHandler.NAME_REQUEST, xml)); String sURL = String.format("http://localhost:%d/imagej", getPort()); final PostMethod post = new PostMethod(sURL); for (Map.Entry<String, NDImage> entry : ndimagesIn.entrySet()) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { entry.getValue().encode(bos); } catch (IOException e1) { e1.printStackTrace(); throw new AssertionError("Failed to encode image: " + e1.getMessage()); } ByteArrayPartSource src = new ByteArrayPartSource(entry.getKey(), bos.toByteArray()); FilePart filePart = new FilePart(entry.getKey(), src, "application/octet-stream", "binary"); parts.add(filePart); } post.setRequestEntity(new MultipartRequestEntity(parts.toArray(new Part[0]), post.getParams())); HttpClient client = new HttpClient(); int responseCode; try { responseCode = client.executeMethod(post); } catch (HttpException e) { throw new AssertionError(e.getMessage()); } catch (IOException e) { throw new AssertionError(e.getMessage()); } assertEquals(HttpURLConnection.HTTP_OK, responseCode); final String contentType = post.getResponseHeader("Content-Type").getValue(); assertTrue(contentType.startsWith("multipart/form-data")); final long contentLength = post.getResponseContentLength(); try { final InputStream responseBodyStream = post.getResponseBodyAsStream(); FileUpload upload = new FileUpload(); FileItemIterator fileItemIterator; fileItemIterator = upload.getItemIterator(new RequestContext() { public String getCharacterEncoding() { if (post.getResponseHeader("Content-Encoding") == null) return null; return post.getResponseHeader("Content-Encoding").getValue(); } public String getContentType() { return contentType; } public int getContentLength() { return (int) contentLength; } InputStream tmpStream = null; public InputStream getInputStream() throws IOException { if (tmpStream == null) { byte[] buf = new byte[(int) contentLength]; int offset = 0; while (offset < buf.length) { offset += responseBodyStream.read(buf, offset, buf.length - offset); } tmpStream = new ByteArrayInputStream(buf); } return tmpStream; } }); assertTrue(fileItemIterator.hasNext()); FileItemStream fis = fileItemIterator.next(); assertEquals(fis.getFieldName(), ImageJHandler.NAME_RESPONSE); Reader rdr = new InputStreamReader(fis.openStream(), "utf-8"); Unmarshaller unmarshaller = new Unmarshaller(Response.class); unmarshaller.setProperty(XMLProperties.LENIENT_INTEGER_VALIDATION, "true"); Object oresponse = unmarshaller.unmarshal(rdr); assertTrue(oresponse instanceof Response); Response response = (Response) oresponse; while (fileItemIterator.hasNext()) { fis = fileItemIterator.next(); String name = fis.getFieldName(); NDImage ndimage = NDImage.decode(fis.openStream()); ndimagesOut.put(name, ndimage); } return response; } catch (IOException e) { e.printStackTrace(); throw new AssertionError(e.getMessage()); } catch (FileUploadException e) { e.printStackTrace(); throw new AssertionError(e.getMessage()); } catch (MarshalException e) { e.printStackTrace(); throw new AssertionError(e.getMessage()); } catch (ValidationException e) { e.printStackTrace(); throw new AssertionError(e.getMessage()); } catch (FormatException e) { e.printStackTrace(); throw new AssertionError(e.getMessage()); } }
From source file:org.celstec.arlearn2.upload.BlobStoreServlet.java
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try {/*from w w w . java2 s .c om*/ Long runId = null; String account = null; ServletFileUpload upload = new ServletFileUpload(); res.setContentType("text/plain"); FileItemIterator iterator = upload.getItemIterator(req); while (iterator.hasNext()) { FileItemStream item = iterator.next(); InputStream stream = item.openStream(); if (item.isFormField()) { if ("runId".equals(item.getFieldName())) { runId = Long.parseLong(Streams.asString(stream)); } if ("account".equals(item.getFieldName())) { account = Streams.asString(stream); } } else { BlobKey blobkey = storeBlob(item.getContentType(), item.getName(), stream); if (blobkey != null) { System.out.println(blobkey); // File exists BlobKey oldkey = FilePathManager.getBlobKey(account, runId, item.getName()); if (oldkey != null) { FilePathManager.delete(oldkey); blobstoreService.delete(oldkey); } FilePathManager.addFile(runId, account, item.getName(), blobkey); } else { blobkey.toString(); } } } } catch (Exception ex) { throw new ServletException(ex); } }
From source file:org.celstec.arlearn2.upload.BlobStoreServletIncremental.java
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try {/*from w w w .j av a 2s . com*/ Long runId = null; String account = null; String serverPath = null; boolean last = false; ServletFileUpload upload = new ServletFileUpload(); res.setContentType("text/plain"); FileItemIterator iterator = upload.getItemIterator(req); System.out.println("before while"); while (iterator.hasNext()) { System.out.println("in while"); FileItemStream item = iterator.next(); InputStream stream = item.openStream(); if (item.isFormField()) { if ("runId".equals(item.getFieldName())) { runId = Long.parseLong(Streams.asString(stream)); System.out.println("runid is " + runId); } if ("account".equals(item.getFieldName())) { account = Streams.asString(stream); System.out.println("account is " + account); } if ("last".equals(item.getFieldName())) { last = Boolean.parseBoolean(Streams.asString(stream)); System.out.println("last is " + last); } if ("serverPath".equals(item.getFieldName())) { serverPath = Streams.asString(stream); System.out.println("serverPath is " + serverPath); } } else { log.warning("Got an uploaded file: " + item.getFieldName() + ", name = " + item.getName()); AppEngineFile file = storeBlob(item.getContentType(), item.getName(), stream, last, serverPath); BlobKey blobkey = fileService.getBlobKey(file); if (blobkey != null) { // File exists BlobKey oldkey = FilePathManager.getBlobKey(account, runId, item.getName()); if (oldkey != null) { FilePathManager.delete(oldkey); blobstoreService.delete(oldkey); } FilePathManager.addFile(runId, account, item.getName(), blobkey); System.out.println(blobkey.toString()); } res.getWriter().write(file.getFullPath()); // else { // blobkey.toString(); // } } } } catch (Exception ex) { throw new ServletException(ex); } }
From source file:org.celstec.arlearn2.upload.UploadGameServlet.java
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { long gameId = 0l; String auth = null;//from w ww . jav a 2 s . c o m try { ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iter = upload.getItemIterator(req); String json = ""; while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); if (item.isFormField()) { String value = Streams.asString(stream); if ("gameId".equals(name)) gameId = Long.parseLong(value); if ("auth".equals(name)) auth = value; } else { json = Streams.asString(stream); } } res.setContentType("text/plain"); JSONObject jObject = new JSONObject(json); Object deserialized = JsonBeanDeserializer.deserialize(json); if (deserialized instanceof GamePackage && ((GamePackage) deserialized).getGame() != null) unpackGame((GamePackage) deserialized, req, auth); if (deserialized instanceof RunPackage && ((RunPackage) deserialized).getRun() != null) unpackRun((RunPackage) deserialized, req, gameId, auth); } catch (Exception ex) { throw new ServletException(ex); } }
From source file:org.codelabor.system.file.web.servlet.FileUploadStreamServlet.java
@Override protected void upload(HttpServletRequest request, HttpServletResponse response) throws Exception { WebApplicationContext ctx = WebApplicationContextUtils .getRequiredWebApplicationContext(this.getServletContext()); FileManager fileManager = (FileManager) ctx.getBean("fileManager"); boolean isMultipart = ServletFileUpload.isMultipartContent(request); Map<String, Object> paramMap = RequestUtils.getParameterMap(request); if (logger.isDebugEnabled()) { logger.debug(paramMap.toString()); }/*from w ww .j a v a 2s .c om*/ String mapId = (String) paramMap.get("mapId"); RepositoryType acceptedRepositoryType = repositoryType; String requestedRepositoryType = (String) paramMap.get("repositoryType"); if (StringUtils.isNotEmpty(requestedRepositoryType)) { acceptedRepositoryType = RepositoryType.valueOf(requestedRepositoryType); } if (isMultipart) { ServletFileUpload upload = new ServletFileUpload(); upload.setFileSizeMax(fileSizeMax); upload.setSizeMax(requestSizeMax); upload.setHeaderEncoding(characterEncoding); upload.setProgressListener(new FileUploadProgressListener()); try { FileItemIterator iter = upload.getItemIterator(request); while (iter.hasNext()) { FileItemStream fileItemSteam = iter.next(); if (logger.isDebugEnabled()) { logger.debug(fileItemSteam.toString()); } FileDTO fileDTO = null; if (fileItemSteam.isFormField()) { paramMap.put(fileItemSteam.getFieldName(), Streams.asString(fileItemSteam.openStream(), characterEncoding)); } else { if (fileItemSteam.getName() == null || fileItemSteam.getName().length() == 0) continue; // set DTO fileDTO = new FileDTO(); fileDTO.setMapId(mapId); fileDTO.setRealFilename(FilenameUtils.getName(fileItemSteam.getName())); if (acceptedRepositoryType == RepositoryType.FILE_SYSTEM) { fileDTO.setUniqueFilename(getUniqueFilename()); } fileDTO.setContentType(fileItemSteam.getContentType()); fileDTO.setRepositoryPath(realRepositoryPath); if (logger.isDebugEnabled()) { logger.debug(fileDTO.toString()); } UploadUtils.processFile(acceptedRepositoryType, fileItemSteam.openStream(), fileDTO); } if (fileDTO != null) fileManager.insertFile(fileDTO); } } catch (FileUploadException e) { e.printStackTrace(); logger.error(e.getMessage()); } catch (Exception e) { e.printStackTrace(); logger.error(e.getMessage()); } } else { paramMap = RequestUtils.getParameterMap(request); } try { processParameters(paramMap); } catch (Exception e) { e.printStackTrace(); logger.error(e.getMessage()); } dispatch(request, response, forwardPathUpload); }
From source file:org.collectionspace.chain.controller.WebUIRequest.java
private void initRequest(UIUmbrella umbrella, HttpServletRequest request, HttpServletResponse response, List<String> p) throws IOException, UIException { this.request = request; this.response = response; boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(); // Parse the request FileItemIterator iter; try {//from w ww . j a v a 2s . c o m 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 contentHeaders = item.getHeaders(); uploadName = item.getName(); ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); if (item != null) { InputStream stream = item.openStream(); IOUtils.copy(stream, byteOut); new TeeInputStream(stream, byteOut); } bytebody = byteOut.toByteArray(); } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { body = IOUtils.toString(request.getInputStream(), "UTF-8"); } this.ppath = p.toArray(new String[0]); if (!(umbrella instanceof WebUIUmbrella)) throw new UIException("Bad umbrella"); this.umbrella = (WebUIUmbrella) umbrella; session = calculateSessionId(); }
From source file:org.csi.yucca.storage.datamanagementapi.service.MetadataService.java
@POST @Path("/{tenant}") @Produces(MediaType.APPLICATION_JSON)//from w w w .j ava 2 s.co m public String createMetadata(@PathParam("tenant") String tenant, @Context HttpServletRequest request) throws NumberFormatException, UnknownHostException { log.debug("[MetadataService::createMetadata] - START"); String datasetMetadata = null; String encoding = null; String formatType = null; String csvSeparator = null; boolean skipFirstRow = false; String csvData = null; String fileName = null; try { ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iterator = upload.getItemIterator(request); while (iterator.hasNext()) { FileItemStream item = iterator.next(); if (IMPORT_BULKDATASET_METADATA_REQ_KEY.equals(item.getFieldName())) datasetMetadata = read(item.openStream()); else if (IMPORT_BULKDATASET_ENCODING_REQ_KEY.equals(item.getFieldName())) encoding = read(item.openStream()); else if (IMPORT_BULKDATASET_FORMAT_TYPE_REQ_KEY.equals(item.getFieldName())) formatType = read(item.openStream()); else if (IMPORT_BULKDATASET_CSV_SEP_REQ_KEY.equals(item.getFieldName())) csvSeparator = read(item.openStream()); else if (IMPORT_BULKDATASET_CSV_SKIP_FIRS_ROW_REQ_KEY.equals(item.getFieldName())) skipFirstRow = new Boolean(read(item.openStream())); else if (IMPORT_BULKDATASET_FILE_REQ_KEY.equals(item.getFieldName())) { csvData = readFileRows(item.openStream(), encoding); fileName = item.getName(); } } } catch (Exception e) { e.printStackTrace(); } log.debug("[MetadataService::createMetadata] - encoding: " + encoding + ", formatType: " + formatType + ", csvSeparator: " + csvSeparator); Metadata metadata = Metadata.fromJson(datasetMetadata); if (fileName != null) metadata.getInfo().addFilename(fileName); CreateDatasetResponse createDatasetResponse = new CreateDatasetResponse(); metadata.setDatasetVersion(1); if (metadata.getConfigData() == null) metadata.setConfigData(new ConfigData()); metadata.getConfigData().setType(Metadata.CONFIG_DATA_TYPE_DATASET); metadata.getConfigData().setSubtype(Metadata.CONFIG_DATA_SUBTYPE_BULK_DATASET); metadata.getConfigData().setCurrent(1); if (metadata.getInfo() == null) metadata.setInfo(new Info()); if (metadata.getInfo().getFields() != null) { for (Field field : metadata.getInfo().getFields()) { field.setFieldName(Util.cleanStringCamelCase(field.getFieldName())); if (field != null && field.getDataType() == null) field.setDataType("string"); } } metadata.getInfo().setRegistrationDate(new Date()); try { List<SDPBulkInsertException> checkFileToWriteErrors = null; MongoDBDataUpload dataUpload = new MongoDBDataUpload(); if (csvData != null) { checkFileToWriteErrors = dataUpload.checkFileToWrite(csvData, csvSeparator, metadata, skipFirstRow); } if (checkFileToWriteErrors != null && checkFileToWriteErrors.size() > 0) { for (SDPBulkInsertException error : checkFileToWriteErrors) { createDatasetResponse.addErrorMessage(new ErrorMessage(error.getErrorCode(), error.getErrorMessage(), error.getErrorDetail())); } } else { MongoClient mongo = MongoSingleton.getMongoClient(); String supportDb = Config.getInstance().getDbSupport(); String supportDatasetCollection = Config.getInstance().getCollectionSupportDataset(); MongoDBMetadataDAO metadataDAO = new MongoDBMetadataDAO(mongo, supportDb, supportDatasetCollection); String supportApiCollection = Config.getInstance().getCollectionSupportApi(); MongoDBApiDAO apiDAO = new MongoDBApiDAO(mongo, supportDb, supportApiCollection); BasicDBObject searchTenantQuery = new BasicDBObject(); searchTenantQuery.put("tenantCode", tenant); DBCollection tenantCollection = mongo.getDB(supportDb).getCollection("tenant"); DBObject tenantData = tenantCollection.find(searchTenantQuery).one(); Long idTenant = ((Number) tenantData.get("idTenant")).longValue(); int maxDatasetNum = ((Number) tenantData.get("maxDatasetNum")).intValue(); if (maxDatasetNum > 0) { int numCurrentDataset = metadataDAO.countAllMetadata(tenant, true); log.info("[MetadataService::createMetadata] - tenant=" + tenant + " maxDatasetNum=" + maxDatasetNum + " numCurrentDataset=" + numCurrentDataset); //TODO if (numCurrentDataset >= maxDatasetNum) throw new MaxDatasetNumException("too many dataset"); } metadata.getConfigData().setIdTenant(idTenant); // binary metadata: create a metadata record specific for attachment Metadata binaryMetadata = null; if (metadata.getInfo().getFields() != null) { for (Field field : metadata.getInfo().getFields()) { if (field.getDataType().equals("binary")) { binaryMetadata = Metadata.createBinaryMetadata(metadata); break; } } } if (binaryMetadata != null) { Metadata binaryMetadataCreated = metadataDAO.createMetadata(binaryMetadata, null); metadata.getInfo().setBinaryDatasetVersion(binaryMetadataCreated.getDatasetVersion()); metadata.getInfo().setBinaryIdDataset(binaryMetadataCreated.getIdDataset()); } List<Tenantsharing> lista = new ArrayList<Tenantsharing>(); if (metadata.getInfo().getTenantssharing() != null) { Set<String> tenantSet = new TreeSet<String>(); for (Tenantsharing tenantInList : metadata.getInfo().getTenantssharing().getTenantsharing()) { if (!tenantInList.getTenantCode().equals(metadata.getConfigData().getTenantCode()) && !tenantSet.contains(metadata.getConfigData().getTenantCode()) && tenantInList.getIsOwner() != 1) { lista.add(tenantInList); tenantSet.add(tenantInList.getTenantCode()); } } } Tenantsharing owner = new Tenantsharing(); owner.setIdTenant(metadata.getConfigData().getIdTenant()); owner.setIsOwner(1); owner.setTenantCode(metadata.getConfigData().getTenantCode()); owner.setTenantName(metadata.getConfigData().getTenantCode()); // owner.setTenantDescription(metadata.getConfigData().get); lista.add(owner); Tenantsharing arrayTenant[] = new Tenantsharing[lista.size()]; arrayTenant = lista.toArray(arrayTenant); if (metadata.getInfo().getTenantssharing() == null) { Tenantssharing tenantssharing = new Tenantssharing(); metadata.getInfo().setTenantssharing(tenantssharing); } metadata.getInfo().getTenantssharing().setTenantsharing(arrayTenant); // opendata if (!"public".equals(metadata.getInfo().getVisibility())) { metadata.setOpendata(null); } Metadata metadataCreated = metadataDAO.createMetadata(metadata, null); MyApi api = MyApi.createFromMetadataDataset(metadataCreated); api.getConfigData().setType(Metadata.CONFIG_DATA_TYPE_API); api.getConfigData().setSubtype(Metadata.CONFIG_DATA_SUBTYPE_API_MULTI_BULK); MyApi apiCreated = apiDAO.createApi(api); createDatasetResponse.setMetadata(metadataCreated); createDatasetResponse.setApi(apiCreated); /* * Create api in the store */ String apiName = ""; try { apiName = StoreService.createApiforBulk(metadata, false, datasetMetadata); } catch (Exception duplicate) { if (duplicate.getMessage().toLowerCase().contains("duplicate")) { try { apiName = StoreService.createApiforBulk(metadata, true, datasetMetadata); } catch (Exception e) { log.error( "[MetadataService::createMetadata] - ERROR to update API in Store for Bulk. Message: " + duplicate.getMessage()); } } else { log.error( "[MetadataService::createMetadata] - ERROR in create or update API in Store for Bulk. Message: " + duplicate.getMessage()); } } try { StoreService.publishStore("1.0", apiName, "admin"); Set<String> tenantSet = new TreeSet<String>(); if (metadata.getInfo().getTenantssharing() != null) { for (Tenantsharing tenantSh : metadata.getInfo().getTenantssharing().getTenantsharing()) { tenantSet.add(tenantSh.getTenantCode()); String appName = "userportal_" + tenantSh.getTenantCode(); StoreService.addSubscriptionForTenant(apiName, appName); } } if (!tenantSet.contains(metadata.getConfigData().getTenantCode())) { String appName = "userportal_" + metadata.getConfigData().getTenantCode(); StoreService.addSubscriptionForTenant(apiName, appName); } } catch (Exception e) { log.error("[MetadataService::createMetadata] - ERROR in publish Api in store - message: " + e.getMessage()); } if (csvData != null) { try { dataUpload.writeFileToMongo(mongo, "DB_" + tenant, "data", metadataCreated); } catch (Exception e) { log.error("[MetadataService::createMetadata] - writeFileToMongo ERROR: " + e.getMessage()); createDatasetResponse.addErrorMessage(new ErrorMessage(e)); e.printStackTrace(); } } } } catch (MaxDatasetNumException ex) { log.error("[MetadataService::createMetadata] - MaxDatasetNumException ERROR: ", ex); createDatasetResponse.addErrorMessage(new ErrorMessage(ex)); } return createDatasetResponse.toJson(); }
From source file:org.csi.yucca.storage.datamanagementapi.service.MetadataService.java
@POST @Path("/add/{tenant}/{datasetCode}") @Produces(MediaType.APPLICATION_JSON)// w w w . j ava 2 s . c om public String addData(@PathParam("tenant") String tenant, @PathParam("datasetCode") String datasetCode, @Context HttpServletRequest request) throws NumberFormatException, UnknownHostException { log.debug("[MetadataService::addData] - START"); String encoding = null; String formatType = null; String csvSeparator = null; boolean skipFirstRow = false; String csvData = null; String fileName = null; try { ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iterator = upload.getItemIterator(request); while (iterator.hasNext()) { FileItemStream item = iterator.next(); if (IMPORT_BULKDATASET_ENCODING_REQ_KEY.equals(item.getFieldName())) encoding = read(item.openStream()); else if (IMPORT_BULKDATASET_FORMAT_TYPE_REQ_KEY.equals(item.getFieldName())) formatType = read(item.openStream()); else if (IMPORT_BULKDATASET_CSV_SEP_REQ_KEY.equals(item.getFieldName())) csvSeparator = read(item.openStream()); else if (IMPORT_BULKDATASET_CSV_SKIP_FIRS_ROW_REQ_KEY.equals(item.getFieldName())) skipFirstRow = new Boolean(read(item.openStream())); else if (IMPORT_BULKDATASET_FILE_REQ_KEY.equals(item.getFieldName())) { csvData = readFileRows(item.openStream(), encoding); fileName = item.getName(); } } } catch (Exception e) { e.printStackTrace(); } log.debug("[MetadataService::addData] - encoding: " + encoding + ", formatType: " + formatType + ", csvSeparator: " + csvSeparator); MongoClient mongo = MongoSingleton.getMongoClient(); String supportDb = Config.getInstance().getDbSupport(); String supportDatasetCollection = Config.getInstance().getCollectionSupportDataset(); MongoDBMetadataDAO metadataDAO = new MongoDBMetadataDAO(mongo, supportDb, supportDatasetCollection); Metadata existingMetadata = metadataDAO.readCurrentMetadataByCode(datasetCode); existingMetadata.getInfo().addFilename(fileName); metadataDAO.updateMetadata(existingMetadata); UpdateDatasetResponse updateDatasetResponse = new UpdateDatasetResponse(); MongoDBDataUpload dataUpload = new MongoDBDataUpload(); List<SDPBulkInsertException> checkFileToWriteErrors = dataUpload.checkFileToWrite(csvData, csvSeparator, existingMetadata, skipFirstRow); if (checkFileToWriteErrors != null && checkFileToWriteErrors.size() > 0) { for (SDPBulkInsertException error : checkFileToWriteErrors) { updateDatasetResponse.addErrorMessage( new ErrorMessage(error.getErrorCode(), error.getErrorMessage(), error.getErrorDetail())); } } else { try { dataUpload.writeFileToMongo(mongo, "DB_" + tenant, "data", existingMetadata); } catch (Exception e) { log.error("[MetadataService::addData] - writeFileToMongo ERROR: " + e.getMessage()); updateDatasetResponse.addErrorMessage(new ErrorMessage(e)); e.printStackTrace(); } } return updateDatasetResponse.toJson(); }