File Coverage

blib/lib/App/Dochazka/CLI/CommandMap.pm
Criterion Covered Total %
statement 41 42 97.6
branch n/a
condition n/a
subroutine 14 15 93.3
pod 1 1 100.0
total 56 58 96.5


line stmt bran cond sub pod time code
1             # *************************************************************************
2             # Copyright (c) 2014-2016, SUSE LLC
3             #
4             # All rights reserved.
5             #
6             # Redistribution and use in source and binary forms, with or without
7             # modification, are permitted provided that the following conditions are met:
8             #
9             # 1. Redistributions of source code must retain the above copyright notice,
10             # this list of conditions and the following disclaimer.
11             #
12             # 2. Redistributions in binary form must reproduce the above copyright
13             # notice, this list of conditions and the following disclaimer in the
14             # documentation and/or other materials provided with the distribution.
15             #
16             # 3. Neither the name of SUSE LLC nor the names of its contributors may be
17             # used to endorse or promote products derived from this software without
18             # specific prior written permission.
19             #
20             # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21             # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22             # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23             # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
24             # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25             # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26             # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27             # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28             # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29             # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30             # POSSIBILITY OF SUCH DAMAGE.
31             # *************************************************************************
32             #
33             # Command map
34             #
35             package App::Dochazka::CLI::CommandMap;
36              
37 20     20   254 use 5.012;
  20         37  
38 20     20   56 use strict;
  20         17  
  20         274  
39 20     20   47 use warnings;
  20         19  
  20         405  
40              
41 20     20   51 use App::CELL qw( $CELL );
  20         26  
  20         1320  
42 20         1022 use App::Dochazka::CLI::Commands::Activity qw(
43             activity_all
44 20     20   6874 );
  20         38  
45 20         1176 use App::Dochazka::CLI::Commands::Component qw(
46             component_path
47             generate_report
48 20     20   7145 );
  20         30  
49 20         1792 use App::Dochazka::CLI::Commands::Employee qw(
50             employee_ldap
51             employee_ldap_import
52             employee_list
53             employee_profile
54             employee_team
55             set_employee_self_sec_id
56             set_employee_other_sec_id
57             set_employee_self_fullname
58             set_employee_other_fullname
59             set_employee_self_password
60             set_employee_other_password
61             set_employee_supervisor
62 20     20   7906 );
  20         31  
63 20         1640 use App::Dochazka::CLI::Commands::History qw(
64             add_priv_history
65             add_schedule_history
66             dump_priv_history
67             dump_schedule_history
68             set_history_remark
69 20     20   7744 );
  20         34  
70 20         1741 use App::Dochazka::CLI::Commands::Interval qw(
71             interval_date
72             interval_date_date1
73             interval_datelist
74             interval_tsrange
75             interval_month
76             interval_num_num1
77             interval_promptdate
78             interval_new_date_time_date1_time1
79             interval_new_time_time1
80             interval_new_timerange
81 20     20   8860 );
  20         28  
82 20         954 use App::Dochazka::CLI::Commands::Misc qw(
83             change_prompt_date
84             noop
85 20     20   7060 );
  20         30  
86 20         992 use App::Dochazka::CLI::Commands::Priv qw(
87             show_priv_as_at
88 20     20   7122 );
  20         29  
89 20         1658 use App::Dochazka::CLI::Commands::Schedule qw(
90             add_memsched_entry
91             assign_memsched_scode
92             clear_memsched_entries
93             dump_memsched_entries
94             fetch_all_schedules
95             replicate_memsched_entry
96             schedule_all
97             schedule_new
98             schedulespec
99             schedulespec_remark
100             schedulespec_scode
101             show_schedule_as_at
102 20     20   7948 );
  20         31  
103 20     20   91 use Data::Dumper;
  20         21  
  20         652  
104 20     20   69 use Exporter qw( import );
  20         19  
  20         50214  
105              
106              
107             =head1 NAME
108              
109             App::Dochazka::CLI::CommandMap - Command map
110              
111              
112              
113              
114             =head1 PACKAGE VARIABLES
115              
116             =cut
117              
118             # bring in the _method... functions
119             require App::Dochazka::CLI::Commands::RestTest::Activity;
120             require App::Dochazka::CLI::Commands::RestTest::Employee;
121             require App::Dochazka::CLI::Commands::RestTest::Interval;
122             require App::Dochazka::CLI::Commands::RestTest::Lock;
123             require App::Dochazka::CLI::Commands::RestTest::Priv;
124             require App::Dochazka::CLI::Commands::RestTest::Schedule;
125             require App::Dochazka::CLI::Commands::RestTest::Top;
126              
127             our $dispatch_map = {
128              
129             # Top-level commands
130             "GET" => \&_method,
131             "PUT" => \&_method,
132             "POST" => \&_method,
133             "DELETE" => \&_method,
134             "GET BUGREPORT" => \&_method_bugreport,
135             "PUT BUGREPORT" => \&_method_bugreport,
136             "POST BUGREPORT" => \&_method_bugreport,
137             "DELETE BUGREPORT" => \&_method_bugreport,
138             "GET CONFIGINFO" => \&_method_configinfo,
139             "PUT CONFIGINFO" => \&_method_configinfo,
140             "POST CONFIGINFO" => \&_method_configinfo,
141             "DELETE CONFIGINFO" => \&_method_configinfo,
142             "GET COOKIEJAR" => \&_method_cookiejar,
143             "PUT COOKIEJAR" => \&_method_cookiejar,
144             "POST COOKIEJAR" => \&_method_cookiejar,
145             "DELETE COOKIEJAR" => \&_method_cookiejar,
146             "GET DBSTATUS" => \&_method_dbstatus,
147             "PUT DBSTATUS" => \&_method_dbstatus,
148             "POST DBSTATUS" => \&_method_dbstatus,
149             "DELETE DBSTATUS" => \&_method_dbstatus,
150             "GET DOCU" => \&_method_docu,
151             "PUT DOCU" => \&_method_docu,
152             "POST DOCU" => \&_method_docu,
153             "DELETE DOCU" => \&_method_docu,
154             "GET DOCU POD" => \&_method_docu_pod,
155             "PUT DOCU POD" => \&_method_docu_pod,
156             "POST DOCU POD" => \&_method_docu_pod,
157             "DELETE DOCU POD" => \&_method_docu_pod,
158             "GET DOCU POD _DOCU" => \&_method_docu_pod_docu,
159             "PUT DOCU POD _DOCU" => \&_method_docu_pod_docu,
160             "POST DOCU POD _DOCU" => \&_method_docu_pod_docu,
161             "DELETE DOCU POD _DOCU" => \&_method_docu_pod_docu,
162             "GET HOLIDAY _TSRANGE" => \&_method_holiday_tsrange,
163             "PUT HOLIDAY _TSRANGE" => \&_method_holiday_tsrange,
164             "POST HOLIDAY _TSRANGE" => \&_method_holiday_tsrange,
165             "DELETE HOLIDAY _TSRANGE" => \&_method_holiday_tsrange,
166             "GET DOCU HTML" => \&_method_docu_html,
167             "PUT DOCU HTML" => \&_method_docu_html,
168             "POST DOCU HTML" => \&_method_docu_html,
169             "DELETE DOCU HTML" => \&_method_docu_html,
170             "GET DOCU HTML _DOCU" => \&_method_docu_html_docu,
171             "PUT DOCU HTML _DOCU" => \&_method_docu_html_docu,
172             "POST DOCU HTML _DOCU" => \&_method_docu_html_docu,
173             "DELETE DOCU HTML _DOCU" => \&_method_docu_html_docu,
174             "GET DOCU TEXT" => \&_method_docu_text,
175             "PUT DOCU TEXT" => \&_method_docu_text,
176             "POST DOCU TEXT" => \&_method_docu_text,
177             "DELETE DOCU TEXT" => \&_method_docu_text,
178             "GET DOCU TEXT _DOCU" => \&_method_docu_text_docu,
179             "PUT DOCU TEXT _DOCU" => \&_method_docu_text_docu,
180             "POST DOCU TEXT _DOCU" => \&_method_docu_text_docu,
181             "DELETE DOCU TEXT _DOCU" => \&_method_docu_text_docu,
182             "GET ECHO" => \&_method_echo,
183             "PUT ECHO" => \&_method_echo,
184             "POST ECHO" => \&_method_echo,
185             "DELETE ECHO" => \&_method_echo,
186             "GET FORBIDDEN" => \&_method_forbidden,
187             "PUT FORBIDDEN" => \&_method_forbidden,
188             "POST FORBIDDEN" => \&_method_forbidden,
189             "DELETE FORBIDDEN" => \&_method_forbidden,
190             "GET NOOP" => \&_method_noop,
191             "PUT NOOP" => \&_method_noop,
192             "POST NOOP" => \&_method_noop,
193             "DELETE NOOP" => \&_method_noop,
194             "GET PARAM" => \&_method_param,
195             "PUT PARAM" => \&_method_param,
196             "POST PARAM" => \&_method_param,
197             "DELETE PARAM" => \&_method_param,
198             "GET PARAM CORE" => \&_method_param_core,
199             "PUT PARAM CORE" => \&_method_param_core,
200             "POST PARAM CORE" => \&_method_param_core,
201             "DELETE PARAM CORE" => \&_method_param_core,
202             "GET PARAM CORE _TERM" => \&_method_param_core_term,
203             "PUT PARAM CORE _TERM" => \&_method_param_core_term,
204             "POST PARAM CORE _TERM" => \&_method_param_core_term,
205             "DELETE PARAM CORE _TERM" => \&_method_param_core_term,
206             "GET PARAM META" => \&_method_param_meta,
207             "PUT PARAM META" => \&_method_param_meta,
208             "POST PARAM META" => \&_method_param_meta,
209             "DELETE PARAM META" => \&_method_param_meta,
210             "GET PARAM META _TERM" => \&_method_param_meta_term,
211             "PUT PARAM META _TERM" => \&_method_param_meta_term,
212             "POST PARAM META _TERM" => \&_method_param_meta_term,
213             "DELETE PARAM META _TERM" => \&_method_param_meta_term,
214             "GET PARAM SITE" => \&_method_param_site,
215             "PUT PARAM SITE" => \&_method_param_site,
216             "POST PARAM SITE" => \&_method_param_site,
217             "DELETE PARAM SITE" => \&_method_param_site,
218             "GET PARAM SITE _TERM" => \&_method_param_site_term,
219             "PUT PARAM SITE _TERM" => \&_method_param_site_term,
220             "POST PARAM SITE _TERM" => \&_method_param_site_term,
221             "DELETE PARAM SITE _TERM" => \&_method_param_site_term,
222             "GET SESSION" => \&_method_session,
223             "PUT SESSION" => \&_method_session,
224             "POST SESSION" => \&_method_session,
225             "DELETE SESSION" => \&_method_session,
226             "GET VERSION" => \&_method_version,
227             "PUT VERSION" => \&_method_version,
228             "POST VERSION" => \&_method_version,
229             "DELETE VERSION" => \&_method_version,
230             "GET WHOAMI" => \&_method_whoami,
231             "PUT WHOAMI" => \&_method_whoami,
232             "POST WHOAMI" => \&_method_whoami,
233             "DELETE WHOAMI" => \&_method_whoami,
234             "EXIT" => \&go_exit,
235              
236             # Activity commands
237             "GET ACTIVITY" => \&_method_activity,
238             "PUT ACTIVITY" => \&_method_activity,
239             "POST ACTIVITY" => \&_method_activity,
240             "DELETE ACTIVITY" => \&_method_activity,
241             "GET ACTIVITY AID" => \&_method_activity_aid,
242             "PUT ACTIVITY AID" => \&_method_activity_aid,
243             "POST ACTIVITY AID" => \&_method_activity_aid,
244             "DELETE ACTIVITY AID" => \&_method_activity_aid,
245             "GET ACTIVITY AID _JSON" => \&_method_activity_aid,
246             "PUT ACTIVITY AID _JSON" => \&_method_activity_aid,
247             "POST ACTIVITY AID _JSON" => \&_method_activity_aid,
248             "DELETE ACTIVITY AID _JSON" => \&_method_activity_aid,
249             "GET ACTIVITY AID _NUM" => \&_method_activity_aid_num,
250             "PUT ACTIVITY AID _NUM" => \&_method_activity_aid_num,
251             "POST ACTIVITY AID _NUM" => \&_method_activity_aid_num,
252             "DELETE ACTIVITY AID _NUM" => \&_method_activity_aid_num,
253             "GET ACTIVITY ALL" => \&_method_activity_all,
254             "PUT ACTIVITY ALL" => \&_method_activity_all,
255             "POST ACTIVITY ALL" => \&_method_activity_all,
256             "DELETE ACTIVITY ALL" => \&_method_activity_all,
257             "GET ACTIVITY ALL DISABLED" => \&_method_activity_all_disabled,
258             "PUT ACTIVITY ALL DISABLED" => \&_method_activity_all_disabled,
259             "POST ACTIVITY ALL DISABLED" => \&_method_activity_all_disabled,
260             "DELETE ACTIVITY ALL DISABLED" => \&_method_activity_all_disabled,
261             "GET ACTIVITY CODE" => \&_method_activity_code,
262             "PUT ACTIVITY CODE" => \&_method_activity_code,
263             "POST ACTIVITY CODE" => \&_method_activity_code,
264             "DELETE ACTIVITY CODE" => \&_method_activity_code,
265             "GET ACTIVITY CODE _JSON" => \&_method_activity_code,
266             "PUT ACTIVITY CODE _JSON" => \&_method_activity_code,
267             "POST ACTIVITY CODE _JSON" => \&_method_activity_code,
268             "DELETE ACTIVITY CODE _JSON" => \&_method_activity_code,
269             "GET ACTIVITY CODE _TERM" => \&_method_activity_code_term,
270             "PUT ACTIVITY CODE _TERM" => \&_method_activity_code_term,
271             "POST ACTIVITY CODE _TERM" => \&_method_activity_code_term,
272             "DELETE ACTIVITY CODE _TERM" => \&_method_activity_code_term,
273              
274             # Employee commands
275             "GET EMPLOYEE" => \&_method_employee,
276             "PUT EMPLOYEE" => \&_method_employee,
277             "POST EMPLOYEE" => \&_method_employee,
278             "DELETE EMPLOYEE" => \&_method_employee,
279             "GET EMPLOYEE COUNT" => \&_method_employee_count,
280             "PUT EMPLOYEE COUNT" => \&_method_employee_count,
281             "POST EMPLOYEE COUNT" => \&_method_employee_count,
282             "DELETE EMPLOYEE COUNT" => \&_method_employee_count,
283             "GET EMPLOYEE COUNT PRIV" => \&_method_employee_count_priv,
284             "PUT EMPLOYEE COUNT PRIV" => \&_method_employee_count_priv,
285             "POST EMPLOYEE COUNT PRIV" => \&_method_employee_count_priv,
286             "DELETE EMPLOYEE COUNT PRIV" => \&_method_employee_count_priv,
287             "GET EMPLOYEE CURRENT" => \&_method_employee_current,
288             "PUT EMPLOYEE CURRENT" => \&_method_employee_current,
289             "POST EMPLOYEE CURRENT" => \&_method_employee_current,
290             "DELETE EMPLOYEE CURRENT" => \&_method_employee_current,
291             "GET EMPLOYEE CURRENT PRIV" => \&_method_employee_current_priv,
292             "PUT EMPLOYEE CURRENT PRIV" => \&_method_employee_current_priv,
293             "POST EMPLOYEE CURRENT PRIV" => \&_method_employee_current_priv,
294             "DELETE EMPLOYEE CURRENT PRIV" => \&_method_employee_current_priv,
295             "GET EMPLOYEE EID" => \&_method_employee_eid,
296             "PUT EMPLOYEE EID" => \&_method_employee_eid,
297             "POST EMPLOYEE EID" => \&_method_employee_eid,
298             "DELETE EMPLOYEE EID" => \&_method_employee_eid,
299             "GET EMPLOYEE EID _JSON" => \&_method_employee_eid_json,
300             "PUT EMPLOYEE EID _JSON" => \&_method_employee_eid_json,
301             "POST EMPLOYEE EID _JSON" => \&_method_employee_eid_json,
302             "DELETE EMPLOYEE EID _JSON" => \&_method_employee_eid_json,
303             "GET EMPLOYEE EID _NUM" => \&_method_employee_eid_num,
304             "PUT EMPLOYEE EID _NUM" => \&_method_employee_eid_num,
305             "POST EMPLOYEE EID _NUM" => \&_method_employee_eid_num,
306             "DELETE EMPLOYEE EID _NUM" => \&_method_employee_eid_num,
307             "GET EMPLOYEE EID _NUM _JSON" => \&_method_employee_eid_num_json,
308             "PUT EMPLOYEE EID _NUM _JSON" => \&_method_employee_eid_num_json,
309             "POST EMPLOYEE EID _NUM _JSON" => \&_method_employee_eid_num_json,
310             "DELETE EMPLOYEE EID _NUM _JSON" => \&_method_employee_eid_num_json,
311             "GET EMPLOYEE EID _NUM TEAM" => \&_method_employee_eid_num_team,
312             "PUT EMPLOYEE EID _NUM TEAM" => \&_method_employee_eid_num_team,
313             "POST EMPLOYEE EID _NUM TEAM" => \&_method_employee_eid_num_team,
314             "DELETE EMPLOYEE EID _NUM TEAM" => \&_method_employee_eid_num_team,
315             "GET EMPLOYEE LIST" => \&_method_employee_list,
316             "PUT EMPLOYEE LIST" => \&_method_employee_list,
317             "POST EMPLOYEE LIST" => \&_method_employee_list,
318             "DELETE EMPLOYEE LIST" => \&_method_employee_list,
319             "GET EMPLOYEE LIST _TERM" => \&_method_employee_list_priv,
320             "PUT EMPLOYEE LIST _TERM" => \&_method_employee_list_priv,
321             "POST EMPLOYEE LIST _TERM" => \&_method_employee_list_priv,
322             "DELETE EMPLOYEE LIST _TERM" => \&_method_employee_list_priv,
323             "GET EMPLOYEE NICK" => \&_method_employee_nick,
324             "PUT EMPLOYEE NICK" => \&_method_employee_nick,
325             "POST EMPLOYEE NICK" => \&_method_employee_nick,
326             "DELETE EMPLOYEE NICK" => \&_method_employee_nick,
327             "GET EMPLOYEE NICK _JSON" => \&_method_employee_nick_json,
328             "PUT EMPLOYEE NICK _JSON" => \&_method_employee_nick_json,
329             "POST EMPLOYEE NICK _JSON" => \&_method_employee_nick_json,
330             "DELETE EMPLOYEE NICK _JSON" => \&_method_employee_nick_json,
331             "GET EMPLOYEE NICK _TERM" => \&_method_employee_nick_term,
332             "PUT EMPLOYEE NICK _TERM" => \&_method_employee_nick_term,
333             "POST EMPLOYEE NICK _TERM" => \&_method_employee_nick_term,
334             "DELETE EMPLOYEE NICK _TERM" => \&_method_employee_nick_term,
335             "GET EMPLOYEE NICK _TERM LDAP" => \&_method_employee_nick_term_ldap,
336             "PUT EMPLOYEE NICK _TERM LDAP" => \&_method_employee_nick_term_ldap,
337             "POST EMPLOYEE NICK _TERM LDAP" => \&_method_employee_nick_term_ldap,
338             "DELETE EMPLOYEE NICK _TERM LDAP" => \&_method_employee_nick_term_ldap,
339             "GET EMPLOYEE NICK _TERM _JSON" => \&_method_employee_nick_term_json,
340             "PUT EMPLOYEE NICK _TERM _JSON" => \&_method_employee_nick_term_json,
341             "POST EMPLOYEE NICK _TERM _JSON" => \&_method_employee_nick_term_json,
342             "DELETE EMPLOYEE NICK _TERM _JSON" => \&_method_employee_nick_term_json,
343             "GET EMPLOYEE NICK _TERM TEAM" => \&_method_employee_nick_term_team,
344             "PUT EMPLOYEE NICK _TERM TEAM" => \&_method_employee_nick_term_team,
345             "POST EMPLOYEE NICK _TERM TEAM" => \&_method_employee_nick_term_team,
346             "DELETE EMPLOYEE NICK _TERM TEAM" => \&_method_employee_nick_term_team,
347             "GET EMPLOYEE SEARCH" => \&_method_employee_search,
348             "PUT EMPLOYEE SEARCH" => \&_method_employee_search,
349             "POST EMPLOYEE SEARCH" => \&_method_employee_search,
350             "DELETE EMPLOYEE SEARCH" => \&_method_employee_search,
351             "GET EMPLOYEE SEARCH NICK _TERM" => \&_method_employee_search_nick,
352             "PUT EMPLOYEE SEARCH NICK _TERM" => \&_method_employee_search_nick,
353             "POST EMPLOYEE SEARCH NICK _TERM" => \&_method_employee_search_nick,
354             "DELETE EMPLOYEE SEARCH NICK _TERM" => \&_method_employee_search_nick,
355             "GET EMPLOYEE SELF" => \&_method_employee_self,
356             "PUT EMPLOYEE SELF" => \&_method_employee_self,
357             "POST EMPLOYEE SELF" => \&_method_employee_self,
358             "DELETE EMPLOYEE SELF" => \&_method_employee_self,
359             "GET EMPLOYEE SELF PRIV" => \&_method_employee_self_priv,
360             "PUT EMPLOYEE SELF PRIV" => \&_method_employee_self_priv,
361             "POST EMPLOYEE SELF PRIV" => \&_method_employee_self_priv,
362             "DELETE EMPLOYEE SELF PRIV" => \&_method_employee_self_priv,
363             "GET EMPLOYEE TEAM" => \&_method_employee_team,
364             "PUT EMPLOYEE TEAM" => \&_method_employee_team,
365             "POST EMPLOYEE TEAM" => \&_method_employee_team,
366             "DELETE EMPLOYEE TEAM" => \&_method_employee_team,
367              
368             # Interval commands
369             "GET INTERVAL" => \&_method_interval,
370             "PUT INTERVAL" => \&_method_interval,
371             "POST INTERVAL" => \&_method_interval,
372             "DELETE INTERVAL" => \&_method_interval,
373             "GET INTERVAL EID _NUM" => \&_method_interval_eid,
374             "PUT INTERVAL EID _NUM" => \&_method_interval_eid,
375             "POST INTERVAL EID _NUM" => \&_method_interval_eid,
376             "DELETE INTERVAL EID _NUM" => \&_method_interval_eid,
377             "GET INTERVAL EID _NUM _TSRANGE" => \&_method_interval_eid_tsrange,
378             "PUT INTERVAL EID _NUM _TSRANGE" => \&_method_interval_eid_tsrange,
379             "POST INTERVAL EID _NUM _TSRANGE" => \&_method_interval_eid_tsrange,
380             "DELETE INTERVAL EID _NUM _TSRANGE" => \&_method_interval_eid_tsrange,
381             "GET INTERVAL FILLUP" => \&_method_interval_fillup,
382             "PUT INTERVAL FILLUP" => \&_method_interval_fillup,
383             "POST INTERVAL FILLUP" => \&_method_interval_fillup,
384             "DELETE INTERVAL FILLUP" => \&_method_interval_fillup,
385             "GET INTERVAL IID _NUM" => \&_method_interval_iid,
386             "PUT INTERVAL IID _NUM" => \&_method_interval_iid,
387             "POST INTERVAL IID _NUM" => \&_method_interval_iid,
388             "DELETE INTERVAL IID _NUM" => \&_method_interval_iid,
389             "GET INTERVAL NEW" => \&_method_interval_new,
390             "PUT INTERVAL NEW" => \&_method_interval_new,
391             "POST INTERVAL NEW" => \&_method_interval_new,
392             "DELETE INTERVAL NEW" => \&_method_interval_new,
393             "GET INTERVAL NICK _TERM" => \&_method_interval_nick,
394             "PUT INTERVAL NICK _TERM" => \&_method_interval_nick,
395             "POST INTERVAL NICK _TERM" => \&_method_interval_nick,
396             "DELETE INTERVAL NICK _TERM" => \&_method_interval_nick,
397             "GET INTERVAL NICK _TERM _TSRANGE" => \&_method_interval_nick_tsrange,
398             "PUT INTERVAL NICK _TERM _TSRANGE" => \&_method_interval_nick_tsrange,
399             "POST INTERVAL NICK _TERM _TSRANGE" => \&_method_interval_nick_tsrange,
400             "DELETE INTERVAL NICK _TERM _TSRANGE" => \&_method_interval_nick_tsrange,
401             "GET INTERVAL SELF" => \&_method_interval_self,
402             "PUT INTERVAL SELF" => \&_method_interval_self,
403             "POST INTERVAL SELF" => \&_method_interval_self,
404             "DELETE INTERVAL SELF" => \&_method_interval_self,
405             "GET INTERVAL SELF _TSRANGE" => \&_method_interval_self_tsrange,
406             "PUT INTERVAL SELF _TSRANGE" => \&_method_interval_self_tsrange,
407             "POST INTERVAL SELF _TSRANGE" => \&_method_interval_self_tsrange,
408             "DELETE INTERVAL SELF _TSRANGE" => \&_method_interval_self_tsrange,
409              
410             # Lock commands
411             "GET LOCK" => \&_method_lock,
412             "PUT LOCK" => \&_method_lock,
413             "POST LOCK" => \&_method_lock,
414             "DELETE LOCK" => \&_method_lock,
415             "GET LOCK EID _NUM" => \&_method_lock_eid,
416             "PUT LOCK EID _NUM" => \&_method_lock_eid,
417             "POST LOCK EID _NUM" => \&_method_lock_eid,
418             "DELETE LOCK EID _NUM" => \&_method_lock_eid,
419             "GET LOCK EID _NUM _TSRANGE" => \&_method_lock_eid_tsrange,
420             "PUT LOCK EID _NUM _TSRANGE" => \&_method_lock_eid_tsrange,
421             "POST LOCK EID _NUM _TSRANGE" => \&_method_lock_eid_tsrange,
422             "DELETE LOCK EID _NUM _TSRANGE" => \&_method_lock_eid_tsrange,
423             "GET LOCK LID _NUM" => \&_method_lock_lid,
424             "PUT LOCK LID _NUM" => \&_method_lock_lid,
425             "POST LOCK LID _NUM" => \&_method_lock_lid,
426             "DELETE LOCK LID _NUM" => \&_method_lock_lid,
427             "GET LOCK NEW" => \&_method_lock_new,
428             "PUT LOCK NEW" => \&_method_lock_new,
429             "POST LOCK NEW" => \&_method_lock_new,
430             "DELETE LOCK NEW" => \&_method_lock_new,
431             "GET LOCK NICK _TERM" => \&_method_lock_nick,
432             "PUT LOCK NICK _TERM" => \&_method_lock_nick,
433             "POST LOCK NICK _TERM" => \&_method_lock_nick,
434             "DELETE LOCK NICK _TERM" => \&_method_lock_nick,
435             "GET LOCK NICK _TERM _TSRANGE" => \&_method_lock_nick_tsrange,
436             "PUT LOCK NICK _TERM _TSRANGE" => \&_method_lock_nick_tsrange,
437             "POST LOCK NICK _TERM _TSRANGE" => \&_method_lock_nick_tsrange,
438             "DELETE LOCK NICK _TERM _TSRANGE" => \&_method_lock_nick_tsrange,
439             "GET LOCK SELF" => \&_method_lock_self,
440             "PUT LOCK SELF" => \&_method_lock_self,
441             "POST LOCK SELF" => \&_method_lock_self,
442             "DELETE LOCK SELF" => \&_method_lock_self,
443             "GET LOCK SELF _TSRANGE" => \&_method_lock_self_tsrange,
444             "PUT LOCK SELF _TSRANGE" => \&_method_lock_self_tsrange,
445             "POST LOCK SELF _TSRANGE" => \&_method_lock_self_tsrange,
446             "DELETE LOCK SELF _TSRANGE" => \&_method_lock_self_tsrange,
447              
448             # Priv commands
449             "GET PRIV" => \&_method_priv,
450             "PUT PRIV" => \&_method_priv,
451             "POST PRIV" => \&_method_priv,
452             "DELETE PRIV" => \&_method_priv,
453             "GET PRIV EID _NUM" => \&_method_priv_eid_num,
454             "PUT PRIV EID _NUM" => \&_method_priv_eid_num,
455             "POST PRIV EID _NUM" => \&_method_priv_eid_num,
456             "DELETE PRIV EID _NUM" => \&_method_priv_eid_num,
457             "GET PRIV EID _NUM _TIMESTAMP" => \&_method_priv_eid_num_timestamp,
458             "PUT PRIV EID _NUM _TIMESTAMP" => \&_method_priv_eid_num_timestamp,
459             "POST PRIV EID _NUM _TIMESTAMP" => \&_method_priv_eid_num_timestamp,
460             "DELETE PRIV EID _NUM _TIMESTAMP" => \&_method_priv_eid_num_timestamp,
461             "GET PRIV HISTORY EID _NUM" => \&_method_priv_history_eid_num,
462             "PUT PRIV HISTORY EID _NUM" => \&_method_priv_history_eid_num,
463             "POST PRIV HISTORY EID _NUM" => \&_method_priv_history_eid_num,
464             "DELETE PRIV HISTORY EID _NUM" => \&_method_priv_history_eid_num,
465             "GET PRIV HISTORY EID _NUM _TSRANGE" => \&_method_priv_history_eid_num_tsrange,
466             "PUT PRIV HISTORY EID _NUM _TSRANGE" => \&_method_priv_history_eid_num_tsrange,
467             "POST PRIV HISTORY EID _NUM _TSRANGE" => \&_method_priv_history_eid_num_tsrange,
468             "DELETE PRIV HISTORY EID _NUM _TSRANGE" => \&_method_priv_history_eid_num_tsrange,
469             "GET PRIV HISTORY NICK _TERM" => \&_method_priv_history_nick_term,
470             "PUT PRIV HISTORY NICK _TERM" => \&_method_priv_history_nick_term,
471             "POST PRIV HISTORY NICK _TERM" => \&_method_priv_history_nick_term,
472             "DELETE PRIV HISTORY NICK _TERM" => \&_method_priv_history_nick_term,
473             "GET PRIV HISTORY NICK _TERM _TSRANGE" => \&_method_priv_history_nick_term_tsrange,
474             "PUT PRIV HISTORY NICK _TERM _TSRANGE" => \&_method_priv_history_nick_term_tsrange,
475             "POST PRIV HISTORY NICK _TERM _TSRANGE" => \&_method_priv_history_nick_term_tsrange,
476             "DELETE PRIV HISTORY NICK _TERM _TSRANGE" => \&_method_priv_history_nick_term_tsrange,
477             "GET PRIV HISTORY PHID _NUM" => \&_method_priv_history_phid_num,
478             "PUT PRIV HISTORY PHID _NUM" => \&_method_priv_history_phid_num,
479             "POST PRIV HISTORY PHID _NUM" => \&_method_priv_history_phid_num,
480             "DELETE PRIV HISTORY PHID _NUM" => \&_method_priv_history_phid_num,
481             "GET PRIV HISTORY SELF" => \&_method_priv_history_self,
482             "PUT PRIV HISTORY SELF" => \&_method_priv_history_self,
483             "POST PRIV HISTORY SELF" => \&_method_priv_history_self,
484             "DELETE PRIV HISTORY SELF" => \&_method_priv_history_self,
485             "GET PRIV HISTORY SELF _TSRANGE" => \&_method_priv_history_self_tsrange,
486             "PUT PRIV HISTORY SELF _TSRANGE" => \&_method_priv_history_self_tsrange,
487             "POST PRIV HISTORY SELF _TSRANGE" => \&_method_priv_history_self_tsrange,
488             "DELETE PRIV HISTORY SELF _TSRANGE" => \&_method_priv_history_self_tsrange,
489             "GET PRIV NICK _TERM" => \&_method_priv_nick_term,
490             "PUT PRIV NICK _TERM" => \&_method_priv_nick_term,
491             "POST PRIV NICK _TERM" => \&_method_priv_nick_term,
492             "DELETE PRIV NICK _TERM" => \&_method_priv_nick_term,
493             "GET PRIV NICK _TERM _TIMESTAMP" => \&_method_priv_nick_term_timestamp,
494             "PUT PRIV NICK _TERM _TIMESTAMP" => \&_method_priv_nick_term_timestamp,
495             "POST PRIV NICK _TERM _TIMESTAMP" => \&_method_priv_nick_term_timestamp,
496             "DELETE PRIV NICK _TERM _TIMESTAMP" => \&_method_priv_nick_term_timestamp,
497             "GET PRIV SELF" => \&_method_priv_self,
498             "PUT PRIV SELF" => \&_method_priv_self,
499             "POST PRIV SELF" => \&_method_priv_self,
500             "DELETE PRIV SELF" => \&_method_priv_self,
501             "GET PRIV SELF _TIMESTAMP" => \&_method_priv_self_timestamp,
502             "PUT PRIV SELF _TIMESTAMP" => \&_method_priv_self_timestamp,
503             "POST PRIV SELF _TIMESTAMP" => \&_method_priv_self_timestamp,
504             "DELETE PRIV SELF _TIMESTAMP" => \&_method_priv_self_timestamp,
505              
506             # Schedule commands
507             "GET SCHEDULE" => \&_method_schedule,
508             "PUT SCHEDULE" => \&_method_schedule,
509             "POST SCHEDULE" => \&_method_schedule,
510             "DELETE SCHEDULE" => \&_method_schedule,
511             "GET SCHEDULE ALL" => \&_method_schedule_all,
512             "PUT SCHEDULE ALL" => \&_method_schedule_all,
513             "POST SCHEDULE ALL" => \&_method_schedule_all,
514             "DELETE SCHEDULE ALL" => \&_method_schedule_all,
515             "GET SCHEDULE ALL DISABLED" => \&_method_schedule_all_disabled,
516             "PUT SCHEDULE ALL DISABLED" => \&_method_schedule_all_disabled,
517             "POST SCHEDULE ALL DISABLED" => \&_method_schedule_all_disabled,
518             "DELETE SCHEDULE ALL DISABLED" => \&_method_schedule_all_disabled,
519             "GET SCHEDULE EID _NUM" => \&_method_schedule_eid_num,
520             "PUT SCHEDULE EID _NUM" => \&_method_schedule_eid_num,
521             "POST SCHEDULE EID _NUM" => \&_method_schedule_eid_num,
522             "DELETE SCHEDULE EID _NUM" => \&_method_schedule_eid_num,
523             "GET SCHEDULE EID _NUM _TIMESTAMP" => \&_method_schedule_eid_num_timestamp,
524             "PUT SCHEDULE EID _NUM _TIMESTAMP" => \&_method_schedule_eid_num_timestamp,
525             "POST SCHEDULE EID _NUM _TIMESTAMP" => \&_method_schedule_eid_num_timestamp,
526             "DELETE SCHEDULE EID _NUM _TIMESTAMP" => \&_method_schedule_eid_num_timestamp,
527             "GET SCHEDULE HISTORY EID _NUM" => \&_method_schedule_history_eid_num,
528             "PUT SCHEDULE HISTORY EID _NUM" => \&_method_schedule_history_eid_num,
529             "POST SCHEDULE HISTORY EID _NUM" => \&_method_schedule_history_eid_num,
530             "DELETE SCHEDULE HISTORY EID _NUM" => \&_method_schedule_history_eid_num,
531             "GET SCHEDULE HISTORY EID _NUM _TSRANGE" => \&_method_schedule_history_eid_num_tsrange,
532             "PUT SCHEDULE HISTORY EID _NUM _TSRANGE" => \&_method_schedule_history_eid_num_tsrange,
533             "POST SCHEDULE HISTORY EID _NUM _TSRANGE" => \&_method_schedule_history_eid_num_tsrange,
534             "DELETE SCHEDULE HISTORY EID _NUM _TSRANGE" => \&_method_schedule_history_eid_num_tsrange,
535             "GET SCHEDULE HISTORY NICK _TERM" => \&_method_schedule_history_nick_term,
536             "PUT SCHEDULE HISTORY NICK _TERM" => \&_method_schedule_history_nick_term,
537             "POST SCHEDULE HISTORY NICK _TERM" => \&_method_schedule_history_nick_term,
538             "DELETE SCHEDULE HISTORY NICK _TERM" => \&_method_schedule_history_nick_term,
539             "GET SCHEDULE HISTORY NICK _TERM _TSRANGE" => \&_method_schedule_history_nick_term_tsrange,
540             "PUT SCHEDULE HISTORY NICK _TERM _TSRANGE" => \&_method_schedule_history_nick_term_tsrange,
541             "POST SCHEDULE HISTORY NICK _TERM _TSRANGE" => \&_method_schedule_history_nick_term_tsrange,
542             "DELETE SCHEDULE HISTORY NICK _TERM _TSRANGE" => \&_method_schedule_history_nick_term_tsrange,
543             "GET SCHEDULE HISTORY SELF" => \&_method_schedule_history_self,
544             "PUT SCHEDULE HISTORY SELF" => \&_method_schedule_history_self,
545             "POST SCHEDULE HISTORY SELF" => \&_method_schedule_history_self,
546             "DELETE SCHEDULE HISTORY SELF" => \&_method_schedule_history_self,
547             "GET SCHEDULE HISTORY SELF _TSRANGE" => \&_method_schedule_history_self_tsrange,
548             "PUT SCHEDULE HISTORY SELF _TSRANGE" => \&_method_schedule_history_self_tsrange,
549             "POST SCHEDULE HISTORY SELF _TSRANGE" => \&_method_schedule_history_self_tsrange,
550             "DELETE SCHEDULE HISTORY SELF _TSRANGE" => \&_method_schedule_history_self_tsrange,
551             "GET SCHEDULE HISTORY SHID _NUM" => \&_method_schedule_history_shid_num,
552             "PUT SCHEDULE HISTORY SHID _NUM" => \&_method_schedule_history_shid_num,
553             "POST SCHEDULE HISTORY SHID _NUM" => \&_method_schedule_history_shid_num,
554             "DELETE SCHEDULE HISTORY SHID _NUM" => \&_method_schedule_history_shid_num,
555             "GET SCHEDULE NICK _TERM" => \&_method_schedule_nick_term,
556             "PUT SCHEDULE NICK _TERM" => \&_method_schedule_nick_term,
557             "POST SCHEDULE NICK _TERM" => \&_method_schedule_nick_term,
558             "DELETE SCHEDULE NICK _TERM" => \&_method_schedule_nick_term,
559             "GET SCHEDULE NICK _TERM _TIMESTAMP" => \&_method_schedule_nick_term_timestamp,
560             "PUT SCHEDULE NICK _TERM _TIMESTAMP" => \&_method_schedule_nick_term_timestamp,
561             "POST SCHEDULE NICK _TERM _TIMESTAMP" => \&_method_schedule_nick_term_timestamp,
562             "DELETE SCHEDULE NICK _TERM _TIMESTAMP" => \&_method_schedule_nick_term_timestamp,
563             "GET SCHEDULE SCODE _TERM" => \&_method_schedule_scode_term,
564             "PUT SCHEDULE SCODE _TERM" => \&_method_schedule_scode_term,
565             "POST SCHEDULE SCODE _TERM" => \&_method_schedule_scode_term,
566             "DELETE SCHEDULE SCODE _TERM" => \&_method_schedule_scode_term,
567             "GET SCHEDULE SELF" => \&_method_schedule_self,
568             "PUT SCHEDULE SELF" => \&_method_schedule_self,
569             "POST SCHEDULE SELF" => \&_method_schedule_self,
570             "DELETE SCHEDULE SELF" => \&_method_schedule_self,
571             "GET SCHEDULE SELF _TIMESTAMP" => \&_method_schedule_self_timestamp,
572             "PUT SCHEDULE SELF _TIMESTAMP" => \&_method_schedule_self_timestamp,
573             "POST SCHEDULE SELF _TIMESTAMP" => \&_method_schedule_self_timestamp,
574             "DELETE SCHEDULE SELF _TIMESTAMP" => \&_method_schedule_self_timestamp,
575             "GET SCHEDULE SID _NUM" => \&_method_schedule_sid_num,
576             "PUT SCHEDULE SID _NUM" => \&_method_schedule_sid_num,
577             "POST SCHEDULE SID _NUM" => \&_method_schedule_sid_num,
578             "DELETE SCHEDULE SID _NUM" => \&_method_schedule_sid_num,
579              
580             # Activity commands
581             "ACTIVITY" => \&activity_all,
582             "ACTIVITY ALL" => \&activity_all,
583             "ACTIVITY ALL DISABLED" => \&activity_all,
584            
585             # Report commands
586             #"COMPONENT PATH _PATH" => \&component_path,
587             "GENERATE REPORT _PATH" => \&generate_report,
588             "GENERATE REPORT _PATH _JSON" => \&generate_report,
589              
590             # Employee commands
591             "EMPLOYEE" => \&employee_profile,
592             "EID" => \&noop,
593             "NICK" => \&noop,
594             "SEC_ID" => \&noop,
595             "EMPLOYEE LDAP" => \&employee_ldap,
596             "EMPLOYEE LIST" => \&employee_list,
597             "EMPLOYEE LIST _TERM" => \&employee_list,
598             "EMPLOYEE PROFILE" => \&employee_profile,
599             "EMPLOYEE SHOW" => \&employee_profile,
600             "EMPLOYEE_SPEC" => \&employee_profile,
601             "EMPLOYEE_SPEC LDAP" => \&employee_ldap,
602             "EMPLOYEE_SPEC LDAP IMPORT" => \&employee_ldap_import,
603             "EMPLOYEE_SPEC PROFILE" => \&employee_profile,
604             "EMPLOYEE_SPEC SHOW" => \&employee_profile,
605             "EMPLOYEE SEC_ID _TERM" => \&set_employee_self_sec_id,
606             "EMPLOYEE SET SEC_ID _TERM" => \&set_employee_self_sec_id,
607             "EMPLOYEE FULLNAME" => \&set_employee_self_fullname,
608             "EMPLOYEE SET FULLNAME" => \&set_employee_self_fullname,
609             "EMPLOYEE_SPEC SEC_ID _TERM" => \&set_employee_other_sec_id,
610             "EMPLOYEE_SPEC SET SEC_ID _TERM" => \&set_employee_other_sec_id,
611             "EMPLOYEE_SPEC FULLNAME" => \&set_employee_other_fullname,
612             "EMPLOYEE_SPEC SET FULLNAME" => \&set_employee_other_fullname,
613             "EMPLOYEE_SPEC SUPERVISOR _TERM" => \&set_employee_supervisor,
614             "EMPLOYEE_SPEC SET SUPERVISOR _TERM" => \&set_employee_supervisor,
615             "EMPLOYEE PASSWORD" => \&set_employee_self_password,
616             "EMPLOYEE SET PASSWORD" => \&set_employee_self_password,
617             "EMPLOYEE_SPEC PASSWORD" => \&set_employee_other_password,
618             "EMPLOYEE_SPEC SET PASSWORD" => \&set_employee_other_password,
619             "EMPLOYEE TEAM" => \&employee_team,
620             "EMPLOYEE_SPEC TEAM" => \&employee_team,
621              
622             # History commands
623             "PRIV HISTORY" => \&dump_priv_history,
624             "EMPLOYEE_SPEC PRIV HISTORY" => \&dump_priv_history,
625             "SCHEDULE HISTORY" => \&dump_schedule_history,
626             "EMPLOYEE_SPEC SCHEDULE HISTORY" => \&dump_schedule_history,
627             "EMPLOYEE_SPEC PRIV_SPEC _DATE" => \&add_priv_history,
628             "EMPLOYEE_SPEC PRIV_SPEC EFFECTIVE _DATE" => \&add_priv_history,
629             "EMPLOYEE_SPEC SCHEDULE_SPEC _DATE" => \&add_schedule_history,
630             "EMPLOYEE_SPEC SCHEDULE_SPEC EFFECTIVE _DATE" => \&add_schedule_history,
631             "EMPLOYEE_SPEC SID" => \&noop,
632             "EMPLOYEE_SPEC SCODE" => \&noop,
633             "EMPLOYEE_SPEC SET PRIV_SPEC _DATE" => \&add_priv_history,
634             "EMPLOYEE_SPEC SET PRIV_SPEC EFFECTIVE _DATE" => \&add_priv_history,
635             "EMPLOYEE_SPEC SET SCHEDULE_SPEC _DATE" => \&add_schedule_history,
636             "EMPLOYEE_SPEC SET SCHEDULE_SPEC EFFECTIVE _DATE" => \&add_schedule_history,
637             "PHISTORY_SPEC REMARK" => \&set_history_remark,
638             "PHISTORY_SPEC SET REMARK" => \&set_history_remark,
639             "SHISTORY_SPEC REMARK" => \&set_history_remark,
640             "SHISTORY_SPEC SET REMARK" => \&set_history_remark,
641              
642             # Interval commands
643              
644             # fetch/fillup intervals
645             "INTERVAL" => \&interval_promptdate,
646             "EMPLOYEE_SPEC INTERVAL" => \&interval_promptdate,
647             "INTERVAL FETCH" => \&interval_promptdate,
648             "EMPLOYEE_SPEC INTERVAL FETCH" => \&interval_promptdate,
649             "INTERVAL FILLUP" => \&interval_promptdate,
650             "EMPLOYEE_SPEC INTERVAL FILLUP" => \&interval_promptdate,
651             "INTERVAL FILLUP DRY_RUN" => \&interval_promptdate,
652             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN" => \&interval_promptdate,
653             "INTERVAL SUMMARY" => \&interval_promptdate,
654             "EMPLOYEE_SPEC INTERVAL SUMMARY" => \&interval_promptdate,
655             "INTERVAL REPORT" => \&interval_promptdate,
656             "EMPLOYEE_SPEC INTERVAL REPORT" => \&interval_promptdate,
657             "INTERVAL DELETE" => \&interval_promptdate,
658             "EMPLOYEE_SPEC INTERVAL DELETE" => \&interval_promptdate,
659              
660             "INTERVAL _DATE" => \&interval_date,
661             "EMPLOYEE_SPEC INTERVAL _DATE" => \&interval_date,
662             "INTERVAL FETCH _DATE" => \&interval_date,
663             "EMPLOYEE_SPEC INTERVAL FETCH _DATE" => \&interval_date,
664             "INTERVAL FILLUP _DATE" => \&interval_date,
665             "EMPLOYEE_SPEC INTERVAL FILLUP _DATE" => \&interval_date,
666             "INTERVAL FILLUP DRY_RUN _DATE" => \&interval_date,
667             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _DATE" => \&interval_date,
668             "INTERVAL SUMMARY _DATE" => \&interval_date,
669             "EMPLOYEE_SPEC INTERVAL SUMMARY _DATE" => \&interval_date,
670             "INTERVAL REPORT _DATE" => \&interval_date,
671             "EMPLOYEE_SPEC INTERVAL REPORT _DATE" => \&interval_date,
672             "INTERVAL DELETE _DATE" => \&interval_date,
673             "EMPLOYEE_SPEC INTERVAL DELETE _DATE" => \&interval_date,
674              
675             "INTERVAL _DATE _DATE1" => \&interval_date_date1,
676             "EMPLOYEE_SPEC INTERVAL _DATE _DATE1" => \&interval_date_date1,
677             "INTERVAL FETCH _DATE _DATE1" => \&interval_date_date1,
678             "EMPLOYEE_SPEC INTERVAL FETCH _DATE _DATE1" => \&interval_date_date1,
679             "INTERVAL FILLUP _DATE _DATE1" => \&interval_date_date1,
680             "EMPLOYEE_SPEC INTERVAL FILLUP _DATE _DATE1" => \&interval_date_date1,
681             "INTERVAL FILLUP DRY_RUN _DATE _DATE1" => \&interval_date_date1,
682             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _DATE _DATE1" => \&interval_date_date1,
683             "INTERVAL SUMMARY _DATE _DATE1" => \&interval_date_date1,
684             "EMPLOYEE_SPEC INTERVAL SUMMARY _DATE _DATE1" => \&interval_date_date1,
685             "INTERVAL REPORT _DATE _DATE1" => \&interval_date_date1,
686             "EMPLOYEE_SPEC INTERVAL REPORT _DATE _DATE1" => \&interval_date_date1,
687             "INTERVAL DELETE _DATE _DATE1" => \&interval_date_date1,
688             "EMPLOYEE_SPEC INTERVAL DELETE _DATE _DATE1" => \&interval_date_date1,
689              
690             "INTERVAL _DATE _HYPHEN _DATE1" => \&interval_date_date1,
691             "EMPLOYEE_SPEC INTERVAL _DATE _HYPHEN _DATE1" => \&interval_date_date1,
692             "INTERVAL FETCH _DATE _HYPHEN _DATE1" => \&interval_date_date1,
693             "EMPLOYEE_SPEC INTERVAL FETCH _DATE _HYPHEN _DATE1" => \&interval_date_date1,
694             "INTERVAL FILLUP _DATE _HYPHEN _DATE1" => \&interval_date_date1,
695             "EMPLOYEE_SPEC INTERVAL FILLUP _DATE _HYPHEN _DATE1" => \&interval_date_date1,
696             "INTERVAL FILLUP DRY_RUN _DATE _HYPHEN _DATE1" => \&interval_date_date1,
697             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _DATE _HYPHEN _DATE1" => \&interval_date_date1,
698             "INTERVAL SUMMARY _DATE _HYPHEN _DATE1" => \&interval_date_date1,
699             "EMPLOYEE_SPEC INTERVAL SUMMARY _DATE _HYPHEN _DATE1" => \&interval_date_date1,
700             "INTERVAL REPORT _DATE _HYPHEN _DATE1" => \&interval_date_date1,
701             "EMPLOYEE_SPEC INTERVAL REPORT _DATE _HYPHEN _DATE1" => \&interval_date_date1,
702             "INTERVAL DELETE _DATE _HYPHEN _DATE1" => \&interval_date_date1,
703             "EMPLOYEE_SPEC INTERVAL DELETE _DATE _HYPHEN _DATE1" => \&interval_date_date1,
704              
705             "INTERVAL _MONTH" => \&interval_month,
706             "EMPLOYEE_SPEC INTERVAL _MONTH" => \&interval_month,
707             "INTERVAL FETCH _MONTH" => \&interval_month,
708             "EMPLOYEE_SPEC INTERVAL FETCH _MONTH" => \&interval_month,
709             "INTERVAL FILLUP _MONTH" => \&interval_month,
710             "EMPLOYEE_SPEC INTERVAL FILLUP _MONTH" => \&interval_month,
711             "INTERVAL FILLUP DRY_RUN _MONTH" => \&interval_month,
712             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _MONTH" => \&interval_month,
713             "INTERVAL SUMMARY _MONTH" => \&interval_month,
714             "EMPLOYEE_SPEC INTERVAL SUMMARY _MONTH" => \&interval_month,
715             "INTERVAL REPORT _MONTH" => \&interval_month,
716             "EMPLOYEE_SPEC INTERVAL REPORT _MONTH" => \&interval_month,
717             "INTERVAL DELETE _MONTH" => \&interval_month,
718             "EMPLOYEE_SPEC INTERVAL DELETE _MONTH" => \&interval_month,
719              
720             "INTERVAL _MONTH _NUM" => \&interval_month,
721             "EMPLOYEE_SPEC INTERVAL _MONTH _NUM" => \&interval_month,
722             "INTERVAL FETCH _MONTH _NUM" => \&interval_month,
723             "EMPLOYEE_SPEC INTERVAL FETCH _MONTH _NUM" => \&interval_month,
724             "INTERVAL FILLUP _MONTH _NUM" => \&interval_month,
725             "EMPLOYEE_SPEC INTERVAL FILLUP _MONTH _NUM" => \&interval_month,
726             "INTERVAL FILLUP DRY_RUN _MONTH _NUM" => \&interval_month,
727             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _MONTH _NUM" => \&interval_month,
728             "INTERVAL SUMMARY _MONTH _NUM" => \&interval_month,
729             "EMPLOYEE_SPEC INTERVAL SUMMARY _MONTH _NUM" => \&interval_month,
730             "INTERVAL REPORT _MONTH _NUM" => \&interval_month,
731             "EMPLOYEE_SPEC INTERVAL REPORT _MONTH _NUM" => \&interval_month,
732             "INTERVAL DELETE _MONTH _NUM" => \&interval_month,
733             "EMPLOYEE_SPEC INTERVAL DELETE _MONTH _NUM" => \&interval_month,
734              
735             "INTERVAL _NUM" => \&interval_num_num1,
736             "EMPLOYEE_SPEC INTERVAL _NUM" => \&interval_num_num1,
737             "INTERVAL FETCH _NUM" => \&interval_num_num1,
738             "EMPLOYEE_SPEC INTERVAL FETCH _NUM" => \&interval_num_num1,
739             "INTERVAL FILLUP _NUM" => \&interval_num_num1,
740             "EMPLOYEE_SPEC INTERVAL FILLUP _NUM" => \&interval_num_num1,
741             "INTERVAL FILLUP DRY_RUN _NUM" => \&interval_num_num1,
742             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _NUM" => \&interval_num_num1,
743             "INTERVAL SUMMARY _NUM" => \&interval_num_num1,
744             "EMPLOYEE_SPEC INTERVAL SUMMARY _NUM" => \&interval_num_num1,
745             "INTERVAL REPORT _NUM" => \&interval_num_num1,
746             "EMPLOYEE_SPEC INTERVAL REPORT _NUM" => \&interval_num_num1,
747             "INTERVAL DELETE _NUM" => \&interval_num_num1,
748             "EMPLOYEE_SPEC INTERVAL DELETE _NUM" => \&interval_num_num1,
749              
750             "INTERVAL _NUM _NUM1" => \&interval_num_num1,
751             "EMPLOYEE_SPEC INTERVAL _NUM _NUM1" => \&interval_num_num1,
752             "INTERVAL FETCH _NUM _NUM1" => \&interval_num_num1,
753             "EMPLOYEE_SPEC INTERVAL FETCH _NUM _NUM1" => \&interval_num_num1,
754             "INTERVAL FILLUP _NUM _NUM1" => \&interval_num_num1,
755             "EMPLOYEE_SPEC INTERVAL FILLUP _NUM _NUM1" => \&interval_num_num1,
756             "INTERVAL FILLUP DRY_RUN _NUM _NUM1" => \&interval_num_num1,
757             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _NUM _NUM1" => \&interval_num_num1,
758             "INTERVAL SUMMARY _NUM _NUM1" => \&interval_num_num1,
759             "EMPLOYEE_SPEC INTERVAL SUMMARY _NUM _NUM1" => \&interval_num_num1,
760             "INTERVAL REPORT _NUM _NUM1" => \&interval_num_num1,
761             "EMPLOYEE_SPEC INTERVAL REPORT _NUM _NUM1" => \&interval_num_num1,
762             "INTERVAL DELETE _NUM _NUM1" => \&interval_num_num1,
763             "EMPLOYEE_SPEC INTERVAL DELETE _NUM _NUM1" => \&interval_num_num1,
764              
765             "INTERVAL FILLUP _TSRANGE" => \&interval_tsrange,
766             "EMPLOYEE_SPEC INTERVAL FILLUP _TSRANGE" => \&interval_tsrange,
767             "INTERVAL FILLUP DRY_RUN _TSRANGE" => \&interval_tsrange,
768             "EMPLOYEE_SPEC INTERVAL FILLUP DRY_RUN _TSRANGE" => \&interval_tsrange,
769             "INTERVAL SUMMARY _TSRANGE" => \&interval_tsrange,
770             "EMPLOYEE_SPEC INTERVAL SUMMARY _TSRANGE" => \&interval_tsrange,
771             "INTERVAL REPORT _TSRANGE" => \&interval_tsrange,
772             "EMPLOYEE_SPEC INTERVAL REPORT _TSRANGE" => \&interval_tsrange,
773              
774             "INTERVAL FILLUP DATELIST _TERM" => \&interval_datelist,
775             "EMPLOYEE_SPEC INTERVAL FILLUP DATELIST _TERM" => \&interval_datelist,
776             "INTERVAL FILLUP DATELIST DRY_RUN _TERM" => \&interval_datelist,
777             "EMPLOYEE_SPEC INTERVAL FILLUP DATELIST DRY_RUN _TERM" => \&interval_datelist,
778              
779             # add/insert new intervals
780             "INTERVAL _TIME _TIME1 _TERM" => \&interval_new_time_time1,
781             "INTERVAL _TIME _HYPHEN _TIME1 _TERM" => \&interval_new_time_time1,
782             "INTERVAL _TIMERANGE _TERM" => \&interval_new_timerange,
783             "INTERVAL _DATE _TIME _TIME1 _TERM" => \&interval_new_time_time1,
784             "INTERVAL _DATE _TIME _HYPHEN _TIME1 _TERM" => \&interval_new_time_time1,
785             "INTERVAL _DATE _TIMERANGE _TERM" => \&interval_new_timerange,
786             "INTERVAL _DATE _TIME _DATE1 _TIME1 _TERM" => \&interval_new_date_time_date1_time1,
787             "INTERVAL _DATE _TIME _HYPHEN _DATE1 _TIME1 _TERM" => \&interval_new_date_time_date1_time1,
788              
789             # Lock commands
790              
791             # Priv commands
792             "PRIV" => \&show_priv_as_at,
793             "PRIV _DATE" => \&show_priv_as_at,
794             "EMPLOYEE_SPEC PRIV" => \&show_priv_as_at,
795             "EMPLOYEE_SPEC PRIV _DATE" => \&show_priv_as_at,
796              
797             # Prompt date commands
798             "PROMPT _DATE" => \&change_prompt_date,
799             "PROMPT DATE _DATE" => \&change_prompt_date,
800              
801             # Schedule commands
802             "SCHEDULE ALL" => \&schedule_all,
803             "SCHEDULE ALL DISABLED" => \&schedule_all,
804             "SCHEDULE" => \&show_schedule_as_at,
805             "SCHEDULE _DATE" => \&show_schedule_as_at,
806             "EMPLOYEE_SPEC SCHEDULE" => \&show_schedule_as_at,
807             "EMPLOYEE_SPEC SCHEDULE _DATE" => \&show_schedule_as_at,
808             "SCHEDULE _DOW _TIME _DOW1 _TIME1" => \&add_memsched_entry,
809             "SCHEDULE _DOW _TIME _HYPHEN _DOW1 _TIME1" => \&add_memsched_entry,
810             "SCHEDULE _DOW _TIMERANGE" => \&add_memsched_entry,
811             "SCHEDULE ALL _TIMERANGE" => \&replicate_memsched_entry,
812             "SCHEDULE CLEAR" => \&clear_memsched_entries,
813             "SCHEDULE DUMP" => \&dump_memsched_entries,
814             "SCHEDULE FETCH ALL" => \&fetch_all_schedules,
815             "SCHEDULE FETCH ALL DISABLED" => \&fetch_all_schedules,
816             "SCHEDULE MEMORY" => \&dump_memsched_entries,
817             "SCHEDULE NEW" => \&schedule_new,
818             "SCHEDULE SCODE _TERM" => \&assign_memsched_scode,
819             "SCHEDULE_SPEC" => \&schedulespec,
820             "SCHEDULE_SPEC SHOW" => \&schedulespec,
821             "SCHEDULE_SPEC REMARK" => \&schedulespec_remark,
822             "SCHEDULE_SPEC SCODE _TERM" => \&schedulespec_scode,
823             "SCHEDULE_SPEC SET REMARK" => \&schedulespec_remark,
824             "SCHEDULE_SPEC SET SCODE _TERM" => \&schedulespec_scode,
825              
826             };
827              
828              
829              
830             =head1 FUNCTIONS
831              
832             =head2 go_exit
833              
834             Return the "magic" status code that causes dochazka-cli to exit.
835              
836             =cut
837              
838             sub go_exit {
839 0     0 1   return $CELL->status_ok( 'DOCHAZKA_CLI_EXIT', payload => "Dochazka over and out" );
840             }
841              
842             1;