View Javadoc

1   package org.wcb.autohome.implementations;
2   
3   import org.wcb.autohome.interfaces.IRunEvent;
4   import org.wcb.autohome.interfaces.IX10Module;
5   import org.wcb.autohome.interfaces.X10DeviceConstants;
6   
7   import java.io.Serializable;
8   
9   /***
10   * Copyright (C) 1999  Walter Bogaardt
11   *
12   * This library is free software; you can redistribute it and/or
13   * modify it under the terms of the GNU Lesser General Public
14   * License as published by the Free Software Foundation; either
15   * version 2 of the License, or (at your option) any later version.
16   *
17   * This library is distributed in the hope that it will be useful,
18   * but WITHOUT ANY WARRANTY; without even the implied warranty of
19   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20   * Lesser General Public License for more details.
21   *
22   * You should have received a copy of the GNU Lesser General Public
23   * License along with this library; if not, write to the Free Software
24   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
25   *
26   * Project: Alice X10 Home Automation
27   * Filename:  $Id: RunEvent.java,v 1.9 2004/02/28 00:21:49 wbogaardt Exp $<BR>
28   * Abstract: This is a Run event which should be executed when a monitored
29   * event detects activity. The run event can be firing off a x10 module
30   * or runing an application program.
31   *
32   * $Log: RunEvent.java,v $
33   * Revision 1.9  2004/02/28 00:21:49  wbogaardt
34   * fixed formating to be compliant with sun coding convention
35   *
36   * Revision 1.8  2004/02/24 23:16:19  wbogaardt
37   * fixed formating to be compliant with checkstyles
38   *
39   * Revision 1.7  2004/02/06 20:06:36  wbogaardt
40   * replaced ampm drop boxes with time buttons which launch a time panel move menu items around on main panel
41   *
42   * Revision 1.6  2004/01/31 07:40:26  wbogaardt
43   * modified layout managers for the panel so that it uses the java standard layoutsrather than the FormLayout api.
44   * The purpose is to reduce dependency on non-standard layout api.
45   *
46   * Revision 1.5  2004/01/20 05:31:05  wbogaardt
47   * added speech event for runing
48   *
49   * Revision 1.4  2004/01/19 22:35:37  wbogaardt
50   * added fixes to runing events and emails so they work and added a testing of a monitored event through the table popup
51   * on a right mouse click.
52   *
53   * Revision 1.3  2004/01/18 00:48:33  wbogaardt
54   * refactored out unnecessary code and now have a functional initial design of monitoring panel
55   *
56   * Revision 1.2  2004/01/17 07:21:17  wbogaardt
57   * added serialization to run events and allow monitoring of these events to the file system to reload later
58   *
59   * Revision 1.1  2004/01/17 06:21:55  wbogaardt
60   * added new Run event interfaces
61   *
62   *
63   */
64  public class RunEvent implements IRunEvent, Serializable {
65  
66      private int iType;
67      private IX10Module iDevice;
68      private String sCommand;
69      private String[] sArguments;
70      private int iDeviceCommand;
71      private String sSpeakSentence;
72      /***
73       * The send email constants
74       */
75      public static final int SEND_EMAIL = 0;
76      /***
77       * The run an application constant
78       */
79      public static final int RUN_APPLICATION = 1;
80      /***
81       * The speak text constant
82       */
83      public static final int SPEAK_COMMAND = 2;
84      /***
85       * The run an X10 event or module constant
86       */
87      public static final int RUN_MODULE = 3;
88  
89      /***
90       * This constructor automatically runs a set of events
91       */
92      public RunEvent() {
93          this(0, new X10Module(), X10DeviceConstants.ON_ACTION);
94      }
95  
96      /***
97       * The Constructor takes a run type see setRunType() method
98       * the X10Module interface, and the action to take place.
99       * @param iT The Run type valid valies 0-2
100      * @param mod IX10Module interface
101      * @param iAction Action type for the X10Module either ON or off
102      */
103     public RunEvent(int iT, IX10Module mod, int iAction) {
104         this.iType = iT;
105         this.iDevice = mod;
106         this.iDeviceCommand = iAction;
107     }
108 
109     /***
110      * Sets the run type for this action. There should be only three types
111      * execute a module, execute sending email, or running
112      * an outside application. 0 send email, 1 run module, 2 run command<br>
113      * @param iT  Valid values of 0-2
114      */
115     public void setRunType(int iT) {
116         this.iType = iT;
117     }
118 
119     /***
120      * the x10 module to run only if
121      * the Run type is a value of 0. Otherwise the default is sent which is
122      * a blank X10Module Object.
123      * @param module The X10 device module to run.
124      */
125     public void setX10Module(IX10Module module) {
126         this.iDevice = module;
127     }
128 
129     /***
130      * The module command can be one of the following from the
131      * X10DeviceConstants, which is an on event or off event;
132      * X10DeviceConstants.ON_ACTION or X10DeviceConstants.OFF_ACTION
133      * @param iCmd Either on or off command value 1 or 0
134      */
135     public void setModuleCommand(int iCmd) {
136         this.iDeviceCommand = iCmd;
137 
138     }
139 
140     /***
141      * This is the initial command to send through the command line
142      * this is usually the application name.
143      * @param sCmd The application name.
144      */
145     public void setCommand(String sCmd) {
146         this.sCommand = sCmd;
147     }
148 
149     /***
150      * The argument parameters sent with the application name
151      * sometimes an application does not have command line parameters
152      * and that should be ok too.
153      * @param args String array of arguments for a command line execution
154      */
155     public void setArguments(String[] args) {
156         this.sArguments = args;
157     }
158 
159     /***
160      * This saves a string of a sentence that the user
161      * wants spoken by the alice speech engine.
162      * @param sSentence Sentence to speak
163      */
164     public void setSentence(String sSentence) {
165         this.sSpeakSentence = sSentence;
166     }
167 
168     /***
169      * Returns the run type for this action Should be only three types
170      * Either execute a module, execute sending email, or running
171      * an outside application;
172      * 0 send email, 1 run module, 2 run command
173      * @return  Valid values of 0-2
174      */
175     public int getRunType() {
176         return this.iType;
177     }
178 
179     /***
180      * Returns the x10 module to run only if
181      * the Run type is a value of 0. Otherwise the default is sent which is
182      * a blank X10Module Object.
183      * @return The X10 device module to run.
184      */
185     public IX10Module getX10Module() {
186         if (iType == RUN_MODULE)
187         {
188             return this.iDevice;
189         }
190         return new X10Module();
191     }
192 
193     /***
194      * Return the module command can be one of the following from the
195      * X10DeviceConstants, which is an on event or off event;
196      * X10DeviceConstants.ON_ACTION or X10DeviceConstants.OFF_ACTION
197      * @return Either on or off command value 1 or 0
198      */
199     public int getModuleCommand() {
200         return this.iDeviceCommand;
201     }
202 
203     /***
204      * Returns the initial command to sent through the command line
205      * this is usually the application name.
206      * @return The application name.
207      */
208     public String getCommand() {
209         return this.sCommand;
210     }
211 
212     /***
213      * Returns the argument parameters sent with the application name
214      * sometimes an application does not have command line parameters
215      * and that should be ok too.
216      * @return String array of arguments for a command line execution
217      */
218     public String[] getArguments() {
219         return this.sArguments;
220     }
221 
222     /***
223      * Returns the sentence that the user want's the speech engine
224      * to speak.
225      * @return Sentence to speak.
226      */
227     public String getSentence() {
228         return this.sSpeakSentence;
229     }
230 
231 }