FileParserAppComponent
Required to implement a file-parser component. File parsers parses an input stream of a file and returns structured data as a result. This can be used to parse all sorts of images such as applying machine learning to a file and return the results - or parsing a CSV file and producing the rows as structured output.
Source: Github
Example:
package my.org.components;
import io.dexi.service.AppContext;
import io.dexi.service.components.AppComponent;
import io.dexi.service.components.FileParserAppComponent;
import io.dexi.service.exceptions.UserErrorException;
import io.dexi.service.utils.ResultStream;
import org.apache.commons.io.IOUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@AppComponent("parse-file-with-my-app")
public class MyAppFileParserAppComponent implements FileParserAppComponent<MyAppConfig, MyComponentConfig> {
@Override
public Class<MyComponentConfig> getComponentConfigClass() {
return MyComponentConfig.class;
}
@Override
public void parse(AppContext<MyAppConfig, MyComponentConfig> ctxt, HttpServletRequest request, ResultStream resultStream) {
try (InputStream in = request.getInputStream()) {
//Implement parsing of input stream here
resultStream.append(myResult);
} catch (IOException e) {
throw new UserErrorException("Failed to parse data from input stream" , e);
}
}
}
components:
- name: parse-file-with-my-app
type: file-parser
title: Parse file using my app
specification:
endpoint: # Will invoke MyAppFileParserAppComponent::parse
url: "${baseUrl}/dexi/file/parse"
method: POST
outputs:
rowIndex:
title: Row Index
type: number
rowValue:
title: Row Value
type: string
Updated almost 5 years ago