1 /***
2 * Redistribution and use of this software and associated documentation
3 * ("Software"), with or without modification, are permitted provided
4 * that the following conditions are met:
5 *
6 * 1. Redistributions of source code must retain copyright
7 * statements and notices. Redistributions must also contain a
8 * copy of this document.
9 *
10 * 2. Redistributions in binary form must reproduce the
11 * above copyright notice, this list of conditions and the
12 * following disclaimer in the documentation and/or other
13 * materials provided with the distribution.
14 *
15 * 3. The name "Exolab" must not be used to endorse or promote
16 * products derived from this Software without prior written
17 * permission of Exoffice Technologies. For written permission,
18 * please contact tma@netspace.net.au.
19 *
20 * 4. Products derived from this Software may not be called "Exolab"
21 * nor may "Exolab" appear in their names without prior written
22 * permission of Exoffice Technologies. Exolab is a registered
23 * trademark of Exoffice Technologies.
24 *
25 * 5. Due credit should be given to the Exolab Project
26 * (http://www.exolab.org/).
27 *
28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39 * OF THE POSSIBILITY OF SUCH DAMAGE.
40 *
41 * Copyright 2003-2004 (C) Exoffice Technologies Inc. All Rights Reserved.
42 *
43 * $Id: Main.java,v 1.2 2004/02/03 21:52:13 tanderson Exp $
44 */
45 package org.exolab.jmscts.tools.send;
46
47 import org.apache.commons.cli.CommandLine;
48 import org.apache.commons.cli.Option;
49 import org.apache.commons.cli.OptionBuilder;
50 import org.apache.commons.cli.Options;
51 import org.apache.commons.cli.ParseException;
52
53 import org.exolab.jmscts.core.DeliveryType;
54 import org.exolab.jmscts.tools.MessagingCommand;
55 import org.exolab.jmscts.tools.MessagingTool;
56
57
58 /***
59 * Invokes the <code>Receive</code> tool
60 *
61 * @version $Revision: 1.2 $ $Date: 2004/02/03 21:52:13 $
62 * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a>
63 */
64 public class Main extends MessagingCommand {
65
66 /***
67 * Creates the messaging tool
68 *
69 * @return the messaging tool
70 */
71 protected MessagingTool create() {
72 return new Send();
73 }
74
75 /***
76 * Returns the command line options
77 *
78 * @return the command line options
79 */
80 protected Options getOptions() {
81 Options options = super.getOptions();
82 Option delivery = OptionBuilder.withArgName("mode")
83 .hasArg()
84 .withDescription("the delivery mode. One of PERSISTENT or "
85 + "NON_PERSISTENT. Defaults to PERSISTENT")
86 .create("mode");
87
88 options.addOption(delivery);
89
90 return options;
91 }
92
93 /***
94 * Returns the command usage
95 *
96 * @return the command usage
97 */
98 protected String getUsage() {
99 return "usage: send [-config <path>] [-f <name>] "
100 + "[-mode <mode>] -d <name> -c <number> [-v]";
101 }
102
103 /***
104 * Parse the command line, populating the tool
105 *
106 * @param tool the messaging tool
107 * @param commands the command line
108 * @throws ParseException if the command line cannot be parsed
109 */
110 protected void parse(MessagingTool tool, CommandLine commands)
111 throws ParseException {
112 super.parse(tool, commands);
113
114 Send send = (Send) tool;
115 send.setDeliveryType(getDeliveryType(commands));
116 }
117
118 /***
119 * Parses the delivery type from the command line arguments
120 *
121 * @param commands the command line arguments
122 * @return the parsed delivery type
123 * @throws ParseException if the delivery type is invalid
124 */
125 private static DeliveryType getDeliveryType(CommandLine commands)
126 throws ParseException {
127
128 DeliveryType delivery = null;
129 String mode = commands.getOptionValue("mode", "PERSISTENT");
130 if (mode.equals("PERSISTENT")) {
131 delivery = new DeliveryType(true, true);
132 } else if (mode.equals("NON_PERSISTENT")) {
133 delivery = new DeliveryType(false, true);
134 } else {
135 throw new ParseException("Invalid delivery mode: " + mode);
136 }
137 return delivery;
138 }
139
140 /***
141 * Main line
142 *
143 * @param args command line arguments
144 * @throws Exception for any error
145 */
146 public static void main(String[] args) throws Exception {
147 Main command = new Main();
148 command.invoke(args);
149 }
150
151 }
This page was automatically generated by Maven