]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
d6074afc4d58bdbbbc16a915f18added02b50476
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.common.imaging.nuxeo;
2
3 import java.io.File;
4 import java.io.Serializable;
5 import java.util.Map;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.nuxeo.ecm.core.api.Blob;
10 import org.nuxeo.ecm.core.api.blobholder.BlobHolder;
11 import org.nuxeo.ecm.core.api.impl.blob.FileBlob;
12 import org.nuxeo.ecm.core.convert.api.ConversionException;
13 import org.nuxeo.ecm.core.convert.cache.SimpleCachableBlobHolder;
14 import org.nuxeo.ecm.core.convert.extension.Converter;
15 import org.nuxeo.ecm.core.convert.extension.ConverterDescriptor;
16 import org.nuxeo.ecm.core.storage.sql.coremodel.SQLBlob;
17 import org.nuxeo.ecm.platform.commandline.executor.api.CmdParameters;
18 import org.nuxeo.ecm.platform.commandline.executor.api.CommandAvailability;
19 import org.nuxeo.ecm.platform.commandline.executor.api.CommandLineExecutorService;
20 import org.nuxeo.ecm.platform.commandline.executor.api.ExecResult;
21 import org.nuxeo.ecm.platform.picture.core.im.IMImageUtils;
22 import org.nuxeo.runtime.api.Framework;
23 import org.nuxeo.runtime.services.streaming.FileSource;
24 import org.nuxeo.runtime.services.streaming.StreamSource;
25
26 public class ThumbnailConverter extends IMImageUtils implements Converter {
27         private static final Log log = LogFactory.getLog(ThumbnailConverter.class);
28
29         @Override
30         public BlobHolder convert(BlobHolder blobHolder,
31                         Map<String, Serializable> parameters) throws ConversionException {
32                 try {
33                         // Make sure the toThumbnail command is available
34                         CommandLineExecutorService cles = Framework
35                                         .getLocalService(CommandLineExecutorService.class);
36                         CommandAvailability commandAvailability = cles
37                                         .getCommandAvailability("toThumbnail");
38                         if (!commandAvailability.isAvailable()) {
39                                 return null;
40                         }
41                         // get the input and output of the command
42                         Blob blob = blobHolder.getBlob();
43                         File inputFile = null;
44                         if (blob instanceof FileBlob) {
45                                 inputFile = ((FileBlob) blob).getFile();
46                         } else if (blob instanceof SQLBlob) {
47                                 StreamSource source = ((SQLBlob) blob).getBinary()
48                                                 .getStreamSource();
49                                 inputFile = ((FileSource) source).getFile();
50                         }
51                         if (inputFile == null) {
52                                 return null;
53                         }
54                         CmdParameters params = new CmdParameters();
55                         File outputFile = File.createTempFile("nuxeoImageTarget", "."
56                                         + "png");
57                         params.addNamedParameter("inputFilePath", inputFile);
58                         params.addNamedParameter("outputFilePath", outputFile);
59
60                         ExecResult res = cles.execCommand("toThumbnail", params);
61                         if (!res.isSuccessful()) {
62                                 return null;
63                         }
64                         Blob targetBlob = new FileBlob(outputFile);
65                         Framework.trackFile(outputFile, targetBlob);
66                         return new SimpleCachableBlobHolder(targetBlob);
67                 } catch (Exception e) {
68                         throw new ConversionException("Thumbnail conversion has failed", e);
69                 }
70         }
71
72         @Override
73         public void init(ConverterDescriptor descriptor) {
74         }
75 }