chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sascha Homeier <shome...@apollon.de>
Subject Re: A little help - Transforming a CMIS object (Document) into a java io File object
Date Thu, 07 May 2015 19:29:35 GMT
Just FYI:
This code is just for demonstration purpose and is optimized to be readable and to understand
the basic concepts of how to work with CMIS.

There are many places for optimizations when using in production like closing the resources
in a finally statement etc
(just wrote it down in half an hour ;) )

Anyway I hope it helps you as a starting point ;)

Cheers
Sascha

Am 07.05.2015 um 21:22 schrieb Sascha Homeier <shomeier@meyle-mueller.de<mailto:shomeier@meyle-mueller.de>>:

Hi Matheus,

as we have some customers which are building own client implementations to connect to our
DAM system via CMIS I have setup a very minimalistic CMIS client sample code for them which
also demonstrates the use case you mentioned.

You can check it out from GitHub here:
https://github.com/shomeier/cmis-client-sample

It is only about 250 lines of code and it is checked in as an Eclipse project so you should
be able to easily import it into your Eclipse IDE.
The connection parameters like credentials and cmis endpoint url are read from a properties
file.
The configuration is explained in the README at the github url above.

In general you simply have to store the InputStream of the ContentStream of your CmisDocument
to a File.
You can find a simple implementation of how this could be achieved at de.apollon.cmis.client.sample.CmisClient#writeContentStreamToFile(ContentStream
cs):

——— Java code starts here ——

public void writeContenStreamToFile(ContentStream cs)
{
InputStream in = cs.getStream();
String targetPath = this.props.getProperty("temp_path") + File.separator + cs.getFileName();
File file = new File(targetPath);
System.out.println("Writing stream to file: " + file.getAbsolutePath());
try
{
OutputStream out = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
while (( len = in.read(buf) ) > 0)
{
out.write(buf, 0, len);
}
out.close();
in.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}

——— Java code ends here ——


This method is called like:
cmisClient.writeContenStreamToFile(cmisDocument.getContentStream());

To summarize it up:

——— Java code starts here ----

// get the ContentStream of the CmisDocument
ContentStream contentStream = cmisDocument.getContentStream();

// get the InputStream of the ContentStream of the CmisDocument
InputStream stream = contentStream.getStream();

// create the File where you want to store the InputStream of the CmisDocument
// here we use the filename of the ContentStream of the CmisDocument but we could also choose
another
File file = new File("/usr/local/" + contentStream.getFileName());

// write stream to file
try
{
OutputStream out = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
while (( len = stream.read(buf) ) > 0)
{
out.write(buf, 0, len);
}
out.close();
stream.close();
}
catch (Exception e)
{
e.printStackTrace();
}

——— Java code ends here ----


Hope this helps.


Cheers
Sascha

Am 07.05.2015 um 20:34 schrieb Matheus de Oliveira Barreto <Matheus@foxfly.com.br<mailto:Matheus@foxfly.com.br>>:

Hey guys, how are you doing?


I have some doubts developing with Apache Chemistry CMIS and I think that this is the right
place to ask. If not, please excuse me in advance and if possible, just tell me where to go.


So, I've been working on a class to do some basic actions on a CMIS repository. My main goals
is to connect to and download files from a CMIS repository (already done with FileUtils method
Download) and get this file as a Java IO File (so my code can work with it or anything like
that). There is exactly where my problem is. How do I get this CMIS Document (that I know
is a file, already checked for the type) to be a Java IO File? A direct cast doesn't work,
of course, I believe because of the structure of the objects... So, is there a class or a
method that can help me with this?


I've tried to find it on old emails and also on the documentation, but I'm not a very experienced
programmer, and if there is something already said or written about it in a place where I
should have found it on my own, I apologize.


Thanks to all you guys in advance and I hope I can help people in the future too on Apache
Chemistry doubts or problems too.


Regards,

Atenciosamente,
Matheus Barreto
eMail          matheus@foxfly.com.br<mailto:matheus@foxfly.com.br><mailto:jean@foxfly.com.br>?
Comercial  +55 11 5503-6710
WebSite     http://www.foxfly.com.br<http://www.foxfly.com.br/>

foxfly IT & Marketing
Av. Das Nações Unidas, 12995 - 10º andar
CEP 04578-000, Brooklin Novo
São Paulo, SP



Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message