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