1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.opencastproject.kernel.scanner;
23
24 import org.apache.commons.lang3.BooleanUtils;
25 import org.apache.commons.lang3.StringUtils;
26 import org.osgi.service.cm.ConfigurationException;
27 import org.quartz.CronExpression;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31 import java.util.Dictionary;
32
33 public abstract class AbstractBufferScanner extends AbstractScanner {
34 private static final Logger logger = LoggerFactory.getLogger(AbstractBufferScanner.class);
35
36
37 protected static final String PARAM_KEY_BUFFER = "buffer";
38
39 protected long buffer = -1;
40
41 public void updated(Dictionary<String, ?> properties) throws ConfigurationException {
42 String cronExpression;
43 boolean enabled;
44
45 unschedule();
46
47 if (properties != null) {
48 logger.debug("Updating configuration...");
49
50 enabled = BooleanUtils.toBoolean((String) properties.get(PARAM_KEY_ENABLED));
51 setEnabled(enabled);
52 logger.debug("enabled = " + enabled);
53
54 cronExpression = (String) properties.get(PARAM_KEY_CRON_EXPR);
55 if (StringUtils.isBlank(cronExpression) || !CronExpression.isValidExpression(cronExpression))
56 throw new ConfigurationException(PARAM_KEY_CRON_EXPR, "Cron expression must be valid");
57 setCronExpression(cronExpression);
58 logger.debug("cronExpression = '" + cronExpression + "'");
59
60 try {
61 buffer = Long.valueOf((String) properties.get(PARAM_KEY_BUFFER));
62 if (buffer < 0) {
63 throw new ConfigurationException(PARAM_KEY_BUFFER, "Buffer must be 0 or greater");
64 }
65 } catch (NumberFormatException e) {
66 throw new ConfigurationException(PARAM_KEY_BUFFER, "Buffer must be a valid integer", e);
67 }
68 logger.debug("buffer = " + buffer);
69 }
70
71 schedule();
72 }
73
74 public long getBuffer() {
75 return buffer;
76 }
77
78 public void setBuffer(long buffer) {
79 this.buffer = buffer;
80 }
81 }