Can I use this?
http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/IOUtils.html


On Thu, Jun 20, 2013 at 12:48 PM, Rajath Shashidhara <
[email protected]> wrote:

> Hello Ariel,
>
> in you code:
> copyStream() is to be implemented by me or is it there in any library?
>
>
> On Thu, Jun 20, 2013 at 9:25 AM, Rajath Shashidhara <
> [email protected]> wrote:
>
>> Thanks ariel.
>> I have finished major part of this code. I only had doubt in that
>> queryInterface part.
>>
>>
>> On Thu, Jun 20, 2013 at 1:08 AM, Ariel Constenla-Haile <
>> [email protected]> wrote:
>>
>>> Hi Rajath,
>>>
>>> On Wed, Jun 19, 2013 at 09:55:21PM +0530, Rajath Shashidhara wrote:
>>> > Hello,
>>> >
>>> > I'm working on the XActiveDataSink.
>>> > I'm slightly confused about how to handle OpenCommandArgument2.Sink .
>>> > The object is the one which is filled with the XActiveDataSink object
>>> for
>>> > which I have to set the InputStream by calling setInputStream() and
>>> pass
>>> > the XInputStream implementation.
>>> > This is what I have understood. But, the confusing thing is why  is the
>>> > datatype for Sink - Object? Shoudnt it be XActiveDataSink? I'm not
>>> > understanding how to handle this Sink.
>>>
>>> The OpenCommandArgument2.Sink can be of different kinds, that's why its
>>> type is defined in a generic way as css.uno.XInterface; this interface
>>> is the base interface of all other interfaces:
>>>
>>> http://www.openoffice.org/api/docs/common/ref/com/sun/star/ucb/OpenCommandArgument.html#Sink
>>>
>>> css.uno.XInterface, in this case, is mapped in the Jave bridge to
>>> java.lang.Object:
>>>
>>> http://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Java/Mapping_of_Interface_Types
>>>
>>> You have to find out if the sink is
>>>
>>> a) com.sun.star.io.XOutputStream
>>> b) com.sun.star.io.XActiveDataSink
>>> c) com.sun.star.io.XActiveDataStreamer
>>>
>>> simply query the sink for each interface. Something like this:
>>>
>>>
>>> private Object open(
>>>         com.sun.star.ucb.OpenCommandArgument2 aOpenCommand,
>>>         com.sun.star.ucb.XCommandEnvironment xEnvironment)
>>>         throws com.sun.star.uno.Exception {
>>>     Object oRet = com.sun.star.uno.Any.VOID;
>>>
>>>     int nOpenMode = aOpenCommand.Mode;
>>>     if (nOpenMode == com.sun.star.ucb.OpenMode.ALL
>>>             || nOpenMode == com.sun.star.ucb.OpenMode.DOCUMENTS
>>>             || nOpenMode == com.sun.star.ucb.OpenMode.FOLDERS) {
>>>         if (!isFolder(xEnvironment)) {
>>>             throw new com.sun.star.lang.IllegalArgumentException(
>>>                     "The content is not a folder!");
>>>         }
>>>         com.sun.star.ucb.XDynamicResultSet xResultSet = new
>>> DynamicResultSet(
>>>                 m_xContext, this, aOpenCommand, xEnvironment);
>>>         oRet = xResultSet;
>>>     } else if (nOpenMode == com.sun.star.ucb.OpenMode.DOCUMENT) {
>>>         Object aSink = aOpenCommand.Sink;
>>>         if (aSink == null) {
>>>             throw new com.sun.star.lang.IllegalArgumentException(
>>>                     "open command without sink!");
>>>         }
>>>         // the Sink can be
>>>         // a) com.sun.star.io.XOutputStream
>>>         // b) com.sun.star.io.XActiveDataSink
>>>         // c) com.sun.star.io.XActiveDataStreamer
>>>         com.sun.star.io.XActiveDataStreamer xActiveDataStreamer =
>>> UnoRuntime.queryInterface(
>>>                 com.sun.star.io.XActiveDataStreamer.class, aSink);
>>>         if (xActiveDataStreamer != null) {
>>>             com.sun.star.io.XStream xStream =
>>> getContentStream(xEnvironment);
>>>             xActiveDataStreamer.setStream(xStream);
>>>         } else {
>>>             com.sun.star.io.XOutputStream xOutputStream =
>>> UnoRuntime.queryInterface(
>>>                     com.sun.star.io.XOutputStream.class, aSink);
>>>             if (xOutputStream != null) {
>>>                 com.sun.star.io.XInputStream xInputStream =
>>> getContentInputStream(xEnvironment);
>>>                 copyStream(xInputStream, xOutputStream);
>>>             } else {
>>>                 com.sun.star.io.XActiveDataSink xActiveDataSink =
>>> UnoRuntime.queryInterface(
>>>                         com.sun.star.io.XActiveDataSink.class, aSink);
>>>                 if (xActiveDataSink == null) {
>>>                     throw new com.sun.star.lang.IllegalArgumentException(
>>>                             "open command's sink is neither
>>> XActiveDataStreamer, XOutputStream nor XActiveDataSink!");
>>>                 }
>>>                 com.sun.star.io.XInputStream xInputStream =
>>> getContentInputStream(xEnvironment);
>>>                 xActiveDataSink.setInputStream(xInputStream);
>>>             }
>>>         }
>>>     } else if (nOpenMode ==
>>> com.sun.star.ucb.OpenMode.DOCUMENT_SHARE_DENY_NONE ||
>>>             nOpenMode ==
>>> com.sun.star.ucb.OpenMode.DOCUMENT_SHARE_DENY_WRITE){
>>>         throw new UnsupportedCommandException();
>>>     }
>>>     return oRet;
>>> }
>>>
>>>
>>>
>>> Regards
>>> --
>>> Ariel Constenla-Haile
>>> La Plata, Argentina
>>>
>>
>>
>>
>> --
>> Rajath S,
>> M.Sc(Hons.) Physics,
>> Birla Institute of Technology and Science - Pilani,
>> Pilani
>>
>
>
>
> --
> Rajath S,
> M.Sc(Hons.) Physics,
> Birla Institute of Technology and Science - Pilani,
> Pilani
>



-- 
Rajath S,
M.Sc(Hons.) Physics,
Birla Institute of Technology and Science - Pilani,
Pilani

Reply via email to