001    /**
002     * Copyright (c) 2000-2013 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.messaging.MessageListener;
018    import com.liferay.portal.kernel.util.GetterUtil;
019    import com.liferay.portal.kernel.util.StringBundler;
020    import com.liferay.portal.kernel.util.StringPool;
021    import com.liferay.portal.kernel.util.Time;
022    
023    /**
024     * @author Shuyang Zhou
025     */
026    public class SchedulerEntryImpl implements SchedulerEntry {
027    
028            @Override
029            public String getContextPath() {
030                    return _contextPath;
031            }
032    
033            @Override
034            public String getDescription() {
035                    return _description;
036            }
037    
038            @Override
039            public MessageListener getEventListener() {
040                    return _eventListener;
041            }
042    
043            @Override
044            public String getEventListenerClass() {
045                    return _eventListenerClass;
046            }
047    
048            @Override
049            public String getPropertyKey() {
050                    return _propertyKey;
051            }
052    
053            @Override
054            public TimeUnit getTimeUnit() {
055                    return _timeUnit;
056            }
057    
058            @Override
059            public Trigger getTrigger() throws SchedulerException {
060                    if (_trigger != null) {
061                            return _trigger;
062                    }
063    
064                    if (_triggerType.equals(TriggerType.CRON)) {
065                            _trigger = new CronTrigger(
066                                    _eventListenerClass, _eventListenerClass, _triggerValue);
067                    }
068                    else if (_triggerType.equals(TriggerType.SIMPLE)) {
069                            long intervalTime = GetterUtil.getLong(_triggerValue);
070    
071                            if (_timeUnit.equals(TimeUnit.DAY)) {
072                                    intervalTime = intervalTime * Time.DAY;
073                            }
074                            else if (_timeUnit.equals(TimeUnit.HOUR)) {
075                                    intervalTime = intervalTime * Time.HOUR;
076                            }
077                            else if (_timeUnit.equals(TimeUnit.MINUTE)) {
078                                    intervalTime = intervalTime * Time.MINUTE;
079                            }
080                            else if (_timeUnit.equals(TimeUnit.WEEK)) {
081                                    intervalTime = intervalTime * Time.WEEK;
082                            }
083                            else {
084                                    intervalTime = intervalTime * Time.SECOND;
085                            }
086    
087                            _trigger = new IntervalTrigger(
088                                    _eventListenerClass, _eventListenerClass, intervalTime);
089                    }
090                    else {
091                            throw new SchedulerException(
092                                    "Unsupport trigger type " + _triggerType);
093                    }
094    
095                    return _trigger;
096            }
097    
098            @Override
099            public TriggerType getTriggerType() {
100                    return _triggerType;
101            }
102    
103            @Override
104            public String getTriggerValue() {
105                    return _triggerValue;
106            }
107    
108            @Override
109            public void setContextPath(String contextPath) {
110                    _contextPath = contextPath;
111            }
112    
113            @Override
114            public void setDescription(String description) {
115                    _description = description;
116            }
117    
118            @Override
119            public void setEventListener(MessageListener eventListener) {
120                    _eventListener = eventListener;
121            }
122    
123            @Override
124            public void setEventListenerClass(String eventListenerClass) {
125                    _eventListenerClass = eventListenerClass;
126            }
127    
128            @Override
129            public void setPropertyKey(String propertyKey) {
130                    _propertyKey = propertyKey;
131            }
132    
133            @Override
134            public void setTimeUnit(TimeUnit timeUnit) {
135                    _timeUnit = timeUnit;
136            }
137    
138            @Override
139            public void setTriggerType(TriggerType triggerType) {
140                    _triggerType = triggerType;
141            }
142    
143            @Override
144            public void setTriggerValue(int triggerValue) {
145                    _triggerValue = String.valueOf(triggerValue);
146            }
147    
148            @Override
149            public void setTriggerValue(long triggerValue) {
150                    _triggerValue = String.valueOf(triggerValue);
151            }
152    
153            @Override
154            public void setTriggerValue(String triggerValue) {
155                    _triggerValue = triggerValue;
156            }
157    
158            @Override
159            public String toString() {
160                    StringBundler sb = new StringBundler(19);
161    
162                    sb.append("{contextPath=");
163                    sb.append(_contextPath);
164                    sb.append(", description=");
165                    sb.append(_description);
166                    sb.append(", eventListener=");
167                    sb.append(_eventListener);
168                    sb.append(", eventListenerClass=");
169                    sb.append(_eventListenerClass);
170                    sb.append(", propertyKey=");
171                    sb.append(_propertyKey);
172                    sb.append(", timeUnit=");
173                    sb.append(_timeUnit);
174                    sb.append(", trigger=");
175                    sb.append(_trigger);
176                    sb.append(", triggerType=");
177                    sb.append(_triggerType);
178                    sb.append(", triggerValue=");
179                    sb.append(_triggerValue);
180                    sb.append("}");
181    
182                    return sb.toString();
183            }
184    
185            private String _contextPath = StringPool.BLANK;
186            private String _description = StringPool.BLANK;
187            private transient MessageListener _eventListener;
188            private String _eventListenerClass = StringPool.BLANK;
189            private String _propertyKey = StringPool.BLANK;
190            private TimeUnit _timeUnit;
191            private Trigger _trigger;
192            private TriggerType _triggerType;
193            private String _triggerValue = StringPool.BLANK;
194    
195    }