1
2
3
4
5
6
7
8
9
10
11 package org.mule.example.loanbroker.esn;
12
13 import org.mule.example.loanbroker.AbstractLoanBrokerApp;
14 import org.mule.example.loanbroker.LocaleMessage;
15 import org.mule.example.loanbroker.messages.LoanQuote;
16 import org.mule.util.DateUtils;
17 import org.mule.util.StringMessageUtils;
18 import org.mule.util.StringUtils;
19 import org.mule.util.SystemUtils;
20
21 import java.io.IOException;
22 import java.util.ArrayList;
23 import java.util.Iterator;
24 import java.util.List;
25 import java.util.Map;
26
27
28
29
30 public class LoanBrokerApp extends AbstractLoanBrokerApp
31 {
32 public static final String CLI_OPTIONS[][] = {
33 { "config", "true", "Configuration File(s)" },
34 { "main", "true", "LoanBrokerApp Class"},
35 { "req", "true", "Number of loan requests to use"},
36 { "sync", "true", "Whether to run in synchronous mode or not"}
37 };
38
39 private static boolean synchronous = false;
40
41
42
43 public LoanBrokerApp() throws Exception
44 {
45 super();
46 }
47
48 public LoanBrokerApp(String config) throws Exception
49 {
50 super(config);
51 }
52
53 public static void main(String[] args) throws Exception
54 {
55 LoanBrokerApp loanBrokerApp = null;
56
57
58
59
60 Map<String, Object> options = SystemUtils.getCommandLineOptions(args, CLI_OPTIONS);
61 String config = (String)options.get("config");
62 if (StringUtils.isNotBlank(config))
63 {
64 loanBrokerApp = new LoanBrokerApp(config);
65
66 int i = 100;
67 String requests = (String)options.get("req");
68 if (requests != null)
69 {
70 i = Integer.parseInt(requests);
71 }
72
73 String sync = (String)options.get("sync");
74 if (sync != null)
75 {
76 synchronous = Boolean.valueOf(sync).booleanValue();
77 }
78
79 if (synchronous)
80 {
81 long start = System.currentTimeMillis();
82 List<Object> results = loanBrokerApp.requestSend(i, "CustomerRequests");
83 System.out.println(LocaleMessage.responseNumQuotes(results.size()));
84 List<String> output = new ArrayList<String>(results.size());
85 int x = 1;
86 for (Iterator<Object> iterator = results.iterator(); iterator.hasNext(); x++)
87 {
88 LoanQuote quote = (LoanQuote) iterator.next();
89 output.add(x + ". " + quote.toString());
90 }
91
92 System.out.println(StringMessageUtils.getBoilerPlate(output, '*', 80));
93 long cur = System.currentTimeMillis();
94 System.out.println(DateUtils.getFormattedDuration(cur - start));
95 System.out.println(LocaleMessage.responseAvgRequest(((cur - start) / x)));
96 }
97 else
98 {
99 loanBrokerApp.requestDispatch(i, "CustomerRequests");
100 }
101 }
102
103
104
105 else
106 {
107 loanBrokerApp = new LoanBrokerApp(getInteractiveConfig());
108 loanBrokerApp.run(synchronous);
109 }
110 }
111
112 protected static String getInteractiveConfig() throws IOException
113 {
114 System.out.println(StringMessageUtils.getBoilerPlate(LocaleMessage.welcome()));
115
116 int response = 0;
117 String mode = null;
118 while (response != 'a' && response != 's')
119 {
120 System.out.println("\n" + LocaleMessage.menuOptionMode());
121 response = readCharacter();
122 switch (response)
123 {
124 case 'a' :
125 {
126 System.out.println(LocaleMessage.loadingAsync());
127 mode = "async";
128 break;
129 }
130
131 case 's' :
132 {
133 System.out.println(LocaleMessage.loadingSync());
134 mode = "sync";
135 break;
136 }
137 }
138 }
139
140 String config = "loan-broker-" + mode + "-config.xml, loan-broker-cxf-endpoints-config.xml";
141 return config;
142 }
143 }