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
> <vincent(a)massol.net> 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.