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.PrefsPropsUtil;
20  import com.liferay.portal.kernel.util.Time;
21  
22  /**
23   * <a href="SchedulerEntryImpl.java.html"><b><i>View Source</i></b></a>
24   *
25   * @author Shuyang Zhou
26   */
27  public class SchedulerEntryImpl implements SchedulerEntry {
28  
29      public String getDescription() {
30          return _description;
31      }
32  
33      public MessageListener getEventListener() {
34          return _eventListener;
35      }
36  
37      public String getEventListenerClass() {
38          return _eventListenerClass;
39      }
40  
41      public TimeUnit getTimeUnit() {
42          return _timeUnit;
43      }
44  
45      public Trigger getTrigger() throws SchedulerException {
46          if (_trigger != null) {
47              return _trigger;
48          }
49  
50          String triggerValue = _triggerValue;
51  
52          if (_readProperty) {
53              try {
54                  triggerValue = PrefsPropsUtil.getString(triggerValue);
55              }
56              catch (Exception e) {
57                  throw new SchedulerException(
58                      "Unable to get trigger value " + triggerValue, e);
59              }
60          }
61  
62          if (_triggerType == TriggerType.CRON) {
63              _trigger = new CronTrigger(
64                  _eventListenerClass, _eventListenerClass, triggerValue);
65          }
66          else if (_triggerType == TriggerType.SIMPLE) {
67              long intervalTime = GetterUtil.getLong(triggerValue);
68  
69              if (_timeUnit.equals(TimeUnit.DAY)) {
70                  intervalTime = intervalTime * Time.DAY;
71              }
72              else if (_timeUnit.equals(TimeUnit.HOUR)) {
73                  intervalTime = intervalTime * Time.HOUR;
74              }
75              else if (_timeUnit.equals(TimeUnit.MINUTE)) {
76                  intervalTime = intervalTime * Time.MINUTE;
77              }
78              else if (_timeUnit.equals(TimeUnit.WEEK)) {
79                  intervalTime = intervalTime * Time.WEEK;
80              }
81              else {
82                  intervalTime = intervalTime * Time.SECOND;
83              }
84  
85              _trigger = new IntervalTrigger(
86                  _eventListenerClass, _eventListenerClass, intervalTime);
87          }
88          else {
89              throw new SchedulerException(
90                  "Unsupport trigger type " + _triggerType);
91          }
92  
93          return _trigger;
94      }
95  
96      public TriggerType getTriggerType() {
97          return _triggerType;
98      }
99  
100     public String getTriggerValue() {
101         return _triggerValue;
102     }
103 
104     public boolean isReadProperty() {
105         return _readProperty;
106     }
107 
108     public void setDescription(String description) {
109         _description = description;
110     }
111 
112     public void setEventListener(MessageListener eventListener) {
113         _eventListener = eventListener;
114     }
115 
116     public void setEventListenerClass(String eventListenerClass) {
117         _eventListenerClass = eventListenerClass;
118     }
119 
120     public void setReadProperty(boolean readProperty) {
121         _readProperty = readProperty;
122     }
123 
124     public void setTimeUnit(TimeUnit timeUnit) {
125         _timeUnit = timeUnit;
126     }
127 
128     public void setTriggerType(TriggerType triggerType) {
129         _triggerType = triggerType;
130     }
131 
132     public void setTriggerValue(String triggerValue) {
133         _triggerValue = triggerValue;
134     }
135 
136     public String toString() {
137         StringBuilder sb = new StringBuilder();
138 
139         sb.append("{description=");
140         sb.append(_description);
141         sb.append(", eventListener=");
142         sb.append(_eventListener);
143         sb.append(", eventListenerClass=");
144         sb.append(_eventListenerClass);
145         sb.append(", readProperty=");
146         sb.append(_readProperty);
147         sb.append(", timeUnit=");
148         sb.append(_timeUnit);
149         sb.append(", trigger=");
150         sb.append(_trigger);
151         sb.append(", triggerType=");
152         sb.append(_triggerType);
153         sb.append(", triggerValue=");
154         sb.append(_triggerValue);
155         sb.append("}");
156 
157         return sb.toString();
158     }
159 
160     private String _description;
161     private MessageListener _eventListener;
162     private String _eventListenerClass;
163     private boolean _readProperty;
164     private TimeUnit _timeUnit;
165     private Trigger _trigger;
166     private TriggerType _triggerType;
167     private String _triggerValue;
168 
169 }