List of usage examples for org.springframework.util MultiValueMap size
int size();
From source file:com.ephesoft.dcma.webservice.EphesoftWebServiceAPI.java
/** * To classify Multi Page Hocr./* w w w . j a v a 2 s .c o m*/ * @param req {@link HttpServletRequest} * @param resp {@link HttpServletResponse} */ @RequestMapping(value = "/classifyMultiPageHocr", method = RequestMethod.POST) @ResponseBody public void classifyMultiPageHocr(final HttpServletRequest req, final HttpServletResponse resp) { LOGGER.info("Start processing web service for classifyHocr."); String respStr = WebServiceUtil.EMPTY_STRING; String workingDir = WebServiceUtil.EMPTY_STRING; InputStream instream = null; OutputStream outStream = null; if (req instanceof DefaultMultipartHttpServletRequest) { try { final String webServiceFolderPath = bsService.getWebServicesFolderPath(); workingDir = WebServiceUtil.createWebServiceWorkingDir(webServiceFolderPath); final DefaultMultipartHttpServletRequest multipartReq = (DefaultMultipartHttpServletRequest) req; String batchClassId = WebServiceUtil.EMPTY_STRING; for (final Enumeration<String> params = multipartReq.getParameterNames(); params .hasMoreElements();) { final String paramName = params.nextElement(); if (paramName.equalsIgnoreCase("batchClassId")) { batchClassId = multipartReq.getParameter(paramName); break; } } Map<LuceneProperties, String> batchClassConfigMap = new HashMap<LuceneProperties, String>(); if (batchClassId == null || batchClassId.isEmpty()) { respStr = "Batch Class identifier not specified."; LOGGER.error("Error response at server:" + respStr); } else { BatchClass bc = bcService.getBatchClassByIdentifier(batchClassId); if (bc == null) { respStr = "Batch class with the specified identifier : " + batchClassId + " does not exist."; LOGGER.error("Error response at server:" + respStr); } else { Set<String> loggedInUserRole = getUserRoles(req); if (!isBatchClassViewableToUser(batchClassId, loggedInUserRole, isSuperAdmin(req))) { respStr = "User is not authorized to view the batch class for given identifier:" + batchClassId; LOGGER.error("Error response at server:" + respStr); } else { BatchPlugin searchClassPlugin = batchClassPPService.getPluginProperties(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN); BatchPlugin docAssemblyPlugin = batchClassPPService.getPluginProperties(batchClassId, DocumentAssemblerConstants.DOCUMENT_ASSEMBLER_PLUGIN); if (searchClassPlugin == null || docAssemblyPlugin == null) { respStr = "Either Search Classification plugin or document assembly plugin does not exist for the specified batch class id: " + batchClassId; } else if (docAssemblyPlugin .getPluginConfigurations(DocumentAssemblerProperties.DA_RULE_FP_MP_LP) == null || docAssemblyPlugin .getPluginConfigurations(DocumentAssemblerProperties.DA_RULE_FP) == null || docAssemblyPlugin .getPluginConfigurations(DocumentAssemblerProperties.DA_RULE_MP) == null || docAssemblyPlugin .getPluginConfigurations(DocumentAssemblerProperties.DA_RULE_LP) == null || docAssemblyPlugin.getPluginConfigurations( DocumentAssemblerProperties.DA_RULE_FP_LP) == null || docAssemblyPlugin.getPluginConfigurations( DocumentAssemblerProperties.DA_RULE_FP_MP) == null || docAssemblyPlugin.getPluginConfigurations( DocumentAssemblerProperties.DA_RULE_MP_LP) == null) { respStr = "Incomplete properties of the Document assembler plugin for the specified batch class id :" + batchClassId; LOGGER.error("Error response at server:" + respStr); } else if (searchClassPlugin .getPluginConfigurations(LuceneProperties.LUCENE_VALID_EXTNS) == null || searchClassPlugin .getPluginConfigurations(LuceneProperties.LUCENE_INDEX_FIELDS) == null || searchClassPlugin .getPluginConfigurations(LuceneProperties.LUCENE_STOP_WORDS) == null || searchClassPlugin .getPluginConfigurations(LuceneProperties.LUCENE_MIN_TERM_FREQ) == null || searchClassPlugin .getPluginConfigurations(LuceneProperties.LUCENE_MIN_DOC_FREQ) == null || searchClassPlugin.getPluginConfigurations( LuceneProperties.LUCENE_MIN_WORD_LENGTH) == null || searchClassPlugin.getPluginConfigurations( LuceneProperties.LUCENE_MAX_QUERY_TERMS) == null || searchClassPlugin.getPluginConfigurations( LuceneProperties.LUCENE_TOP_LEVEL_FIELD) == null || searchClassPlugin .getPluginConfigurations(LuceneProperties.LUCENE_NO_OF_PAGES) == null || searchClassPlugin.getPluginConfigurations( LuceneProperties.LUCENE_MAX_RESULT_COUNT) == null || searchClassPlugin.getPluginConfigurations( LuceneProperties.LUCENE_FIRST_PAGE_CONF_WEIGHTAGE) == null || searchClassPlugin.getPluginConfigurations( LuceneProperties.LUCENE_MIDDLE_PAGE_CONF_WEIGHTAGE) == null || searchClassPlugin.getPluginConfigurations( LuceneProperties.LUCENE_LAST_PAGE_CONF_WEIGHTAGE) == null) { respStr = "Incomplete properties of the Search Classification plugin for the specified batch class id :" + batchClassId; LOGGER.error("Error response at server:" + respStr); } } } } if (respStr.isEmpty()) { batchClassConfigMap.put(LuceneProperties.LUCENE_VALID_EXTNS, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_VALID_EXTNS)); batchClassConfigMap.put(LuceneProperties.LUCENE_INDEX_FIELDS, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_INDEX_FIELDS)); batchClassConfigMap.put(LuceneProperties.LUCENE_STOP_WORDS, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_STOP_WORDS)); batchClassConfigMap.put(LuceneProperties.LUCENE_MIN_TERM_FREQ, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_MIN_TERM_FREQ)); batchClassConfigMap.put(LuceneProperties.LUCENE_MIN_DOC_FREQ, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_MIN_DOC_FREQ)); batchClassConfigMap.put(LuceneProperties.LUCENE_MIN_WORD_LENGTH, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_MIN_WORD_LENGTH)); batchClassConfigMap.put(LuceneProperties.LUCENE_MAX_QUERY_TERMS, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_MAX_QUERY_TERMS)); batchClassConfigMap.put(LuceneProperties.LUCENE_TOP_LEVEL_FIELD, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_TOP_LEVEL_FIELD)); batchClassConfigMap.put(LuceneProperties.LUCENE_NO_OF_PAGES, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_NO_OF_PAGES)); batchClassConfigMap.put(LuceneProperties.LUCENE_MAX_RESULT_COUNT, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_MAX_RESULT_COUNT)); batchClassConfigMap.put(LuceneProperties.LUCENE_FIRST_PAGE_CONF_WEIGHTAGE, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_FIRST_PAGE_CONF_WEIGHTAGE)); batchClassConfigMap.put(LuceneProperties.LUCENE_MIDDLE_PAGE_CONF_WEIGHTAGE, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_MIDDLE_PAGE_CONF_WEIGHTAGE)); batchClassConfigMap.put(LuceneProperties.LUCENE_LAST_PAGE_CONF_WEIGHTAGE, batchClassPPService.getPropertyValue(batchClassId, ICommonConstants.SEARCH_CLASSIFICATION_PLUGIN, LuceneProperties.LUCENE_LAST_PAGE_CONF_WEIGHTAGE)); final MultiValueMap<String, MultipartFile> fileMap = multipartReq.getMultiFileMap(); if (fileMap.size() == 1) { String path = ""; for (final String fileName : fileMap.keySet()) { // only single zip file is expected as input containing multiple HTML files. try { boolean isZipContent = multipartReq.getFile(fileName).getContentType().toLowerCase() .contains(APPLICATION_ZIP); if (fileName.toLowerCase() .indexOf(FileType.ZIP.getExtension()) > -WebserviceConstants.ONE || isZipContent) { // only HTML file is expected final MultipartFile f = multipartReq.getFile(fileName); instream = f.getInputStream(); path = workingDir + File.separator + fileName; if (isZipContent && !fileName.toLowerCase().endsWith(FileType.ZIP.getExtension())) { path = workingDir + File.separator + fileName + FileType.ZIP.getExtensionWithDot(); } final File file = new File(path); outStream = new FileOutputStream(file); final byte buf[] = new byte[WebServiceUtil.bufferSize]; int len; while ((len = instream.read(buf)) > WebserviceConstants.ZERO) { outStream.write(buf, 0, len); } break; } else { respStr = "Improper input to server. Expected only one zip file. Returning without processing the results."; LOGGER.error("Error response at server:" + respStr); } } finally { IOUtils.closeQuietly(instream); IOUtils.closeQuietly(outStream); } } if (respStr.isEmpty()) { zipService.unzipFiles(new File(path), workingDir); CustomFileFilter filter = new CustomFileFilter(false, FileType.HTML.getExtension()); String htmlFileList[] = new File(workingDir).list(filter); if (htmlFileList != null && htmlFileList.length > WebserviceConstants.ZERO) { ObjectFactory objectFactory = new ObjectFactory(); List<Document> xmlDocuments = new ArrayList<Document>(); HocrPages hocrPages = new HocrPages(); Pages pages = new Pages(); List<Page> listOfPages = pages.getPage(); Document doc = objectFactory.createDocument(); xmlDocuments.add(doc); doc.setPages(pages); for (int index = 0; index < htmlFileList.length; index++) { // generate hocr file from html file. String htmlFile = htmlFileList[index]; String htmlFilePath = workingDir + File.separator + htmlFile; HocrPage hocrPage = new HocrPage(); List<HocrPage> hocrPageList = hocrPages.getHocrPage(); String pageID = PG_IDENTIFIER + index; hocrPage.setPageID(pageID); hocrPageList.add(hocrPage); bsService.hocrGenerationAPI(workingDir, pageID, htmlFilePath, hocrPage); Page pageType = objectFactory.createPage(); pageType.setIdentifier(EphesoftProperty.PAGE.getProperty() + index); pageType.setHocrFileName(htmlFile); listOfPages.add(pageType); } scService.generateConfidenceScoreAPI(xmlDocuments, hocrPages, workingDir, batchClassConfigMap, batchClassId); try { // invoke the document assembler plugin xmlDocuments = docAssembler.createDocumentAPI( DocumentClassificationFactory.SEARCHCLASSIFICATION, batchClassId, listOfPages); Documents docs = new Documents(); docs.getDocument().addAll(xmlDocuments); StreamResult result; try { result = new StreamResult(resp.getOutputStream()); resp.setStatus(HttpServletResponse.SC_OK); batchSchemaDao.getJAXB2Template().getJaxb2Marshaller().marshal(docs, result); } catch (final IOException e) { respStr = INTERNAL_SERVER_ERROR + e; LOGGER.error("Error response at server:" + respStr); } } catch (final DCMAApplicationException e) { respStr = "Error while executing plugin. Detailed exception is " + e; LOGGER.error("Error response at server:" + respStr); } } else { respStr = "Improper input to server. Expected HTML file inside zip file."; LOGGER.error("Error response at server:" + respStr); } } } else { respStr = "Improper input to server. Expected only one zip file. Returning without processing the results."; LOGGER.error("Error response at server:" + respStr); } } } catch (final XmlMappingException xmle) { respStr = "Error in mapping input XML in the desired format. Please send it in the specified format. Detailed exception is " + xmle; LOGGER.error("Error response at server:" + respStr); } catch (final DCMAException dcmae) { respStr = "Error in processing request. Detailed exception is " + dcmae; LOGGER.error("Error response at server:" + respStr); } catch (final Exception e) { respStr = INTERNAL_SERVER_ERROR + e; LOGGER.error("Error response at server:" + respStr); if (!workingDir.isEmpty()) { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } } } else { respStr = "Improper input to server. Expected multipart request. Returing without processing the results."; LOGGER.error("Error response at server:" + respStr); } if (!workingDir.isEmpty()) { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } if (!respStr.isEmpty()) { try { resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, respStr); LOGGER.error("Error response at server:" + respStr); } catch (final IOException ioe) { LOGGER.info( "Exception in sending the error code to client. Logged the exception for debugging:" + ioe, ioe); } } }
From source file:com.ephesoft.dcma.webservice.util.WebServiceHelper.java
/** * This method is Added to process input XML to implement auto Learning for KV feature * // ww w . j a va 2s. c om * @param req the {@link HttpServletRequest} the request header for this web service hit * @throws InternalServerException the internal server exception * @throws ValidationException the validation exception */ public ExtractKV processKVLearningDocType(final HttpServletRequest req) throws InternalServerException, ValidationException { final com.ephesoft.dcma.batch.schema.ExtractKV extractKV = new com.ephesoft.dcma.batch.schema.ExtractKV(); LOGGER.info("Inside autoLearningKV method for WebService"); String respStr = WebServiceConstants.EMPTY_STRING; String workingDir = WebServiceConstants.EMPTY_STRING; Coordinates keyRectangleCoordinates = null; Coordinates valueRectangleCoordinates = null; if (req instanceof DefaultMultipartHttpServletRequest) { try { final String webServiceFolderPath = batchSchemaService.getWebServicesFolderPath(); workingDir = WebServiceUtil.createWebServiceWorkingDir(webServiceFolderPath); final DefaultMultipartHttpServletRequest multiPartRequest = (DefaultMultipartHttpServletRequest) req; final MultiValueMap<String, MultipartFile> fileMap = multiPartRequest.getMultiFileMap(); if (fileMap.size() != 2) { final HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR; respStr = "Improper input to server. Expected two files: hocrFileZip and xml parameter file."; final RestError restError = new RestError(status, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_CODE, respStr, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS + status); throw new InternalServerException(WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, restError); } String xmlFileName = WebServiceConstants.EMPTY_STRING; xmlFileName = getXMLFile(workingDir, multiPartRequest, fileMap); LOGGER.info("XML file name is" + xmlFileName); KVExtractionDocType kvExtract = null; final File xmlFile = new File(workingDir + File.separator + xmlFileName); if (xmlFile.exists()) { final FileInputStream inputStream = new FileInputStream(xmlFile); final Source source = XMLUtil.createSourceFromStream(inputStream); kvExtract = (KVExtractionDocType) batchSchemaDao.getJAXB2Template().getJaxb2Marshaller() .unmarshal(source); if (kvExtract != null) { final String inputXMLValidationRes = validateInputXMLForAutoKVExtraction(kvExtract); if (inputXMLValidationRes.isEmpty()) { final String documentName = kvExtract.getDocumentType(); final BatchClass batchClass = batchClassService .getBatchClassByIdentifier(kvExtract.getBatchClass()); DocumentType documentType = new DocumentType(); final List<DocumentType> docTypes = batchClass.getDocumentTypes(); if (docTypes != null && !docTypes.isEmpty()) { for (final DocumentType docType : docTypes) { if (documentName.equalsIgnoreCase(docType.getName())) { documentType = batchClass .getDocumentTypeByIdentifier(docType.getIdentifier()); } } } else { respStr = "Document Type doesn't Exist.Please enter a valid document type of batch class" + batchClass; final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_CODE, respStr, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); throw new InternalServerException(respStr, restError); } final List<com.ephesoft.dcma.batch.schema.HOCRFile> hocrFileList = new ArrayList<com.ephesoft.dcma.batch.schema.HOCRFile>(); final String hocrFileZipFileName = kvExtract.getHOCRFile(); final String unZipFileLocation = unZipToTemporaryOutputLocation(hocrFileZipFileName, workingDir); final File fPageFolder = new File(unZipFileLocation); final String[] listOfHOCRFiles = fPageFolder .list(new CustomFileFilter(false, FileType.XML.getExtensionWithDot())); for (final String hocrFileName : listOfHOCRFiles) { final HOCRFile hocrFile1 = new HOCRFile(); final HOCRFile.DocumentLevelFields dlfs = new HOCRFile.DocumentLevelFields(); LOGGER.info("Number of HOCR files" + listOfHOCRFiles.length); List<com.ephesoft.dcma.da.domain.FieldType> fieldTypes = null; if (documentType != null) { fieldTypes = documentType.getFieldTypes(); } else { respStr = "Document Type doesn't Exist.Please enter a valid document type of batch class" + batchClass; final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_CODE, respStr, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); throw new InternalServerException(respStr, restError); } if (fieldTypes != null && !fieldTypes.isEmpty()) { for (final com.ephesoft.dcma.da.domain.FieldType fieldType : fieldTypes) { final List<com.ephesoft.dcma.da.domain.KVExtraction> kvExtracttion = fieldType .getKvExtraction(); final List<DocField> updtDocList = new ArrayList<DocField>(5); if (kvExtracttion != null && !kvExtracttion.isEmpty()) { for (final com.ephesoft.dcma.da.domain.KVExtraction extractKVFields : kvExtracttion) { final ExtractKVParams params = new ExtractKVParams(); final OutputStream outStream = null; final InputStream instream = null; final Params paramList = new Params(); if (extractKVFields.getLocationType() != null) { paramList.setLocationType( extractKVFields.getLocationType().toString()); } if (extractKVFields.getNoOfWords() != null) { paramList.setNoOfWords(extractKVFields.getNoOfWords()); } if (extractKVFields.getKeyPattern() != null) { paramList.setKeyPattern(extractKVFields.getKeyPattern()); } if (extractKVFields.getValuePattern() != null) { paramList.setValuePattern(extractKVFields.getValuePattern()); } if (extractKVFields.getFetchValue() != null) { paramList.setKVFetchValue( extractKVFields.getFetchValue().toString()); } // Null values are allowed paramList.setWeight(extractKVFields.getWeight()); paramList.setKeyFuzziness(extractKVFields.getKeyFuzziness()); if (extractKVFields.getAdvancedKVExtraction() != null) { paramList.setLength(extractKVFields.getLength()); paramList.setWidth(extractKVFields.getWidth()); paramList.setXoffset(extractKVFields.getXoffset()); paramList.setYoffset(extractKVFields.getYoffset()); paramList.setMultiplier(Float.valueOf(1)); paramList.setAdvancedKV(true); final AdvancedKVExtraction advancedKVExtraction = extractKVFields .getAdvancedKVExtraction(); if (advancedKVExtraction != null) { keyRectangleCoordinates = new Coordinates(); valueRectangleCoordinates = new Coordinates(); keyRectangleCoordinates.setX0(BigInteger .valueOf(advancedKVExtraction.getKeyX0Coord())); keyRectangleCoordinates.setY0(BigInteger .valueOf(advancedKVExtraction.getKeyY0Coord())); keyRectangleCoordinates.setX1(BigInteger .valueOf(advancedKVExtraction.getKeyX1Coord())); keyRectangleCoordinates.setY1(BigInteger .valueOf(advancedKVExtraction.getKeyY1Coord())); valueRectangleCoordinates.setX0(BigInteger .valueOf(advancedKVExtraction.getValueX0Coord())); valueRectangleCoordinates.setY0(BigInteger .valueOf(advancedKVExtraction.getValueY0Coord())); valueRectangleCoordinates.setX1(BigInteger .valueOf(advancedKVExtraction.getValueX1Coord())); valueRectangleCoordinates.setY1(BigInteger .valueOf(advancedKVExtraction.getValueY1Coord())); } } params.getParams().add(paramList); final String filePath = unZipFileLocation + File.separator + hocrFileName; final HocrPages hocrPages = batchSchemaService.getHOCR(filePath); final boolean isSuccess = kvService.extractKVDocumentFieldsFromHOCR( updtDocList, hocrPages, params, keyRectangleCoordinates, valueRectangleCoordinates); // final boolean // isSuccess=kvService.extractKVFromHOCRForBatchClass(updtDocList,hocrPages,kvDocTypeLearning.getBatchClass(),kvDocTypeLearning.getDocumentType()); if (!isSuccess) { respStr = "Unable to perform KV Extraction for HOCR file" + hocrFileName; final RestError restError = new RestError( HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INTERNAL_SERVER_ERROR_CODE, WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); throw new InternalServerException(respStr, restError); } hocrFile1.setFileName(hocrFileName); } } final DocField docField = getDocLevelField(fieldType, updtDocList); dlfs.getDocumentLevelField().add(docField); } } else { respStr = "No Field Type is Defined for the document.Please try again."; final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_CODE, respStr, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); throw new InternalServerException(respStr, restError); } hocrFile1.setDocumentLevelFields(dlfs); extractKV.getHOCRFile().add(hocrFile1); } } else { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.PARAMETER_XML_INCORRECT_CODE, inputXMLValidationRes, WebServiceConstants.PARAMETER_XML_INCORRECT_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error(WebServiceConstants.PARAMETER_XML_INCORRECT_MESSAGE + WebServiceConstants.HTTP_STATUS + HttpStatus.UNPROCESSABLE_ENTITY); throw new InternalServerException(inputXMLValidationRes, restError); } } else { respStr = WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE; final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_FILES_NOT_FOUND_CODE, WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE, WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error(WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE + WebServiceConstants.HTTP_STATUS + HttpStatus.UNPROCESSABLE_ENTITY); throw new ValidationException(WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE, restError); } } else { respStr = WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE; final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_FILES_NOT_FOUND_CODE, WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE, WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error(WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE + WebServiceConstants.HTTP_STATUS + HttpStatus.UNPROCESSABLE_ENTITY); throw new ValidationException(WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE, restError); } } catch (final ValidationException validationException) { throw validationException; } catch (final InternalServerException internalServerError) { throw internalServerError; } catch (final java.io.FileNotFoundException ex) { respStr = "Input File not found.Please check logs for Exception"; final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_FILES_NOT_FOUND_CODE, WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE, WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error(WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE + WebServiceConstants.HTTP_STATUS + HttpStatus.UNPROCESSABLE_ENTITY + ex); throw new ValidationException(respStr, restError); } catch (final org.xml.sax.SAXParseException Ex) { respStr = "Error in Parsing Input XML.Please try again"; final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_CODE, respStr, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); if (!workingDir.isEmpty()) { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } final InternalServerException internalServerExcpetion = new InternalServerException( WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, restError); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS); throw internalServerExcpetion; } catch (final Exception exception) { final HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR; respStr = WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE + exception; final RestError restError = new RestError(status, WebServiceConstants.INTERNAL_SERVER_ERROR_CODE, WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); if (!workingDir.isEmpty()) { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } final InternalServerException internalServerExcpetion = new InternalServerException( WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, restError); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS + status); throw internalServerExcpetion; } } else { final HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR; respStr = WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE; final RestError restError = new RestError(status, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_CODE, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS + status); throw new InternalServerException(WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, restError); } if (!workingDir.isEmpty()) { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } return extractKV; }
From source file:com.ephesoft.dcma.webservice.util.WebServiceHelper.java
public void processCreateHOCRXML(final HttpServletRequest req, final HttpServletResponse resp) throws InternalServerException, ValidationException { LOGGER.info("Start processing web service for create HOCR-XML for Batch Class"); String respStr = WebServiceUtil.EMPTY_STRING; String workingDir = WebServiceUtil.EMPTY_STRING; File zipInFolder = null;// w ww.jav a 2s . c om File zipOutFolder = null; int responseCode = 0; WebServiceParams webServiceParams = null; if (req instanceof DefaultMultipartHttpServletRequest) { try { final String webServiceFolderPath = batchSchemaService.getWebServicesFolderPath(); workingDir = WebServiceUtil.createWebServiceWorkingDir(webServiceFolderPath); final String outputDir = WebServiceUtil.createWebServiceOutputDir(workingDir); final DefaultMultipartHttpServletRequest multiPartRequest = (DefaultMultipartHttpServletRequest) req; final MultiValueMap<String, MultipartFile> fileMap = multiPartRequest.getMultiFileMap(); if (fileMap.size() != 2) { LOGGER.error("Invalid Number of files sent to the server"); respStr = WebServiceConstants.INVALID_ARGUMENTS_FOR_CREATE_HOCR; responseCode = WebServiceConstants.INVALID_PARAMETERS_CODE; } else { String xmlFileName = WebServiceUtil.EMPTY_STRING; String zipOutputLocation = WebServiceUtil.EMPTY_STRING; String zipFileNameWithOutExt = WebServiceUtil.EMPTY_STRING; for (final String fileName : fileMap.keySet()) { InputStream instream = null; OutputStream outStream = null; ZipInputStream zipstream = null; try { if (!(fileName.endsWith(FileType.ZIP.getExtensionWithDot()) || fileName.endsWith(FileType.XML.getExtensionWithDot()) || fileName.endsWith(FileType.TIF.getExtensionWithDot()) || fileName.endsWith(FileType.TIFF.getExtensionWithDot()))) { respStr = WebServiceConstants.INVALID_ARGUMENTS_FOR_CREATE_OCR_BATCH_CLASS; responseCode = WebServiceConstants.INVALID_PARAMETERS_CODE; } final MultipartFile multiPartFile = multiPartRequest.getFile(fileName); instream = multiPartFile.getInputStream(); if (fileName.endsWith(FileType.XML.getExtensionWithDot())) { xmlFileName = fileName; final File file = new File(workingDir + File.separator + fileName); outStream = new FileOutputStream(file); final byte[] buf = new byte[WebServiceUtil.bufferSize]; int len; while ((len = instream.read(buf)) > 0) { outStream.write(buf, 0, len); } } if (fileName.endsWith(FileType.ZIP.getExtensionWithDot())) { zipFileNameWithOutExt = FilenameUtils.removeExtension(fileName); zipInFolder = new File(workingDir + File.separator + zipFileNameWithOutExt); if (zipInFolder != null) { zipInFolder.mkdirs(); } zipstream = new ZipInputStream(instream); ZipEntry ze = zipstream.getNextEntry(); if (ze == null) { respStr = WebServiceConstants.NO_FILES_IN_ZIP_DIR; responseCode = WebServiceConstants.NO_FILES_IN_ZIP_DIR_CODE; LOGGER.error(respStr + " No files in the zip directory "); } while (ze != null) { String upzipFileName = ze.getName(); LOGGER.info("Unzipping " + upzipFileName); if (!(upzipFileName.endsWith(FileType.TIF.getExtensionWithDot()) || upzipFileName.endsWith(FileType.TIFF.getExtensionWithDot()) || upzipFileName.endsWith(FileType.PDF.getExtensionWithDot()))) { respStr = WebServiceConstants.UNSUPPORTED_FILE_TYPE_EXCEPTION_MESSAGE; responseCode = WebServiceConstants.UNSUPPORTED_FILE_TYPE_EXCEPTION_CODE; LOGGER.error("File name should be a valid tif, tiff or pdf file name only"); } final File filePath = new File(zipInFolder + File.separator + upzipFileName); outStream = new FileOutputStream(filePath); final byte[] buf = new byte[WebServiceUtil.bufferSize]; int len; while ((len = zipstream.read(buf)) > 0) { outStream.write(buf, 0, len); } final int pageCount = TIFFUtil .getTIFFPageCount(zipInFolder + File.separator + upzipFileName); if (pageCount > 1 || upzipFileName.endsWith(FileType.PDF.getExtensionWithDot())) { final BatchInstanceThread threadList = new BatchInstanceThread( new File(zipInFolder.toString()).getName() + Math.random()); LOGGER.info( "Start spliting multipage tiff/pdf file into tiffs using image magick"); imService.convertPdfOrMultiPageTiffToTiffUsingIM("", filePath, "", new File(EphesoftStringUtil.concatenate(zipInFolder.toString(), File.separator, upzipFileName)), threadList); threadList.execute(); } ze = zipstream.getNextEntry(); } } if (fileName.endsWith(FileType.TIFF.getExtensionWithDot()) || fileName.endsWith(FileType.TIF.getExtensionWithDot())) { zipFileNameWithOutExt = WebServiceUtil.EMPTY_STRING; final File file = new File(workingDir + File.separator + fileName); zipInFolder = new File(workingDir); outStream = new FileOutputStream(file); final byte[] buf = new byte[WebServiceUtil.bufferSize]; int len; while ((len = instream.read(buf)) > 0) { outStream.write(buf, 0, len); } final int pageCount = TIFFUtil .getTIFFPageCount(workingDir + File.separator + fileName); if (pageCount > 1) { final BatchInstanceThread threadList = new BatchInstanceThread( zipInFolder.getName() + Math.random()); LOGGER.info( "Start spliting multipage tiff/pdf file into tiffs using image magick"); imService.convertPdfOrMultiPageTiffToTiffUsingIM(WebServiceUtil.EMPTY_STRING, file, WebServiceUtil.EMPTY_STRING, new File(EphesoftStringUtil .concatenate(workingDir.toString(), File.separator, fileName)), threadList); threadList.execute(); } } } finally { IOUtils.closeQuietly(instream); IOUtils.closeQuietly(outStream); IOUtils.closeQuietly(zipstream); } } final File xmlFile = new File(workingDir + File.separator + xmlFileName); if (StringUtils.isNotEmpty(xmlFileName) && xmlFile.exists()) { final FileInputStream inputStream = new FileInputStream(xmlFile); final Source source = XMLUtil.createSourceFromStream(inputStream); final Object unmarshelledObject = batchSchemaDao.getJAXB2Template().getJaxb2Marshaller() .unmarshal(source); if (!(unmarshelledObject instanceof WebServiceParams)) { respStr = WebServiceConstants.INVALID_ARGUMENTS_IN_XML_INPUT_MESSAGE; responseCode = WebServiceConstants.INVALID_ARGUMENTS_IN_XML_INPUT_CODE; } else { webServiceParams = (WebServiceParams) unmarshelledObject; if (null != webServiceParams.getParams()) { final List<Param> paramList = webServiceParams.getParams().getParam(); if (paramList == null || paramList.isEmpty()) { final HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR; respStr = WebServiceConstants.INVALID_ARGUMENTS_IN_XML_INPUT_MESSAGE; responseCode = WebServiceConstants.INVALID_ARGUMENTS_IN_XML_INPUT_CODE; LOGGER.error(respStr + "\n No Parameters in the request" + status); } else { String batchClassId = WebServiceUtil.EMPTY_STRING; for (final Param param : paramList) { if (WebServiceConstants.BATCH_CLASS_IDENTIFIER .equalsIgnoreCase(param.getName())) { batchClassId = param.getValue(); continue; } if (WebServiceUtil.ZIP_OUTPUT_LOCATION.equalsIgnoreCase(param.getName())) { zipOutputLocation = param.getValue(); if (StringUtils.isBlank(zipOutputLocation) || !(new File(zipOutputLocation).isDirectory())) { respStr = WebServiceConstants.ZIP_OUTPUT_LOCATION_INVALID_MESSAGE; responseCode = WebServiceConstants.ZIP_OUTPUT_LOCATION_INVALID_CODE; LOGGER.error( "Zip output location is blank or invalid in xml input file"); } continue; } if (WebServiceUtil.ZIP_NAME.equalsIgnoreCase(param.getName())) { if (!((zipFileNameWithOutExt + FileType.ZIP.getExtensionWithDot()) .equals(param.getValue()))) { respStr = WebServiceConstants.INPUT_ZIP_NOT_FOUND_MESSAGE; responseCode = WebServiceConstants.INVALID_ARGUMENTS_IN_XML_INPUT_CODE; LOGGER.error( "Zip file name doesn't match zip file name in xml input file"); } else continue; } } if (respStr == null || respStr.isEmpty()) { if (batchClassId != null && !batchClassId.isEmpty()) { final BatchClass batchClass = batchClassService .getBatchClassByIdentifier(batchClassId); if (batchClass != null) { final String ocrEngine = getDefaultHOCRPlugin(batchClassId); String colorSwitch = WebServiceUtil.EMPTY_STRING; String cmdLanguage = WebServiceUtil.EMPTY_STRING; LOGGER.info(EphesoftStringUtil.concatenate("Ocr engine used is : ", ocrEngine)); if (WebServiceConstants.TESSERACT_HOCR_PLUGIN .equalsIgnoreCase(ocrEngine)) { final File dir = new File(zipInFolder + ""); File[] directoryListing = dir.listFiles(); if (directoryListing != null) { zipOutFolder = new File( outputDir + File.separator + zipFileNameWithOutExt); if (zipOutFolder != null) { zipOutFolder.mkdirs(); } for (File inputFile : directoryListing) { String inputFileName = inputFile.getName(); if (inputFileName != null && !inputFileName.isEmpty()) { if (inputFileName.endsWith( FileType.TIFF.getExtensionWithDot()) || inputFileName.endsWith(FileType.TIF .getExtensionWithDot())) { final int pageCountTiff = TIFFUtil .getTIFFPageCount(inputFile.toString()); if (pageCountTiff > 1) { continue; } if (WebServiceConstants.TESSERACT_HOCR_PLUGIN .equalsIgnoreCase(ocrEngine)) { final BatchPlugin pluginProperties = classPluginPropertiesService .getPluginProperties(batchClassId, WebServiceConstants.TESSERACT_HOCR_PLUGIN); if (pluginProperties != null) { if (pluginProperties .getPluginConfigurations( TesseractProperties.TESSERACT_COLOR_SWITCH) != null) { colorSwitch = classPluginPropertiesService .getPropertyValue( batchClassId, WebServiceConstants.TESSERACT_HOCR_PLUGIN, TesseractProperties.TESSERACT_COLOR_SWITCH); if (pluginProperties .getPluginConfigurations( TesseractProperties.TESSERACT_LANGUAGE) != null) { cmdLanguage = classPluginPropertiesService .getPropertyValue( batchClassId, WebServiceConstants.TESSERACT_HOCR_PLUGIN, TesseractProperties.TESSERACT_LANGUAGE); tesseractService.createOCR( zipInFolder.toString(), colorSwitch, inputFileName, zipOutFolder.toString(), cmdLanguage, WebServiceConstants.TESSERACT_CURRENT_VERSION); } else { respStr = WebServiceConstants.NO_TESSERACT_LANGUAGE_SUPPORT; responseCode = WebServiceConstants.INTERNAL_SERVER_ERROR_CODE; LOGGER.error( "No Language Support"); } } else { respStr = WebServiceConstants.NO_TESSERACT_COLOR_SWITCH; responseCode = WebServiceConstants.INTERNAL_SERVER_ERROR_CODE; LOGGER.error( "Colour Switch Not Found"); } } else { respStr = WebServiceConstants.NO_PROPERTY_FOR_TESSERACT_HOCR; responseCode = WebServiceConstants.INTERNAL_SERVER_ERROR_CODE; } } } } else { respStr = WebServiceConstants.INVALID_FILE_NAME; responseCode = WebServiceConstants.INVALID_PARAMETERS_CODE; LOGGER.error( "File Name should not be NULL or empty "); } } // End of for loop } else { respStr = WebServiceConstants.NO_FILES_IN_ZIP_DIR; responseCode = WebServiceConstants.NO_FILES_IN_ZIP_DIR_CODE; LOGGER.error(respStr + " No files in the zip directory "); } } if (respStr.isEmpty()) { ServletOutputStream out = null; ZipOutputStream zout = null; final String zipFileName = WebServiceUtil.serverOutputFolderName; resp.setContentType(WebServiceUtil.APPLICATION_X_ZIP); resp.setHeader(WebServiceUtil.CONTENT_DISPOSITION, WebServiceUtil.ATTACHMENT_FILENAME + zipFileName + FileType.ZIP.getExtensionWithDot() + "\"\r\n"); resp.setStatus(HttpServletResponse.SC_OK); try { out = resp.getOutputStream(); zout = new ZipOutputStream(out); FileUtils.zipDirectory(zipOutFolder.toString(), zout, zipFileName); } catch (final FileNotFoundException fileNotFoundException) { String messageString = fileNotFoundException.getMessage(); messageString = messageString.substring( messageString.lastIndexOf(File.separator)); respStr = WebServiceConstants.FILE_NOT_FOUND + messageString; responseCode = WebServiceConstants.INTERNAL_SERVER_ERROR_CODE; LOGGER.error("Could Not Copy the File " + fileNotFoundException.getMessage()); } catch (final IOException ioExcpetion) { respStr = WebServiceConstants.ERROR_WHILE_CREATING_ZIPPED_FILE + ioExcpetion; responseCode = WebServiceConstants.INTERNAL_SERVER_ERROR_CODE; LOGGER.error(respStr); } finally { IOUtils.closeQuietly(zout); IOUtils.closeQuietly(out); } } if (respStr.isEmpty()) { FileOutputStream fos = null; ZipOutputStream zos = null; final File out = new File(zipOutputLocation + File.separator + zipFileNameWithOutExt + FileType.ZIP.getExtensionWithDot()); try { fos = new FileOutputStream(out); zos = new ZipOutputStream(fos); FileUtils.zipDirectory(zipOutFolder.toString(), zos, zipFileNameWithOutExt); } catch (final FileNotFoundException fileNotFoundException) { String messageString = fileNotFoundException.getMessage(); messageString = messageString.substring( messageString.lastIndexOf(File.separator)); respStr = WebServiceConstants.FILE_NOT_FOUND + messageString; responseCode = WebServiceConstants.INTERNAL_SERVER_ERROR_CODE; LOGGER.error("Could Not Copy the File " + fileNotFoundException.getMessage()); } catch (final IOException ioExcpetion) { respStr = WebServiceConstants.ERROR_WHILE_CREATING_ZIPPED_FILE + ioExcpetion; responseCode = WebServiceConstants.INTERNAL_SERVER_ERROR_CODE; LOGGER.error(respStr); } finally { IOUtils.closeQuietly(zos); IOUtils.closeQuietly(fos); } } } else { respStr = WebServiceConstants.INVALID_BATCH_CLASS_ID_MESSAGE; responseCode = WebServiceConstants.INVALID_ARGUMENTS_IN_XML_INPUT_CODE; LOGGER.error(respStr + " Batch Class ID doesnot exist "); } } else { respStr = WebServiceConstants.INVALID_BATCH_CLASS_ID_MESSAGE; responseCode = WebServiceConstants.INVALID_ARGUMENTS_IN_XML_INPUT_CODE; LOGGER.error(respStr + " No input of Batch Class ID "); } } } } } } else { respStr = WebServiceConstants.INPUT_FILES_NOT_FOUND_MESSAGE; responseCode = WebServiceConstants.INVALID_PARAMETERS_CODE; } } } catch (final FileNotFoundException fileNotFoundException) { String message = fileNotFoundException.getMessage(); message = message.substring(message.lastIndexOf(File.separator)); respStr = WebServiceConstants.FILE_NOT_FOUND + message; } catch (final ValidationException validationException) { throw validationException; } catch (final InternalServerException internalServerError) { throw internalServerError; } catch (final Exception exception) { respStr = WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE + exception; responseCode = WebServiceConstants.INTERNAL_SERVER_ERROR_CODE; exception.printStackTrace(); } finally { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir)); } } else { respStr = WebServiceConstants.INVALID_MULTIPART_REQUEST; responseCode = WebServiceConstants.INVALID_PARAMETERS_CODE; } validateResponse(responseCode, respStr); }
From source file:com.ephesoft.dcma.webservice.util.WebServiceHelper.java
/** * This Web Service implements the functionality of uploading the Batch and creating the new BatchInstances with the name provided * by the user making sure that the there is no Other Batch Instance with the same name under that Batch class and as well as the * user has the access to that Batch Class * /*from w w w . j a v a 2 s. co m*/ * @param req {@link HttpServletRequest} The request Object encapsulated for the clients Request * @param batchClassIdentifier {@link String} Batch Class Identifier which uniquely Identifies the Object * @param batchInstanceName {@link String} Batch Instance Name that is the unique name which identifies the batch Instance * @param roles {@link Set} Set of the roles assigned to the user * @return {@link String} the Result to be displaying When the Request is executed successfully withoput generating an Exception * @throws ValidationException When the Input Parameters cannot be validated * @throws UnAuthorisedAccessException When User tries to make an access to a batch which is not under his role * @throws NoUserRoleException : When the user is not assigned to any role * @throws UnSupportedFileTypeException : When the uploaded file is not from any of the supprted file type by plugin pdf/tif/tiff * @throws BatchNameAlreadyExistException : The Batch With same Name aslready exist * @throws InternalServerException : When Some IOException Occurs at Server * @throws Exception When unable to process the Multi-Part Request */ public String uploadBatch(final HttpServletRequest req, final String batchClassIdentifier, final String batchInstanceName, final Set<String> roles) throws ValidationException, UnAuthorisedAccessException, NoUserRoleException, UnSupportedFileTypeException, BatchNameAlreadyExistException, InternalServerException, Exception { String workingDir = WebServiceUtil.EMPTY_STRING; boolean isSuccess = false; try { InputStream inStream = null; OutputStream outStream = null; if (StringUtils.isBlank(batchClassIdentifier)) { throw new ValidationException( WebServiceConstants.INVALID_BATCH_CLASS_ID_MESSAGE + batchClassIdentifier, createUnprocessableEntityRestError(WebServiceConstants.INVALID_BATCH_CLASS_ID_MESSAGE, WebServiceConstants.INVALID_BATCH_CLASS_ID_CODE)); } else if (StringUtils.isBlank(batchInstanceName)) { throw new ValidationException( WebServiceConstants.INVALID_BATCH_INSTANCE_NAME_MESSAGE + batchClassIdentifier, createUnprocessableEntityRestError(WebServiceConstants.INVALID_BATCH_INSTANCE_NAME_MESSAGE, WebServiceConstants.INVALID_BATCH_INSTANCE_NAME_CODE)); } else if (req instanceof DefaultMultipartHttpServletRequest) { final String webServiceFolderPath = batchSchemaService.getWebServicesFolderPath(); workingDir = WebServiceUtil.createWebServiceWorkingDir(webServiceFolderPath); final DefaultMultipartHttpServletRequest multiPartRequest = (DefaultMultipartHttpServletRequest) req; final MultiValueMap<String, MultipartFile> fileMap = multiPartRequest.getMultiFileMap(); String uncFolderPath = WebServiceUtil.EMPTY_STRING; final List<File> fileList = new ArrayList<File>(); if (CollectionUtils.isNotEmpty(roles)) { final BatchClass batchClass = batchClassService.getBatchClassByUserRoles(roles, batchClassIdentifier); if (batchClass == null) { LOGGER.error( "The user does not have the authentication to run the batch in the requested batch class with id: " + batchClassIdentifier); throw new UnAuthorisedAccessException(); } else { uncFolderPath = batchClass.getUncFolder(); } } else { LOGGER.error(WebServiceConstants.NO_USER_ROLE_EXCEPTION_MESSAGE); throw new NoUserRoleException(); } if (fileMap.size() == 0) { throw new ValidationException(WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, createUnprocessableEntityRestError(WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_CODE)); } for (final String srcFileName : fileMap.keySet()) { if (FileType.isValidFileName(srcFileName)) { final File file = new File(workingDir + File.separator + srcFileName); fileList.add(file); final MultipartFile multiPartFile = multiPartRequest.getFile(srcFileName); inStream = multiPartFile.getInputStream(); outStream = new FileOutputStream(file); final byte[] buf = new byte[WebServiceUtil.bufferSize]; int len = inStream.read(buf); while (len > 0) { outStream.write(buf, 0, len); len = inStream.read(buf); } IOUtils.closeQuietly(inStream); IOUtils.closeQuietly(outStream); } else { LOGGER.error(WebServiceConstants.UNSUPPORTED_FILE_TYPE_EXCEPTION_MESSAGE); throw new UnSupportedFileTypeException(); } } final String filePath = workingDir + File.separator + batchInstanceName; final File file = new File(filePath); if (file.mkdir()) { for (final File srcFileName : fileList) { final File destFile = new File(filePath + File.separator + srcFileName.getName()); FileUtils.copyFile(srcFileName, destFile); } final File destFile = new File(uncFolderPath + File.separator + batchInstanceName); if (!destFile.exists()) { FileUtils.copyDirectoryWithContents(file, destFile); } else { LOGGER.error(WebServiceConstants.BATCH_NAME_ALREADY_EXIST_EXCEPTION_MESSAGE); throw new BatchNameAlreadyExistException(); } isSuccess = true; } else { LOGGER.error(WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE); throw new InternalServerException(WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, createUnprocessableEntityRestError(WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_CODE)); } } else { throw new ValidationException(WebServiceConstants.INVALID_INPUT_FOR_UPLOAD_BATCH, createUnprocessableEntityRestError(WebServiceConstants.INVALID_INPUT_FOR_UPLOAD_BATCH, WebServiceConstants.INVALID_PARAMETERS_CODE)); } } finally { if (!workingDir.isEmpty()) { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } } return isSuccess ? WebServiceConstants.BATCH_UPLOADED_SUCCESS_MESSAGE : WebServiceConstants.BATCH_UPLOADED_FAILURE_MESSAGE; }
From source file:com.ephesoft.dcma.webservice.util.WebServiceHelper.java
/** * This Method is Added to process the input provided for WebService to upload files for Learning * /*from ww w .j av a 2 s .c o m*/ * @param req the {@link HttpServletRequest} the request header for this web service hit * @throws InternalServerException the internal server exception * @throws ValidationException the validation exception */ public void getUploadFilesforLearning(final HttpServletRequest req) throws InternalServerException, ValidationException { LOGGER.info("Inside getUploadFilesforLearning method"); String respStr = WebServiceConstants.EMPTY_STRING; String workingDir = WebServiceConstants.EMPTY_STRING; String docTypeName = WebServiceConstants.EMPTY_STRING; String learningType = WebServiceConstants.EMPTY_STRING; List<String> fileNamesFirst = null; List<String> fileNamesMiddle = null; List<String> fileNamesLast = null; if (req instanceof DefaultMultipartHttpServletRequest) { try { final String webServiceFolderPath = batchSchemaService.getWebServicesFolderPath(); workingDir = WebServiceUtil.createWebServiceWorkingDir(webServiceFolderPath); final DefaultMultipartHttpServletRequest multiPartRequest = (DefaultMultipartHttpServletRequest) req; final MultiValueMap<String, MultipartFile> fileMap = multiPartRequest.getMultiFileMap(); final int fileCountValue = checkFileCountForExtentionType("xml", fileMap); if (fileCountValue >= 2) { final HttpStatus status = HttpStatus.UNPROCESSABLE_ENTITY; respStr = "There are more than 1 xml file uploaded with the request. Only 1 xml is expected"; final RestError restError = new RestError(status, WebServiceConstants.INTERNAL_SERVER_ERROR_CODE, respStr, respStr + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); final InternalServerException internalServerExcpetion = new InternalServerException( WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, restError); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS + status); throw internalServerExcpetion; } String xmlFileName = WebServiceConstants.EMPTY_STRING; xmlFileName = getXMLFile(workingDir, multiPartRequest, fileMap); LOGGER.info("XML file name is" + xmlFileName); UploadLearningFiles uploadLearningFileXML = null; final File xmlFile = new File(workingDir + File.separator + xmlFileName); final FileInputStream inputStream = new FileInputStream(xmlFile); final Source source = XMLUtil.createSourceFromStream(inputStream); uploadLearningFileXML = (UploadLearningFiles) batchSchemaDao.getJAXB2Template().getJaxb2Marshaller() .unmarshal(source); final String inputXMLValidationRes = validateInputXMLForLearning(uploadLearningFileXML); if (inputXMLValidationRes.isEmpty()) { String searchPathName = WebServiceConstants.EMPTY_STRING; final List<DocType> docTypes = uploadLearningFileXML.getDocType(); if (isValidFileCountForLearning(docTypes, fileMap.size() - 1)) { for (final DocType docType : docTypes) { docTypeName = docType.getDocTypeName(); learningType = docType.getLearningType(); if (docType.getPageTypeFirst() != null && docType.getPageTypeFirst().getFilesToBeUploaded().getFileName() != null && !docType.getPageTypeFirst().getFilesToBeUploaded().getFileName().isEmpty()) { fileNamesFirst = docType.getPageTypeFirst().getFilesToBeUploaded().getFileName(); if (LUCENE_SEARCH_CLASSIFICATION_TYPE.equalsIgnoreCase(learningType)) { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getSearchClassSamplePath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.FIRST_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesFirst); LOGGER.info( "Sucessfully Uploaded Images for lucene-search-classification-sample"); } else if ("Image".equalsIgnoreCase(learningType)) { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getImageMagickBaseFolderPath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.FIRST_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesFirst); } else { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getSearchClassSamplePath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.FIRST_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesFirst); LOGGER.info( "Sucessfully Uploaded Images for lucene-search-classification-sample"); searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getImageMagickBaseFolderPath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.FIRST_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesFirst); LOGGER.info("Sucessfully Uploaded Images for image-classification-sample"); } } if (docType.getPageTypeMiddle() != null && docType.getPageTypeMiddle().getFilesToBeUploaded().getFileName() != null && !docType.getPageTypeMiddle().getFilesToBeUploaded().getFileName() .isEmpty()) { fileNamesMiddle = docType.getPageTypeMiddle().getFilesToBeUploaded().getFileName(); if (LUCENE_SEARCH_CLASSIFICATION_TYPE.equalsIgnoreCase(learningType)) { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getSearchClassSamplePath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.MIDDLE_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesMiddle); LOGGER.info( "Sucessfully Uploaded Images for lucene-search-classification-sample"); } else if ("Image".equalsIgnoreCase(learningType)) { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getImageMagickBaseFolderPath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.MIDDLE_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesMiddle); LOGGER.info("Sucessfully Uploaded Images for image-classification-sample"); } else { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getSearchClassSamplePath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.MIDDLE_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesMiddle); LOGGER.info( "Sucessfully Uploaded Images for lucene-search-classification-sample"); searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getImageMagickBaseFolderPath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.MIDDLE_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesMiddle); LOGGER.info("Sucessfully Uploaded Images for image-classification-sample"); } } if (docType.getPageTypeLast() != null && docType.getPageTypeLast().getFilesToBeUploaded().getFileName() != null && !docType.getPageTypeLast().getFilesToBeUploaded().getFileName().isEmpty()) { fileNamesLast = docType.getPageTypeLast().getFilesToBeUploaded().getFileName(); if (LUCENE_SEARCH_CLASSIFICATION_TYPE.equalsIgnoreCase(learningType)) { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getSearchClassSamplePath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.LAST_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesLast); LOGGER.info( "Sucessfully Uploaded Images for lucene-search-classification-sample"); } else if ("Image".equalsIgnoreCase(learningType)) { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getImageMagickBaseFolderPath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.LAST_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesLast); LOGGER.info("Sucessfully Uploaded Images for image-classification-sample"); } else { searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getSearchClassSamplePath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.LAST_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesLast); LOGGER.info( "Sucessfully Uploaded Images for lucene-search-classification-sample"); searchPathName = EphesoftStringUtil.concatenate( batchSchemaService.getImageMagickBaseFolderPath( uploadLearningFileXML.getBatchClassId(), true), File.separator, docType.getDocTypeName(), File.separator, docTypeName, WebServiceConstants.LAST_PAGE); uploadInputImagesToLearningFolder(searchPathName, workingDir, fileNamesLast); LOGGER.info("Sucessfully Uploaded Images for image-classification-sample"); } } } } else { final RestError restError = createUnprocessableEntityRestError( WebServiceConstants.INVALID_NUMBER_OF_FILES_FOR_UPLOAD_LEARNING, WebServiceConstants.INVALID_ARGUMENTS_IN_XML_INPUT_CODE); LOGGER.error("Mismatch in the XML input and files sent."); throw new ValidationException( WebServiceConstants.INVALID_NUMBER_OF_FILES_FOR_UPLOAD_LEARNING, restError); } } else { final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.PARAMETER_XML_INCORRECT_CODE, inputXMLValidationRes, inputXMLValidationRes + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error(WebServiceConstants.PARAMETER_XML_INCORRECT_MESSAGE + WebServiceConstants.HTTP_STATUS + HttpStatus.UNPROCESSABLE_ENTITY); throw new InternalServerException(inputXMLValidationRes, restError); } } catch (final FileNotFoundException fe) { respStr = WebServiceConstants.INPUT_XML_NOT_FOUND_MESSAGE; final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_XML_NOT_FOUND_CODE, respStr, WebServiceConstants.INPUT_XML_NOT_FOUND_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); final InternalServerException internalServerExcpetion = new InternalServerException( WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, restError); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS); throw internalServerExcpetion; } catch (final org.xml.sax.SAXParseException ex) { respStr = "Error in Parsing Input XML.Please try again" + ex.getMessage(); final RestError restError = new RestError(HttpStatus.UNPROCESSABLE_ENTITY, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_CODE, respStr, WebServiceConstants.INPUT_XML_NOT_ABLE_TO_PARSE_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); final InternalServerException internalServerExcpetion = new InternalServerException( WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, restError); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS); throw internalServerExcpetion; // JIRA-Bug-11130 } catch (InternalServerException internalServerException) { throw internalServerException; } catch (ValidationException validationException) { throw validationException; } catch (final Exception exception) { final HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR; respStr = WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE + exception; final RestError restError = new RestError(status, WebServiceConstants.INTERNAL_SERVER_ERROR_CODE, WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); final InternalServerException internalServerExcpetion = new InternalServerException( WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, restError); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS + status); throw internalServerExcpetion; } finally { try { if (!workingDir.isEmpty()) { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } } catch (final Exception ex) { final HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR; respStr = WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE + ex.getMessage(); final RestError restError = new RestError(status, WebServiceConstants.INTERNAL_SERVER_ERROR_CODE, WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error("Error response at server:" + respStr); final InternalServerException internalServerExcpetion = new InternalServerException( WebServiceConstants.INTERNAL_SERVER_ERROR_MESSAGE, restError); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS + status); throw internalServerExcpetion; } } } else { final HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR; respStr = WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE; final RestError restError = new RestError(status, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_CODE, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE + WebServiceConstants.CLASS_WEB_SERVICE_UTILITY, WebServiceConstants.DEFAULT_URL); LOGGER.error(respStr + WebServiceConstants.HTTP_STATUS + status); throw new InternalServerException(WebServiceConstants.IMPROPER_INPUT_TO_SERVER_MESSAGE, restError); } }
From source file:com.ephesoft.dcma.webservice.EphesoftWebServiceAPI.java
/** * To extract From Image.//from w w w .java 2s . c om * @param req {@link HttpServletRequest} * @param resp {@link HttpServletResponse} */ @RequestMapping(value = "/extractFromImage", method = RequestMethod.POST) @ResponseBody public void extractFromImage(final HttpServletRequest req, final HttpServletResponse resp) { LOGGER.info("Start processing web service for performExtractionForImage.."); String respStr = WebServiceUtil.EMPTY_STRING; String workingDir = WebServiceUtil.EMPTY_STRING; InputStream instream = null; OutputStream outStream = null; if (req instanceof DefaultMultipartHttpServletRequest) { try { final String webServiceFolderPath = bsService.getWebServicesFolderPath(); workingDir = WebServiceUtil.createWebServiceWorkingDir(webServiceFolderPath); final String outputDir = WebServiceUtil.createWebServiceOutputDir(workingDir); final DefaultMultipartHttpServletRequest multiPartRequest = (DefaultMultipartHttpServletRequest) req; final BatchInstanceThread batchInstanceThread = new BatchInstanceThread(); final MultiValueMap<String, MultipartFile> fileMap = multiPartRequest.getMultiFileMap(); final DefaultMultipartHttpServletRequest multipartReq = (DefaultMultipartHttpServletRequest) req; String batchClassId = WebServiceUtil.EMPTY_STRING; String ocrEngine = WebServiceUtil.EMPTY_STRING; String colorSwitch = WebServiceUtil.EMPTY_STRING; String projectFile = WebServiceUtil.EMPTY_STRING; String cmdLanguage = WebServiceUtil.EMPTY_STRING; String documentType = WebServiceUtil.EMPTY_STRING; String tifFileName = WebServiceUtil.EMPTY_STRING; for (final Enumeration<String> params = multipartReq.getParameterNames(); params .hasMoreElements();) { final String paramName = params.nextElement(); if (paramName.equalsIgnoreCase(WebServiceUtil.BATCH_CLASS_IDENTIFIER)) { batchClassId = multipartReq.getParameter(paramName); continue; } if (paramName.equalsIgnoreCase(WebServiceUtil.OCR_ENGINE)) { ocrEngine = multipartReq.getParameter(paramName); continue; } if (paramName.equalsIgnoreCase(WebServiceUtil.COLOR_SWITCH)) { colorSwitch = multipartReq.getParameter(paramName); continue; } if (paramName.equalsIgnoreCase(WebServiceUtil.PROJECT_FILE)) { projectFile = multipartReq.getParameter(paramName); continue; } if (paramName.equalsIgnoreCase(WebServiceUtil.CMD_LANGUAGE)) { cmdLanguage = multipartReq.getParameter(paramName); continue; } if (paramName.equalsIgnoreCase(WebServiceUtil.DOCUMENT_TYPE)) { documentType = multipartReq.getParameter(paramName); continue; } } LOGGER.info("Parameters for the web service are: "); LOGGER.debug(WebServiceUtil.BATCH_CLASS_IDENTIFIER + " :" + batchClassId); LOGGER.debug(WebServiceUtil.OCR_ENGINE + " :" + ocrEngine); LOGGER.debug(WebServiceUtil.COLOR_SWITCH + " :" + colorSwitch); LOGGER.debug(WebServiceUtil.PROJECT_FILE + " :" + projectFile); // logger.debug("" + tesseractVersion); LOGGER.debug(WebServiceUtil.CMD_LANGUAGE + " :" + cmdLanguage); LOGGER.debug(WebServiceUtil.DOCUMENT_TYPE + " :" + documentType); final int attachedFileSize = fileMap.size(); if (attachedFileSize != 1) { respStr = "Invalid number of files. Expected number of file(s): 1 of type: tif/tiff/png file. Recieved: " + attachedFileSize + " file(s)"; } if (respStr.isEmpty()) { for (final String fileName : fileMap.keySet()) { try { final MultipartFile multiPartFile = multiPartRequest.getFile(fileName); instream = multiPartFile.getInputStream(); final File file = new File(workingDir + File.separator + fileName); outStream = new FileOutputStream(file); final byte[] buf = new byte[WebServiceUtil.bufferSize]; int len = instream.read(buf); while (len > 0) { outStream.write(buf, 0, len); len = instream.read(buf); } if (fileName.endsWith(FileType.TIF.getExtensionWithDot()) || fileName.endsWith(FileType.TIFF.getExtensionWithDot())) { tifFileName = fileName; LOGGER.debug("Image Name :" + tifFileName); } } finally { IOUtils.closeQuietly(instream); IOUtils.closeQuietly(outStream); } } final StringBuilder projectFileBuffer = new StringBuilder(); projectFileBuffer.append(bsService.getBaseFolderLocation()); projectFileBuffer.append(File.separator); projectFileBuffer.append(batchClassId); projectFileBuffer.append(File.separator); projectFileBuffer.append(RECOSTAR_EXTRACTION); projectFileBuffer.append(File.separator); projectFileBuffer.append(projectFile); final String projectFilePath = projectFileBuffer.toString(); final String results = WebServiceUtil.validateExtractFromImageAPI(workingDir, ocrEngine, colorSwitch, projectFilePath, cmdLanguage, tifFileName); if (!results.isEmpty()) { respStr = results; } else { String[] fileNames = null; final File file = new File(workingDir); fileNames = splitImagesAndCreatePNG(workingDir, colorSwitch, file); LOGGER.info("Number of file is:" + fileNames.length); LOGGER.info("OcrEngine used for generating ocr is :" + ocrEngine); if (ocrEngine.equalsIgnoreCase(WebServiceUtil.RECOSTAR)) { respStr = createHOCRViaRecostar(workingDir, outputDir, batchInstanceThread, colorSwitch, projectFilePath, fileNames); } else if (ocrEngine.contains(WebServiceUtil.TESSERACT)) { respStr = createHOCRViaTesseract(workingDir, outputDir, batchInstanceThread, colorSwitch, ocrEngine, cmdLanguage, fileNames); } else { respStr = "Please select valid tool for generating OCR file."; } if (respStr.isEmpty()) { respStr = executeBatchInstanceThread(workingDir, outputDir, batchInstanceThread, ocrEngine, fileNames); } } } if (respStr.isEmpty()) { final String hocrFilePath = outputDir + File.separator + tifFileName.substring(0, tifFileName.lastIndexOf(CONSTANT_DOT) + 1) + FileType.HTML.getExtension(); LOGGER.debug("Generated HOCR file located at " + hocrFilePath); final Set<String> loggedInUserRole = getUserRoles(req); if (!isBatchClassViewableToUser(batchClassId, loggedInUserRole, isSuperAdmin(req))) { respStr = "User is not authorized to view the batch class for given identifier:" + batchClassId; LOGGER.error("Error response at server:" + respStr); } LOGGER.info("Performing Extraction using KV mechanism."); respStr = extractKVFromHOCR(resp, respStr, outputDir, batchClassId, hocrFilePath, documentType); } } catch (final DCMAException dcmae) { respStr = "Error in processing request. Detailed exception is " + dcmae; LOGGER.error("Error response at server:" + respStr); } catch (final Exception e) { respStr = INTERNAL_SERVER_ERROR + e; LOGGER.error("Error response at server:" + respStr); if (!workingDir.isEmpty()) { FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } } } else { respStr = IMPROPER_INPUT_TO_SERVER; LOGGER.error("Error response at server:" + respStr); } if (!workingDir.isEmpty()) { LOGGER.info("Clearing the temporary files."); FileUtils.deleteDirectoryAndContentsRecursive(new File(workingDir).getParentFile()); } if (!respStr.isEmpty()) { try { resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, respStr); LOGGER.error("Error response at server:" + respStr); } catch (final IOException ioe) { LOGGER.info( "Exception in sending the error code to client. Logged the exception for debugging:" + ioe, ioe); } } }
From source file:eionet.webq.web.controller.cdr.IntegrationWithCDRControllerIntegrationTest.java
@SuppressWarnings("unchecked") @Test/*from w w w . ja va 2s .c o m*/ public void expectXmlFilesSetForMenu() throws Exception { saveAvailableWebFormWithSchema(XML_SCHEMA); saveAvailableWebFormWithSchema(XML_SCHEMA); rpcClientWillReturnFileForSchema(XML_SCHEMA); MultiValueMap<String, XmlFile> files = (MultiValueMap<String, XmlFile>) requestToWebQMenuAndGetModelAttribute( "xmlFiles"); assertThat(files.size(), equalTo(1)); assertTrue(files.containsKey(XML_SCHEMA)); }
From source file:org.springframework.http.converter.FormHttpMessageConverterTests.java
@Test public void readForm() throws Exception { String body = "name+1=value+1&name+2=value+2%2B1&name+2=value+2%2B2&name+3"; MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.ISO_8859_1)); inputMessage.getHeaders()// w ww .j a v a 2s. co m .setContentType(new MediaType("application", "x-www-form-urlencoded", StandardCharsets.ISO_8859_1)); MultiValueMap<String, String> result = this.converter.read(null, inputMessage); assertEquals("Invalid result", 3, result.size()); assertEquals("Invalid result", "value 1", result.getFirst("name 1")); List<String> values = result.get("name 2"); assertEquals("Invalid result", 2, values.size()); assertEquals("Invalid result", "value 2+1", values.get(0)); assertEquals("Invalid result", "value 2+2", values.get(1)); assertNull("Invalid result", result.getFirst("name 3")); }
From source file:org.springframework.integration.configuration.EnableIntegrationTests.java
@Test @DirtiesContext/*w w w . j av a 2 s. c om*/ public void testRoles() { assertThat(this.roleController.getRoles(), containsInAnyOrder("foo", "bar")); assertFalse(this.roleController.allEndpointsRunning("foo")); assertFalse(this.roleController.noEndpointsRunning("foo")); assertTrue(this.roleController.allEndpointsRunning("bar")); assertFalse(this.roleController.noEndpointsRunning("bar")); Map<String, Boolean> state = this.roleController.getEndpointsRunningStatus("foo"); assertThat(state.get("annotationTestService.handle.serviceActivator"), equalTo(Boolean.FALSE)); assertThat(state.get("enableIntegrationTests.ContextConfiguration2.sendAsyncHandler.serviceActivator"), equalTo(Boolean.TRUE)); this.roleController.startLifecyclesInRole("foo"); assertTrue(this.roleController.allEndpointsRunning("foo")); this.roleController.stopLifecyclesInRole("foo"); assertFalse(this.roleController.allEndpointsRunning("foo")); assertTrue(this.roleController.noEndpointsRunning("foo")); @SuppressWarnings("unchecked") MultiValueMap<String, SmartLifecycle> lifecycles = TestUtils.getPropertyValue(this.roleController, "lifecycles", MultiValueMap.class); assertEquals(2, lifecycles.size()); assertEquals(2, lifecycles.get("foo").size()); assertEquals(1, lifecycles.get("bar").size()); assertFalse(this.serviceActivatorEndpoint.isRunning()); assertFalse(this.sendAsyncHandler.isRunning()); assertEquals(2, lifecycles.size()); assertEquals(2, lifecycles.get("foo").size()); }
From source file:org.springframework.social.oauth1.SigningSupport.java
/** * Builds the authorization header./*ww w . j a va2 s.co m*/ * The elements in additionalParameters are expected to not be encoded. */ public String buildAuthorizationHeaderValue(HttpMethod method, URI targetUrl, Map<String, String> oauthParameters, MultiValueMap<String, String> additionalParameters, String consumerSecret, String tokenSecret) { StringBuilder header = new StringBuilder(); header.append("OAuth "); for (Entry<String, String> entry : oauthParameters.entrySet()) { header.append(oauthEncode(entry.getKey())).append("=\"").append(oauthEncode(entry.getValue())) .append("\", "); } MultiValueMap<String, String> collectedParameters = new LinkedMultiValueMap<String, String>( (int) ((oauthParameters.size() + additionalParameters.size()) / .75 + 1)); collectedParameters.setAll(oauthParameters); collectedParameters.putAll(additionalParameters); String baseString = buildBaseString(method, getBaseStringUri(targetUrl), collectedParameters); String signature = calculateSignature(baseString, consumerSecret, tokenSecret); header.append(oauthEncode("oauth_signature")).append("=\"").append(oauthEncode(signature)).append("\""); return header.toString(); }