Source code: org/activemq/sampler/config/gui/ProducerSysTestConfigGui.java
1 /**
2 *
3 * Copyright 2004 Protique Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18 package org.activemq.sampler.config.gui;
19
20 import org.apache.jmeter.config.ConfigTestElement;
21 import org.apache.jmeter.config.gui.AbstractConfigGui;
22 import org.apache.jmeter.gui.util.VerticalPanel;
23 import org.apache.jmeter.testelement.TestElement;
24 import org.apache.jmeter.util.JMeterUtils;
25 import org.apache.jorphan.util.JOrphanUtils;
26 import org.activemq.sampler.Producer;
27 import org.activemq.sampler.ProducerSysTest;
28
29 import javax.swing.JTextField;
30 import javax.swing.JComboBox;
31 import javax.swing.JRadioButton;
32 import javax.swing.JPanel;
33 import javax.swing.JLabel;
34
35 import java.awt.BorderLayout;
36 import java.awt.FlowLayout;
37 import java.awt.event.ActionEvent;
38 import java.awt.event.ActionListener;
39
40 /**
41 * Producer configuration gui bean.
42 */
43 public class ProducerSysTestConfigGui extends AbstractConfigGui {
44
45 private static final String URL = "url";
46 private static final String DURABLE = "durable";
47 private static final String NONDURABLE = "nondurable";
48 private static final String TOPIC = "topic";
49 private static final String QUEUE = "queue";
50 private static final String NOPRODUCER = "noproducer";
51 private static final String NOSUBJECT = "nosubject";
52 private static final String PRODUCER_SYS_TEST_CONFIG_TITLE = "producer_sys_test_config_title";
53 private static final String NOMESSAGES = "nomessages";
54
55
56 private JTextField setURL;
57 private JTextField setNoProducer;
58 private JTextField setNoSubject;
59 private JRadioButton setDurable;
60 private JRadioButton setNonDurable;
61 private JRadioButton setTopic;
62 private JRadioButton setQueue;
63 private JTextField setNoMessages;
64
65 private boolean displayName = true;
66
67 /**
68 * Default constructor.
69 */
70 public ProducerSysTestConfigGui() {
71 this(true);
72 }
73
74 /**
75 * Constructor.
76 *
77 * @param displayName - whether to display the name of the producer.
78 */
79 public ProducerSysTestConfigGui(boolean displayName) {
80 this.displayName = displayName;
81 init();
82 }
83
84 /**
85 * Returns the producer configuration title.
86 *
87 * @return producer configuration title
88 */
89 public String getLabelResource() {
90 return PRODUCER_SYS_TEST_CONFIG_TITLE;
91 }
92
93 /**
94 * Configures the ProducerConfigGui bean.
95 *
96 * @param element - producer sampler properties.
97 */
98 public void configure(TestElement element) {
99 super.configure(element);
100
101 setURL.setText(element.getPropertyAsString(ProducerSysTest.URL));
102 //setDuration.setText(element.getPropertyAsString(ProducerSysTest.DURATION));
103 //setRampUp.setText(element.getPropertyAsString(ProducerSysTest.RAMP_UP));
104
105 if (element.getProperty(ProducerSysTest.DURABLE) == null) {
106 setDurable.setSelected(true);
107 setNonDurable.setSelected(false);
108 } else {
109 if (element.getPropertyAsBoolean(ProducerSysTest.DURABLE)) {
110 setDurable.setSelected(true);
111 setNonDurable.setSelected(false);
112 } else {
113 setDurable.setSelected(false);
114 setNonDurable.setSelected(true);
115 }
116 }
117
118 if (element.getProperty(ProducerSysTest.TOPIC) == null) {
119 setTopic.setSelected(true);
120 setQueue.setSelected(false);
121 } else {
122 if (element.getPropertyAsBoolean(ProducerSysTest.TOPIC)) {
123 setTopic.setSelected(true);
124 setQueue.setSelected(false);
125 } else {
126 setTopic.setSelected(false);
127 setQueue.setSelected(true);
128 }
129 }
130
131 //setMsgSize.setText(element.getPropertyAsString(ProducerSysTest.MSGSIZE));
132 setNoProducer.setText(element.getPropertyAsString(ProducerSysTest.NOPRODUCER));
133 setNoSubject.setText(element.getPropertyAsString(ProducerSysTest.NOSUBJECT));
134 //setMsgSize.setText(element.getPropertyAsString(ProducerSysTest.MSGSIZE));
135 setNoMessages.setText(element.getPropertyAsString(ProducerSysTest.NOMESSAGES));
136
137 /*
138 if (element.getProperty(ProducerSysTest.DEFMSGINTERVAL) == null) {
139 setDefMsgInterval.setSelected(true);
140 setCusMsgInterval.setSelected(false);
141 setMsgInterval.setEnabled(false);
142 } else {
143 if (element.getPropertyAsBoolean(ProducerSysTest.DEFMSGINTERVAL)) {
144 setDefMsgInterval.setSelected(true);
145 setCusMsgInterval.setSelected(false);
146 setMsgInterval.setEnabled(false);
147 } else {
148 setDefMsgInterval.setSelected(false);
149 setCusMsgInterval.setSelected(true);
150 setMsgInterval.setEnabled(true);
151 setMsgInterval.setText(element.getPropertyAsString(ProducerSysTest.MSGINTERVAL));
152 }
153 }
154 */
155 /*
156 setMQServer.setSelectedItem(element.getPropertyAsString(ProducerSysTest.MQSERVER));
157
158
159 if (element.getProperty(ProducerSysTest.TRANSACTED) == null) {
160 setTransacted.setSelected(false);
161 setNonTransacted.setSelected(true);
162 setBatchSize.setEnabled(false);
163 } else {
164 if (element.getPropertyAsBoolean(ProducerSysTest.TRANSACTED)) {
165 setTransacted.setSelected(true);
166 setNonTransacted.setSelected(false);
167 setBatchSize.setEnabled(true);
168 setBatchSize.setText(element.getPropertyAsString(ProducerSysTest.BATCHSIZE));
169 } else {
170 setTransacted.setSelected(false);
171 setNonTransacted.setSelected(true);
172 setBatchSize.setEnabled(false);
173 setBatchSize.setText("");
174 }
175 }
176 */
177
178 }
179
180 /**
181 * Creates a test element.
182 *
183 * @return element
184 */
185 public TestElement createTestElement() {
186 ConfigTestElement element = new ConfigTestElement();
187 modifyTestElement(element);
188
189 return element;
190 }
191
192 /**
193 * Sets the producer sampler properties to the test element.
194 *
195 * @param element
196 */
197 public void modifyTestElement(TestElement element) {
198 configureTestElement(element);
199
200 element.setProperty(ProducerSysTest.URL, setURL.getText());
201 //element.setProperty(ProducerSysTest.DURATION, setDuration.getText());
202 //element.setProperty(ProducerSysTest.RAMP_UP, setRampUp.getText());
203 element.setProperty(ProducerSysTest.DURABLE, JOrphanUtils.booleanToString(setDurable.isSelected()));
204 element.setProperty(ProducerSysTest.TOPIC, JOrphanUtils.booleanToString(setTopic.isSelected()));
205 //element.setProperty(ProducerSysTest.MSGSIZE, setMsgSize.getText());
206 element.setProperty(ProducerSysTest.NOPRODUCER, setNoProducer.getText());
207 element.setProperty(ProducerSysTest.NOSUBJECT, setNoSubject.getText());
208 element.setProperty(ProducerSysTest.NOMESSAGES, setNoMessages.getText());
209 //element.setProperty(ProducerSysTest.DEFMSGINTERVAL, JOrphanUtils.booleanToString(setDefMsgInterval.isSelected()));
210 //element.setProperty(ProducerSysTest.MSGINTERVAL, setMsgInterval.getText());
211 //element.setProperty(ProducerSysTest.MQSERVER, setMQServer.getSelectedItem().toString());
212 //element.setProperty(ProducerSysTest.TRANSACTED, JOrphanUtils.booleanToString(setTransacted.isSelected()));
213 //element.setProperty(ProducerSysTest.BATCHSIZE, setBatchSize.getText());
214 }
215
216 /**
217 * Creates the URL panel.
218 *
219 * @return urlPanel
220 */
221 private JPanel createURLPanel() {
222 JLabel label = new JLabel(JMeterUtils.getResString("form_url"));
223 setURL = new JTextField(10);
224 setURL.setName(URL);
225 label.setLabelFor(setURL);
226
227 JPanel urlPanel = new JPanel(new BorderLayout(5, 0));
228 urlPanel.add(label, BorderLayout.WEST);
229 urlPanel.add(setURL, BorderLayout.CENTER);
230
231 return urlPanel;
232 }
233
234 /**
235 * Creates the durable panel.
236 *
237 * @return durablePanel
238 */
239 private JPanel createDurablePanel() {
240 JLabel labelDeliveryMode = new JLabel(JMeterUtils.getResString("form_delivery_mode"));
241
242 JLabel labelDurable = new JLabel(JMeterUtils.getResString("form_persistent"));
243 setDurable = new JRadioButton();
244 setDurable.setName(DURABLE);
245 labelDurable.setLabelFor(setDurable);
246 setDurable.setActionCommand(DURABLE);
247 setDurable.addActionListener(new ActionListener() {
248 public void actionPerformed(ActionEvent evt) {
249 jRadioButtonActionPerformedDelivery(evt);
250 }
251 });
252 setDurable.setSelected(false);
253
254 JLabel labelNonDurable = new JLabel(JMeterUtils.getResString("form_non_persistent"));
255 setNonDurable = new JRadioButton();
256 setNonDurable.setName(NONDURABLE);
257 labelNonDurable.setLabelFor(setNonDurable);
258 setNonDurable.setActionCommand(NONDURABLE);
259 setNonDurable.addActionListener(new ActionListener() {
260 public void actionPerformed(ActionEvent evt) {
261 jRadioButtonActionPerformedDelivery(evt);
262 }
263 });
264 setNonDurable.setSelected(true);
265
266 FlowLayout flow = new FlowLayout(FlowLayout.LEFT);
267 flow.setHgap(0);
268 flow.setVgap(0);
269
270 JPanel durablePanel = new JPanel(flow);
271 durablePanel.add(labelDeliveryMode);
272 durablePanel.add(new JLabel(" "));
273 durablePanel.add(setDurable);
274 durablePanel.add(labelDurable);
275 durablePanel.add(new JLabel(" "));
276 durablePanel.add(setNonDurable);
277 durablePanel.add(labelNonDurable);
278
279 return durablePanel;
280 }
281
282 /**
283 * Creates the topic panel.
284 *
285 * @return topicPanel
286 */
287 private JPanel createTopicPanel() {
288 JLabel labelMessagingDomain = new JLabel(JMeterUtils.getResString("messaging_domain"));
289
290 JLabel labelTopic = new JLabel(JMeterUtils.getResString("form_topic"));
291 setTopic = new JRadioButton();
292 setTopic.setName(TOPIC);
293 labelTopic.setLabelFor(setTopic);
294 setTopic.setActionCommand(TOPIC);
295 setTopic.addActionListener(new ActionListener() {
296 public void actionPerformed(ActionEvent evt) {
297 jRadioButtonActionPerformed(evt);
298 }
299 });
300 setTopic.setSelected(true);
301
302 JLabel labelQueue = new JLabel(JMeterUtils.getResString("form_queue"));
303 setQueue = new JRadioButton();
304 setQueue.setName(QUEUE);
305 labelQueue.setLabelFor(setQueue);
306 setQueue.setActionCommand(QUEUE);
307 setQueue.addActionListener(new ActionListener() {
308 public void actionPerformed(ActionEvent evt) {
309 jRadioButtonActionPerformed(evt);
310 }
311 });
312 setQueue.setSelected(false);
313
314 FlowLayout flow = new FlowLayout(FlowLayout.LEFT);
315 flow.setHgap(0);
316 flow.setVgap(0);
317
318 JPanel topicPanel = new JPanel(flow);
319 topicPanel.add(labelMessagingDomain);
320 topicPanel.add(new JLabel(" "));
321 topicPanel.add(setTopic);
322 topicPanel.add(labelTopic);
323 topicPanel.add(new JLabel(" "));
324 topicPanel.add(setQueue);
325 topicPanel.add(labelQueue);
326
327 return topicPanel;
328 }
329
330 /**
331 * Creates the no prod panel.
332 *
333 * @return noProdPanel
334 */
335 private JPanel createNoProducerPanel() {
336 JLabel label = new JLabel(JMeterUtils.getResString("form_no_producer"));
337 setNoProducer = new JTextField(10);
338 setNoProducer.setName(NOPRODUCER);
339 label.setLabelFor(setNoProducer);
340
341 JPanel noProdPanel = new JPanel(new BorderLayout(5, 0));
342 noProdPanel.add(label, BorderLayout.WEST);
343 noProdPanel.add(setNoProducer, BorderLayout.CENTER);
344
345 return noProdPanel;
346 }
347
348 /**
349 * Creates the number subject panel.
350 *
351 * @return noSubjectPanel
352 */
353 private JPanel createNoSubjectPanel() {
354 JLabel label = new JLabel(JMeterUtils.getResString("form_no_subject"));
355 setNoSubject = new JTextField(10);
356 setNoSubject.setName(NOSUBJECT);
357 label.setLabelFor(setNoSubject);
358
359 JPanel noSubjectPanel = new JPanel(new BorderLayout(5, 0));
360 noSubjectPanel.add(label, BorderLayout.WEST);
361 noSubjectPanel.add(setNoSubject, BorderLayout.CENTER);
362
363 return noSubjectPanel;
364 }
365
366 /**
367 * Creates the number of messages panel.
368 *
369 * @return noMessagesPanel
370 */
371 private JPanel createNoMessagesPanel() {
372 JLabel label = new JLabel(JMeterUtils.getResString("form_no_messages"));
373 setNoMessages = new JTextField(10);
374 setNoMessages.setName(NOMESSAGES);
375 label.setLabelFor(setNoMessages);
376
377 JPanel noMessagesPanel = new JPanel(new BorderLayout(5, 0));
378 noMessagesPanel.add(label, BorderLayout.WEST);
379 noMessagesPanel.add(setNoMessages, BorderLayout.CENTER);
380
381 return noMessagesPanel;
382 }
383
384 /**
385 * Initializes the gui components.
386 */
387 private void init() {
388 setLayout(new BorderLayout(0, 5));
389
390 if (displayName) {
391 setBorder(makeBorder());
392 add(makeTitlePanel(), BorderLayout.NORTH);
393 }
394
395 VerticalPanel mainPanel = new VerticalPanel();
396
397 mainPanel.add(createURLPanel());
398 //mainPanel.add(createDurationPanel());
399 //mainPanel.add(createRampUpPanel());
400 mainPanel.add(createNoProducerPanel());
401 mainPanel.add(createNoSubjectPanel());
402 mainPanel.add(createNoMessagesPanel());
403 //mainPanel.add(createMsgSizePanel());
404 mainPanel.add(createDurablePanel());
405 mainPanel.add(createTopicPanel());
406 //mainPanel.add(createTransactedPanel());
407 //mainPanel.add(createDefMsgIntervalPanel());
408 //mainPanel.add(createMQServerPanel());
409
410 add(mainPanel, BorderLayout.CENTER);
411 }
412
413 /**
414 * Listener action for selecting Messaging Domain.
415 *
416 * @param evt - event triggered.
417 */
418 private void jRadioButtonActionPerformed(ActionEvent evt) {
419 String evtActionCommand = evt.getActionCommand();
420
421 if (evtActionCommand.equals(TOPIC)) {
422 setTopic.setSelected(true);
423 setQueue.setSelected(false);
424 } else if (evtActionCommand.equals(QUEUE)) {
425 setTopic.setSelected(false);
426 setQueue.setSelected(true);
427 }
428 }
429
430 /**
431 * Listener action for selecting Delivery Mode.
432 *
433 * @param evt - event triggered.
434 */
435 private void jRadioButtonActionPerformedDelivery(ActionEvent evt) {
436 String evtActionCommand = evt.getActionCommand();
437
438 if (evtActionCommand.equals(DURABLE)) {
439 setDurable.setSelected(true);
440 setNonDurable.setSelected(false);
441 } else if (evtActionCommand.equals(NONDURABLE)) {
442 setDurable.setSelected(false);
443 setNonDurable.setSelected(true);
444 }
445 }
446
447 }