Re: [xwiki-devs] [GSOC]get control of the conversion target temp file path
On Aug 24, 2008, at 6:40 AM, Wang Ning wrote:
Hi,
Yes, I think it's necessary, if the client want to control the output directory.
Ok I've thought a bit about this and here's what I propose: 1) Introduce a new ConverterOutput interface with the following methods: - saveImage(String imageName, InputStream imageData); - saveDocument(InputStream documentData); 2) Modify Converter interface to be: void convert(InputStream sourceData, OfficeDocumentType sourceType, ConverterOutput outputData, OfficeDocumentType outputType); 3) Provide 1 implementation of ConverterOutput for the moment (+ a mock one for the unit tests of the Converter): XWikiDocumentConverterOutput. This implementation stores the result of the conversion in a XWiki Document (it's name/location is passed in the constructor). In the future if we need other implementations we could add them (like a FileConverterOutput, etc) but they're not needed for now. Note 1: 3) is much cleaner and allows to move some of the code in the plugin to the XWikiDocumentConverterOutput class. Note 2: We can fully read the sourceData internally to save the input data to a file in a XWiki temporary directory (and thus control the output of the image files by jodconverter) WDYT? Thanks -Vincent PS: In the future please use the mailing list for everything related to xwiki.
In jodconverter, there a two main interface:
1) void convertInternal(InputStream inputStream, DocumentFormat inputFormat, OutputStream outputStream, DocumentFormat outputFormat);
2) void convertInternal(File inputFile, DocumentFormat inputFormat, File outputFile, DocumentFormat outputFormat);
The 1) just create a temp file for the outputstream in the system temp directory. So if you want to control the output file directory, you just have to change system temp directory which is not a way. In our case, we want to get all the output when convert to html. So I don't think this interface is enough.
The 2) interface just can output all the result file to the outputFile's directory which can get from xwiki.getTempFile(). Maybe you think we can use two Files in clients and deliver the FileOutputStream and FileInputStream to the 1) interface, you just get one output file in the FileOutputStream and can get the other results. The client still can't get the temp directory where the other output files.
WDYT?
On Sun, Aug 24, 2008 at 4:02 AM, Vincent Massol <[email protected]> wrote:
Hi Wang,
On Aug 23, 2008, at 9:55 PM, Wang Ning wrote:
Hi Vincent,
I add a interface in the OfficeConverter void convert(File inputFile, OfficeDocumentType inputDocumentType, File outputFile, OfficeDocumentType outputDocumentType) throws OfficeConverterException; I think this useful.
I don't think we need this since you can use a FileInputStream and a FileOutputStream.
Thanks -Vincent
And I change the OfficeConverterPlugin that I can control the output directory of the conversion.
On Aug 24, 2008, at 10:15 AM, Vincent Massol wrote:
On Aug 24, 2008, at 6:40 AM, Wang Ning wrote:
Hi,
Yes, I think it's necessary, if the client want to control the output directory.
Ok I've thought a bit about this and here's what I propose:
1) Introduce a new ConverterOutput interface with the following methods: - saveImage(String imageName, InputStream imageData); - saveDocument(InputStream documentData);
Actually just realized that in some cases you'll have more than 1 output file so instead you should have: saveDocument(String documentName, InpuStream documentData); Also is there a notion of main file? When there are several files how do the user know which one is the start/main file?
2) Modify Converter interface to be:
void convert(InputStream sourceData, OfficeDocumentType sourceType, ConverterOutput outputData, OfficeDocumentType outputType);
3) Provide 1 implementation of ConverterOutput for the moment (+ a mock one for the unit tests of the Converter):
I didn't mean a mock class but to use jmock as we're doing in other tests to dynamically mock the ConverterOutput interface. Thanks -Vincent
XWikiDocumentConverterOutput. This implementation stores the result of the conversion in a XWiki Document (it's name/location is passed in the constructor). In the future if we need other implementations we could add them (like a FileConverterOutput, etc) but they're not needed for now.
Note 1: 3) is much cleaner and allows to move some of the code in the plugin to the XWikiDocumentConverterOutput class. Note 2: We can fully read the sourceData internally to save the input data to a file in a XWiki temporary directory (and thus control the output of the image files by jodconverter)
WDYT?
Thanks -Vincent
PS: In the future please use the mailing list for everything related to xwiki.
In jodconverter, there a two main interface:
1) void convertInternal(InputStream inputStream, DocumentFormat inputFormat, OutputStream outputStream, DocumentFormat outputFormat);
2) void convertInternal(File inputFile, DocumentFormat inputFormat, File outputFile, DocumentFormat outputFormat);
The 1) just create a temp file for the outputstream in the system temp directory. So if you want to control the output file directory, you just have to change system temp directory which is not a way. In our case, we want to get all the output when convert to html. So I don't think this interface is enough.
The 2) interface just can output all the result file to the outputFile's directory which can get from xwiki.getTempFile(). Maybe you think we can use two Files in clients and deliver the FileOutputStream and FileInputStream to the 1) interface, you just get one output file in the FileOutputStream and can get the other results. The client still can't get the temp directory where the other output files.
WDYT?
On Sun, Aug 24, 2008 at 4:02 AM, Vincent Massol <[email protected]> wrote:
Hi Wang,
On Aug 23, 2008, at 9:55 PM, Wang Ning wrote:
Hi Vincent,
I add a interface in the OfficeConverter void convert(File inputFile, OfficeDocumentType inputDocumentType, File outputFile, OfficeDocumentType outputDocumentType) throws OfficeConverterException; I think this useful.
I don't think we need this since you can use a FileInputStream and a FileOutputStream.
Thanks -Vincent
And I change the OfficeConverterPlugin that I can control the output directory of the conversion.
participants (1)
-
Vincent Massol