View Javadoc
1 /* ====================================================================
2 * License:
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. The end-user documentation included with the redistribution,
17 * if any, must include the following acknowledgment:
18 * "This product includes software developed by
19 * Robert Half International (http://www.rhi.com/)."
20 * Alternately, this acknowledgment may appear in the software itself,
21 * if and wherever such third-party acknowledgments normally appear.
22 *
23 * 4. The names "Parc", "RHI", and "Robert Half International" must
24 * not be used to endorse or promote products derived from this
25 * software without prior written permission. For written
26 * permission, please contact pete.mckinstry@rhi.com.
27 *
28 * 5. Products derived from this software may not be called "PARC",
29 * nor may "PARC" appear in their name, without prior written
30 * permission of Robert Half International.
31 *
32 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
33 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
34 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
35 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
36 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
37 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
38 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
39 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
40 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
41 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
42 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 * SUCH DAMAGE.
44 * ====================================================================
45 *
46 */
47 package com.rhi.architecture.parc;
48
49 import com.rhi.architecture.batch.Application;
50 import com.rhi.architecture.batch.ApplicationException;
51 import com.rhi.architecture.batch.BatchApplication;
52 import com.rhi.architecture.resource.InitializationException;
53
54 import java.util.Properties;
55
56 /***
57 * Pipeline Architecture (PARC) Application. Defers execution
58 * to a strategy that can provide a number of execution methods.
59 * These include Looping, Single Run, etc...
60 *
61 * The only thing that a concrete PARCApplication class
62 * should have to do is setup the pipeline object w/ the
63 * appropriate filter(s) and return it via getPipeline()
64 *
65 * @author Pete McKinstry
66 * @copyright 2002, Robert Half Int'l., Inc. All rights reserved.
67 *
68 * @since 1.0
69 */
70 public class PARCApplication extends BatchApplication {
71
72 /***
73 * logger name to use when outputing performance statistics.
74 */
75 public static final String CYCLE_STATS = "CYCLE_STATS";
76
77 private Process process = null;
78
79 /***
80 * default constructor
81 *
82 * @since 1.0
83 */
84 public PARCApplication() {
85 super();
86 }
87
88 /***
89 * Configure the InterfaceApplication w/ the appropriate
90 * framework implementation classes. (strategy,
91 * inputadapter, outputadapter). Be very selective about
92 * what goes in this method. It is called after some of the
93 * other batch architecture is initialized; specifically,
94 * the super classes, and audit agent. If you re-configure
95 * or add new elements here, those classes will not see
96 * them.
97 *
98 * @exception InitializationException
99 *
100 * @since 1.0.
101 */
102 protected void doInit() throws InitializationException {
103 log().debug("doInit()");
104 try {
105 Properties props = getProperties();
106 String prog_name = props.getProperty(PARCConfiguration.PROG_NAME);
107 if (prog_name == null) {
108 throw new InitializationException(
109 PARCConfiguration.PROG_NAME
110 + " not found in config properties.");
111 }
112 process = new PipelineProcess();
113 process.setName(prog_name);
114 process.init(props);
115 }
116 finally {
117 // empty. in case exception handling is needed later.
118 }
119 }
120
121 /***
122 * Defer execution to strategy.
123 *
124 * @exception ApplicationException
125 *
126 * @since 1.0
127 */
128 public void run() throws ApplicationException {
129 log().debug("PARCApplication.run()");
130 try {
131 process.run();
132 }
133 catch (ProcessingException pe) {
134 log().error("ProcessingException thrown.", pe);
135 throw new ApplicationException(
136 pe.toString(),
137 pe,
138 pe.getExitCode());
139 }
140 }
141
142 /***
143 * Perform any cleanup required before the application exits.
144 *
145 * @since 1.0
146 */
147 protected void doCleanup() {
148 if (process != null) {
149 process.cleanup();
150 }
151 }
152
153 /***
154 * Main() - calls execute in framework classes.
155 *
156 * @param args[] command line arguments.
157 *
158 * @since 1.0
159 */
160 public static void main(String args[]) {
161 int status = Application.SUCCESS;
162 PARCApplication appl = new PARCApplication();
163 try {
164 appl.execute(args);
165 }
166 catch (ApplicationException e) {
167 status = e.getExitCode();
168 }
169 System.exit(status);
170 }
171
172 }
This page was automatically generated by Maven