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