001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.kernel.scheduler;
016    
017    import com.liferay.portal.kernel.util.GetterUtil;
018    import com.liferay.portal.kernel.util.StringBundler;
019    import com.liferay.portal.kernel.util.StringPool;
020    import com.liferay.portal.kernel.util.Time;
021    
022    /**
023     * @author Shuyang Zhou
024     */
025    public class SchedulerEntryImpl implements SchedulerEntry {
026    
027            @Override
028            public String getDescription() {
029                    return _description;
030            }
031    
032            @Override
033            public String getEventListenerClass() {
034                    return _eventListenerClass;
035            }
036    
037            @Override
038            public String getPropertyKey() {
039                    return _propertyKey;
040            }
041    
042            @Override
043            public TimeUnit getTimeUnit() {
044                    return _timeUnit;
045            }
046    
047            @Override
048            public Trigger getTrigger() throws SchedulerException {
049                    if (_trigger != null) {
050                            return _trigger;
051                    }
052    
053                    if (_triggerType.equals(TriggerType.CRON)) {
054                            _trigger = new CronTrigger(
055                                    _eventListenerClass, _eventListenerClass, _triggerValue);
056                    }
057                    else if (_triggerType.equals(TriggerType.SIMPLE)) {
058                            long intervalTime = GetterUtil.getLong(_triggerValue);
059    
060                            if (_timeUnit.equals(TimeUnit.DAY)) {
061                                    intervalTime = intervalTime * Time.DAY;
062                            }
063                            else if (_timeUnit.equals(TimeUnit.HOUR)) {
064                                    intervalTime = intervalTime * Time.HOUR;
065                            }
066                            else if (_timeUnit.equals(TimeUnit.MINUTE)) {
067                                    intervalTime = intervalTime * Time.MINUTE;
068                            }
069                            else if (_timeUnit.equals(TimeUnit.WEEK)) {
070                                    intervalTime = intervalTime * Time.WEEK;
071                            }
072                            else {
073                                    intervalTime = intervalTime * Time.SECOND;
074                            }
075    
076                            _trigger = new IntervalTrigger(
077                                    _eventListenerClass, _eventListenerClass, intervalTime);
078                    }
079                    else {
080                            throw new SchedulerException(
081                                    "Unsupport trigger type " + _triggerType);
082                    }
083    
084                    return _trigger;
085            }
086    
087            @Override
088            public TriggerType getTriggerType() {
089                    return _triggerType;
090            }
091    
092            @Override
093            public String getTriggerValue() {
094                    return _triggerValue;
095            }
096    
097            @Override
098            public void setDescription(String description) {
099                    _description = description;
100            }
101    
102            @Override
103            public void setEventListenerClass(String eventListenerClass) {
104                    _eventListenerClass = eventListenerClass;
105            }
106    
107            @Override
108            public void setPropertyKey(String propertyKey) {
109                    _propertyKey = propertyKey;
110            }
111    
112            @Override
113            public void setTimeUnit(TimeUnit timeUnit) {
114                    _timeUnit = timeUnit;
115            }
116    
117            @Override
118            public void setTriggerType(TriggerType triggerType) {
119                    _triggerType = triggerType;
120            }
121    
122            @Override
123            public void setTriggerValue(int triggerValue) {
124                    _triggerValue = String.valueOf(triggerValue);
125            }
126    
127            @Override
128            public void setTriggerValue(long triggerValue) {
129                    _triggerValue = String.valueOf(triggerValue);
130            }
131    
132            @Override
133            public void setTriggerValue(String triggerValue) {
134                    _triggerValue = triggerValue;
135            }
136    
137            @Override
138            public String toString() {
139                    StringBundler sb = new StringBundler(15);
140    
141                    sb.append(", description=");
142                    sb.append(_description);
143                    sb.append(", eventListenerClass=");
144                    sb.append(_eventListenerClass);
145                    sb.append(", propertyKey=");
146                    sb.append(_propertyKey);
147                    sb.append(", timeUnit=");
148                    sb.append(_timeUnit);
149                    sb.append(", trigger=");
150                    sb.append(_trigger);
151                    sb.append(", triggerType=");
152                    sb.append(_triggerType);
153                    sb.append(", triggerValue=");
154                    sb.append(_triggerValue);
155                    sb.append("}");
156    
157                    return sb.toString();
158            }
159    
160            private String _description = StringPool.BLANK;
161            private String _eventListenerClass = StringPool.BLANK;
162            private String _propertyKey = StringPool.BLANK;
163            private TimeUnit _timeUnit;
164            private Trigger _trigger;
165            private TriggerType _triggerType;
166            private String _triggerValue = StringPool.BLANK;
167    
168    }