1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.onehippo.forge.gallerymagick.cms.plugins.gallery.processor;
17
18 import java.util.HashMap;
19 import java.util.Map;
20
21 import org.apache.commons.lang.StringUtils;
22 import org.hippoecm.frontend.plugin.IPluginContext;
23 import org.hippoecm.frontend.plugin.Plugin;
24 import org.hippoecm.frontend.plugin.config.IPluginConfig;
25 import org.hippoecm.frontend.plugins.gallery.imageutil.ScalingParameters;
26 import org.hippoecm.frontend.plugins.gallery.model.GalleryProcessor;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30
31
32
33 public class MagickCommandGalleryProcessorPlugin extends Plugin {
34
35 private static final long serialVersionUID = 1L;
36
37 private static final Logger log = LoggerFactory.getLogger(MagickCommandGalleryProcessorPlugin.class);
38
39 public static final String MAGICK_IMAGE_PROCESSOR = "magick.image.processor";
40
41 public MagickCommandGalleryProcessorPlugin(final IPluginContext context, final IPluginConfig config) {
42 super(context, config);
43 final GalleryProcessor processor = createGalleryProcessor(config);
44 final String id = config.getString(GalleryProcessor.GALLERY_PROCESSOR_ID,
45 GalleryProcessor.DEFAULT_GALLERY_PROCESSOR_ID);
46 context.registerService(processor, id);
47 }
48
49 protected GalleryProcessor createGalleryProcessor(IPluginConfig config) {
50 final String magickImageProcessor = StringUtils.trim(config.getString(MAGICK_IMAGE_PROCESSOR, null));
51
52 final Map<String, ScalingParameters> initScalingParametersMap = new HashMap<>();
53
54 for (IPluginConfig childConfig : config.getPluginConfigSet()) {
55 final String nodeName = StringUtils.substringAfterLast(childConfig.getName(), ".");
56
57 if (StringUtils.isNotBlank(nodeName)) {
58 int width = childConfig.getAsInteger("width", 0);
59 int height = childConfig.getAsInteger("height", 0);
60 final ScalingParameters parameters = new ScalingParameters(width, height, false);
61 log.debug("Scaling parameters for {}: {}", nodeName, parameters);
62 initScalingParametersMap.put(nodeName, parameters);
63 }
64 }
65
66 return createGalleryProcessor(magickImageProcessor, initScalingParametersMap);
67 }
68
69 protected GalleryProcessor createGalleryProcessor(final String magickImageProcessor, final Map<String, ScalingParameters> initScalingParametersMap) {
70 return new MagickCommandGalleryProcessor(magickImageProcessor, initScalingParametersMap);
71 }
72 }