1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.kernel.scheduler;
16  
17  import com.liferay.portal.kernel.messaging.MessageListener;
18  import com.liferay.portal.kernel.util.GetterUtil;
19  import com.liferay.portal.kernel.util.Time;
20  
21  /**
22   * <a href="SchedulerEntryImpl.java.html"><b><i>View Source</i></b></a>
23   *
24   * @author Shuyang Zhou
25   */
26  public class SchedulerEntryImpl implements SchedulerEntry {
27  
28      public String getDescription() {
29          return _description;
30      }
31  
32      public MessageListener getEventListener() {
33          return _eventListener;
34      }
35  
36      public String getEventListenerClass() {
37          return _eventListenerClass;
38      }
39  
40      public String getPropertyKey() {
41          return _propertyKey;
42      }
43  
44      public TimeUnit getTimeUnit() {
45          return _timeUnit;
46      }
47  
48      public Trigger getTrigger() throws SchedulerException {
49          if (_trigger != null) {
50              return _trigger;
51          }
52  
53          if (_triggerType == TriggerType.CRON) {
54              _trigger = new CronTrigger(
55                  _eventListenerClass, _eventListenerClass, _triggerValue);
56          }
57          else if (_triggerType == TriggerType.SIMPLE) {
58              long intervalTime = GetterUtil.getLong(_triggerValue);
59  
60              if (_timeUnit.equals(TimeUnit.DAY)) {
61                  intervalTime = intervalTime * Time.DAY;
62              }
63              else if (_timeUnit.equals(TimeUnit.HOUR)) {
64                  intervalTime = intervalTime * Time.HOUR;
65              }
66              else if (_timeUnit.equals(TimeUnit.MINUTE)) {
67                  intervalTime = intervalTime * Time.MINUTE;
68              }
69              else if (_timeUnit.equals(TimeUnit.WEEK)) {
70                  intervalTime = intervalTime * Time.WEEK;
71              }
72              else {
73                  intervalTime = intervalTime * Time.SECOND;
74              }
75  
76              _trigger = new IntervalTrigger(
77                  _eventListenerClass, _eventListenerClass, intervalTime);
78          }
79          else {
80              throw new SchedulerException(
81                  "Unsupport trigger type " + _triggerType);
82          }
83  
84          return _trigger;
85      }
86  
87      public TriggerType getTriggerType() {
88          return _triggerType;
89      }
90  
91      public String getTriggerValue() {
92          return _triggerValue;
93      }
94  
95      public void setDescription(String description) {
96          _description = description;
97      }
98  
99      public void setEventListener(MessageListener eventListener) {
100         _eventListener = eventListener;
101     }
102 
103     public void setEventListenerClass(String eventListenerClass) {
104         _eventListenerClass = eventListenerClass;
105     }
106 
107     public void setPropertyKey(String propertyKey) {
108         _propertyKey = propertyKey;
109     }
110 
111     public void setTimeUnit(TimeUnit timeUnit) {
112         _timeUnit = timeUnit;
113     }
114 
115     public void setTriggerType(TriggerType triggerType) {
116         _triggerType = triggerType;
117     }
118 
119     public void setTriggerValue(int triggerValue) {
120         _triggerValue = String.valueOf(triggerValue);
121     }
122 
123     public void setTriggerValue(long triggerValue) {
124         _triggerValue = String.valueOf(triggerValue);
125     }
126 
127     public void setTriggerValue(String triggerValue) {
128         _triggerValue = triggerValue;
129     }
130 
131     public String toString() {
132         StringBuilder sb = new StringBuilder();
133 
134         sb.append("{description=");
135         sb.append(_description);
136         sb.append(", eventListener=");
137         sb.append(_eventListener);
138         sb.append(", eventListenerClass=");
139         sb.append(_eventListenerClass);
140         sb.append(", propertyKey=");
141         sb.append(_propertyKey);
142         sb.append(", timeUnit=");
143         sb.append(_timeUnit);
144         sb.append(", trigger=");
145         sb.append(_trigger);
146         sb.append(", triggerType=");
147         sb.append(_triggerType);
148         sb.append(", triggerValue=");
149         sb.append(_triggerValue);
150         sb.append("}");
151 
152         return sb.toString();
153     }
154 
155     private String _description;
156     private transient MessageListener _eventListener;
157     private String _eventListenerClass;
158     private String _propertyKey;
159     private TimeUnit _timeUnit;
160     private Trigger _trigger;
161     private TriggerType _triggerType;
162     private String _triggerValue;
163 
164 }