1 package com.jsql.view.swing.panel.address;
2
3 import com.jsql.util.I18nUtil;
4 import com.jsql.util.LogLevelUtil;
5 import com.jsql.view.swing.manager.util.StateButton;
6 import com.jsql.view.swing.panel.PanelAddressBar;
7 import com.jsql.view.swing.util.MediatorHelper;
8 import org.apache.commons.lang3.StringUtils;
9 import org.apache.logging.log4j.LogManager;
10 import org.apache.logging.log4j.Logger;
11
12 import javax.swing.*;
13 import java.awt.event.ActionEvent;
14 import java.awt.event.ActionListener;
15
16 public class ActionStart implements ActionListener {
17
18 private static final Logger LOGGER = LogManager.getRootLogger();
19
20 protected final PanelAddressBar panelAddressBar;
21
22 public ActionStart(PanelAddressBar panelAddressBar) {
23 this.panelAddressBar = panelAddressBar;
24 }
25
26 @Override
27 public void actionPerformed(ActionEvent e) {
28
29 if (this.panelAddressBar.getPanelTrailingAddress().getButtonStart().getState() == StateButton.STARTABLE) {
30 this.startInjection();
31 } else if (this.panelAddressBar.getPanelTrailingAddress().getButtonStart().getState() == StateButton.STOPPABLE) {
32 this.stopInjection();
33 }
34 }
35
36 protected void startInjection() {
37 if (MediatorHelper.model().isScanning()) {
38 LOGGER.log(LogLevelUtil.CONSOLE_ERROR, "Scan already ongoing, either wait or cancel the scan manually");
39 return;
40 }
41 int option = JOptionPane.OK_OPTION;
42 if (MediatorHelper.model().shouldErasePreviousInjection()) {
43
44
45
46 try {
47 option = JOptionPane.showConfirmDialog(
48 MediatorHelper.frame(),
49 I18nUtil.valueByKey("DIALOG_NEW_INJECTION_TEXT"),
50 I18nUtil.valueByKey("DIALOG_NEW_INJECTION_TITLE"),
51 JOptionPane.OK_CANCEL_OPTION
52 );
53 } catch (IllegalArgumentException | ClassCastException e) {
54 LOGGER.log(LogLevelUtil.CONSOLE_JAVA, e, e);
55 }
56 }
57
58 if (option == JOptionPane.OK_OPTION) {
59 this.panelAddressBar.getPanelTrailingAddress().getButtonStart().setToolTipText(I18nUtil.valueByKey("BUTTON_STOP_TOOLTIP"));
60 this.panelAddressBar.getPanelTrailingAddress().getButtonStart().setInjectionRunning();
61 this.panelAddressBar.getPanelTrailingAddress().getLoader().setVisible(true);
62
63 MediatorHelper.frame().resetInterface();
64 var selection = this.panelAddressBar.getPanelTrailingAddress().getGroupRadio().getSelection();
65 String selectionCommand;
66 if (selection != null) {
67 selectionCommand = selection.getActionCommand();
68 } else {
69 selectionCommand = StringUtils.EMPTY;
70 }
71 MediatorHelper.model().getMediatorUtils().parameterUtil().controlInput(
72 selectionCommand,
73 this.panelAddressBar.getTextFieldAddress().getText().trim(),
74 this.panelAddressBar.getTextFieldRequest().getText().trim(),
75 this.panelAddressBar.getTextFieldHeader().getText().trim(),
76 this.panelAddressBar.getMethodInjection(),
77 this.panelAddressBar.getTypeRequest(),
78 false
79 );
80 }
81 }
82
83 private void stopInjection() {
84 this.panelAddressBar.getPanelTrailingAddress().getLoader().setVisible(false);
85 this.panelAddressBar.getPanelTrailingAddress().getButtonStart().setInjectionStopping();
86 MediatorHelper.model().setIsStoppedByUser(true);
87 }
88 }