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 TimeUnit getTimeUnit() {
039                    return _timeUnit;
040            }
041    
042            @Override
043            public Trigger getTrigger() throws SchedulerException {
044                    if (_trigger != null) {
045                            return _trigger;
046                    }
047    
048                    if (_triggerType.equals(TriggerType.CRON)) {
049                            _trigger = new CronTrigger(
050                                    _eventListenerClass, _eventListenerClass, _triggerValue);
051                    }
052                    else if (_triggerType.equals(TriggerType.SIMPLE)) {
053                            long intervalTime = GetterUtil.getLong(_triggerValue);
054    
055                            if (_timeUnit.equals(TimeUnit.DAY)) {
056                                    intervalTime = intervalTime * Time.DAY;
057                            }
058                            else if (_timeUnit.equals(TimeUnit.HOUR)) {
059                                    intervalTime = intervalTime * Time.HOUR;
060                            }
061                            else if (_timeUnit.equals(TimeUnit.MINUTE)) {
062                                    intervalTime = intervalTime * Time.MINUTE;
063                            }
064                            else if (_timeUnit.equals(TimeUnit.WEEK)) {
065                                    intervalTime = intervalTime * Time.WEEK;
066                            }
067                            else {
068                                    intervalTime = intervalTime * Time.SECOND;
069                            }
070    
071                            _trigger = new IntervalTrigger(
072                                    _eventListenerClass, _eventListenerClass, intervalTime);
073                    }
074                    else {
075                            throw new SchedulerException(
076                                    "Unsupport trigger type " + _triggerType);
077                    }
078    
079                    return _trigger;
080            }
081    
082            @Override
083            public TriggerType getTriggerType() {
084                    return _triggerType;
085            }
086    
087            @Override
088            public String getTriggerValue() {
089                    return _triggerValue;
090            }
091    
092            @Override
093            public void setDescription(String description) {
094                    _description = description;
095            }
096    
097            @Override
098            public void setEventListenerClass(String eventListenerClass) {
099                    _eventListenerClass = eventListenerClass;
100            }
101    
102            @Override
103            public void setTimeUnit(TimeUnit timeUnit) {
104                    _timeUnit = timeUnit;
105            }
106    
107            @Override
108            public void setTriggerType(TriggerType triggerType) {
109                    _triggerType = triggerType;
110            }
111    
112            @Override
113            public void setTriggerValue(int triggerValue) {
114                    _triggerValue = String.valueOf(triggerValue);
115            }
116    
117            @Override
118            public void setTriggerValue(long triggerValue) {
119                    _triggerValue = String.valueOf(triggerValue);
120            }
121    
122            @Override
123            public void setTriggerValue(String triggerValue) {
124                    _triggerValue = triggerValue;
125            }
126    
127            @Override
128            public String toString() {
129                    StringBundler sb = new StringBundler(13);
130    
131                    sb.append(", description=");
132                    sb.append(_description);
133                    sb.append(", eventListenerClass=");
134                    sb.append(_eventListenerClass);
135                    sb.append(", timeUnit=");
136                    sb.append(_timeUnit);
137                    sb.append(", trigger=");
138                    sb.append(_trigger);
139                    sb.append(", triggerType=");
140                    sb.append(_triggerType);
141                    sb.append(", triggerValue=");
142                    sb.append(_triggerValue);
143                    sb.append("}");
144    
145                    return sb.toString();
146            }
147    
148            private String _description = StringPool.BLANK;
149            private String _eventListenerClass = StringPool.BLANK;
150            private TimeUnit _timeUnit;
151            private Trigger _trigger;
152            private TriggerType _triggerType;
153            private String _triggerValue = StringPool.BLANK;
154    
155    }