/** Submit a query to the archive and insert the logs in the main window */ private void submitQuery() { if (!checkFields()) { JOptionPane.showMessageDialog( this, "Error getting values from the form", "Input error!", JOptionPane.ERROR_MESSAGE); return; } loggingClient.reportStatus("Submitting a query"); guiSwitches.execute(); // Clear the logs and disconnect from the NC StringBuilder from = new StringBuilder(fromYY.getText()); from.append('-'); if (fromMM.getText().length() == 1) { from.append('0'); } from.append(fromMM.getText()); from.append('-'); if (fromDD.getText().length() == 1) { from.append('0'); } from.append(fromDD.getText()); from.append('T'); if (fromHr.getText().length() == 1) { from.append('0'); } from.append(fromHr.getText()); from.append(':'); if (fromMin.getText().length() == 1) { from.append('0'); } from.append(fromMin.getText()); from.append(':'); if (fromSec.getText().length() == 1) { from.append('0'); } from.append(fromSec.getText()); StringBuilder to = new StringBuilder(toYY.getText()); to.append('-'); if (toMM.getText().length() == 1) { to.append('0'); } to.append(toMM.getText()); to.append('-'); if (toDD.getText().length() == 1) { to.append('0'); } to.append(toDD.getText()); to.append('T'); if (toHr.getText().length() == 1) { to.append('0'); } to.append(toHr.getText()); to.append(':'); if (toMin.getText().length() == 1) { to.append('0'); } to.append(toMin.getText()); to.append(':'); if (toSec.getText().length() == 1) { to.append('0'); } to.append(toSec.getText()); short minType = (short) LogTypeHelper.values()[minLogLevelCB.getSelectedIndex()].acsCoreLevel.value; short maxType = (short) LogTypeHelper.values()[maxLogLevelCB.getSelectedIndex()].acsCoreLevel.value; String routine = routineName.getText(); if (routine.length() == 0) { routine = "*"; } String source = sourceName.getText(); if (source.length() == 0) { source = "*"; } String process = procName.getText(); if (process.length() == 0) { process = "*"; } int maxRows = Integer.parseInt(rowLimit.getText()); // The collection where the logs read from the DB are stored Collection logs = null; updateStatusLbl("Submitting query"); try { logs = archive.getLogs( from.toString() + ".000", to.toString() + ".000", minType, maxType, routine, source, process, maxRows); } catch (Throwable t) { System.err.println("Error executing the query: " + t.getMessage()); t.printStackTrace(System.err); JOptionPane.showMessageDialog( this, formatErrorMsg("Error executing the query:\n" + t.getMessage()), "Database error!", JOptionPane.ERROR_MESSAGE); loggingClient.reportStatus("Query terminated with error"); } if (logs != null && !logs.isEmpty()) { loggingClient.reportStatus("Num. of logs read from DB: " + logs.size()); LogMatcher matcher = new LogMatcher(); matcher.setAudience(loggingClient.getEngine().getAudience()); matcher.setFilters(loggingClient.getEngine().getFilters()); matcher.setDiscardLevel(loggingClient.getEngine().getDiscardLevel()); Iterator iter = logs.iterator(); int count = 0; while (iter.hasNext() && !terminateThread) { if ((++count) % 1000 == 0) { updateStatusLbl("Flushing logs " + count + "/" + logs.size()); } String str = (String) iter.next(); ILogEntry logEntry = null; try { logEntry = parser.parse(str); } catch (Exception e) { errorListener.errorReceived(str); continue; } if (matcher.match(logEntry)) { logListener.logEntryReceived(logEntry); } } logs.clear(); logs = null; } updateStatusLbl(""); // Update the state of the switches guiSwitches.checkControlsState(); }
/** Build the GUI */ private void initGUI() { // The actual time/date used to fill the time fields Calendar calendar = Calendar.getInstance(); guiSwitches = new LoadSwitchesPanel(loggingClient); JRootPane mainPnl = this.getRootPane(); mainPnl.setLayout(new BorderLayout()); // The panel with the option of the query JPanel optionsPnl = new JPanel(); GridBagLayout prefsLayout = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); optionsPnl.setLayout(prefsLayout); // Add all the labels JLabel maxLogs = new JLabel("Max num of logs to load:"); c.gridx = 0; c.gridy = 0; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(10, 5, 5, 5); optionsPnl.add(maxLogs, c); JLabel fromLbl = new JLabel("From:"); c.gridx = 0; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(fromLbl, c); JLabel toLbl = new JLabel("To:"); c.gridx = 0; c.gridy = 2; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(toLbl, c); JLabel routinNameLbl = new JLabel("Routine name:"); c.gridx = 0; c.gridy = 3; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(routinNameLbl, c); JLabel procNameLbl = new JLabel("Process name:"); c.gridx = 0; c.gridy = 4; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(procNameLbl, c); JLabel srcNameLbl = new JLabel("Source object:"); c.gridx = 0; c.gridy = 5; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(srcNameLbl, c); JLabel minLogType = new JLabel("From type:"); c.gridx = 0; c.gridy = 6; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(minLogType, c); JLabel maxLogType = new JLabel("To type:"); c.gridx = 0; c.gridy = 7; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 10, 5); optionsPnl.add(maxLogType, c); // Add the input widgets fromYY = new JTextField(Integer.toString(calendar.get(Calendar.YEAR)), 4); c.gridx = 1; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 5, 0); optionsPnl.add(fromYY, c); JLabel separatorF1 = new JLabel("-"); c.gridx = 2; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 0, 5, 0); optionsPnl.add(separatorF1, c); fromMM = new JTextField(Integer.toString(calendar.get(Calendar.MONTH) + 1), 2); c.gridx = 3; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(fromMM, c); JLabel separatorF2 = new JLabel("-"); c.gridx = 4; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(separatorF2, c); fromDD = new JTextField(Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)), 2); c.gridx = 5; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(fromDD, c); JLabel tlbl = new JLabel("T"); c.gridx = 6; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(tlbl, c); fromHr = new JTextField(Integer.toString(calendar.get(Calendar.HOUR_OF_DAY)), 2); c.gridx = 7; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(fromHr, c); JLabel comaF1Lbl = new JLabel(":"); c.gridx = 8; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(comaF1Lbl, c); fromMin = new JTextField(Integer.toString(calendar.get(Calendar.MINUTE)), 2); c.gridx = 9; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(fromMin, c); JLabel comaF2Lbl = new JLabel(":"); c.gridx = 10; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(comaF2Lbl, c); fromSec = new JTextField(Integer.toString(calendar.get(Calendar.SECOND)), 2); c.gridx = 11; c.gridy = 1; c.anchor = GridBagConstraints.LAST_LINE_START; c.gridwidth = GridBagConstraints.REMAINDER; optionsPnl.add(fromSec, c); toYY = new JTextField(Integer.toString(calendar.get(Calendar.YEAR)), 4); c.gridx = 1; c.gridy = 2; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 5, 5, 0); optionsPnl.add(toYY, c); JLabel separatorTo1 = new JLabel("-"); c.gridx = 2; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; c.insets = new Insets(5, 0, 5, 0); optionsPnl.add(separatorTo1, c); toMM = new JTextField(Integer.toString(calendar.get(Calendar.MONTH) + 1), 2); c.gridx = 3; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(toMM, c); JLabel separatorTo2 = new JLabel("-"); c.gridx = 4; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(separatorTo2, c); toDD = new JTextField(Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)), 2); c.gridx = 5; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(toDD, c); JLabel t2lbl = new JLabel("T"); c.gridx = 6; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(t2lbl, c); toHr = new JTextField(Integer.toString(calendar.get(Calendar.HOUR_OF_DAY)), 2); c.gridx = 7; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(toHr, c); JLabel comaTo1Lbl = new JLabel(":"); c.gridx = 8; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(comaTo1Lbl, c); toMin = new JTextField(Integer.toString(calendar.get(Calendar.MINUTE)), 2); c.gridx = 9; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(toMin, c); JLabel comaTo2Lbl = new JLabel(":"); c.gridx = 10; c.gridy = 2; c.gridwidth = GridBagConstraints.RELATIVE; c.anchor = GridBagConstraints.LAST_LINE_START; optionsPnl.add(comaTo2Lbl, c); toSec = new JTextField(Integer.toString(calendar.get(Calendar.SECOND)), 2); c.gridx = 11; c.gridy = 2; c.anchor = GridBagConstraints.LAST_LINE_START; c.gridwidth = GridBagConstraints.REMAINDER; optionsPnl.add(toSec, c); rowLimit = new JTextField("10000", 20); c.gridx = 1; c.gridy = 0; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(10, 5, 5, 5); optionsPnl.add(rowLimit, c); routineName = new JTextField("*", 20); c.gridx = 1; c.gridy = 3; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(routineName, c); procName = new JTextField("*", 20); c.gridx = 1; c.gridy = 4; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(procName, c); sourceName = new JTextField("*", 20); c.gridx = 1; c.gridy = 5; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(sourceName, c); minLogLevelCB = setupTypeCB(minLogLevelCB); minLogLevelCB.setSelectedIndex(LogTypeHelper.INFO.ordinal()); c.gridx = 1; c.gridy = 6; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(5, 5, 5, 5); optionsPnl.add(minLogLevelCB, c); maxLogLevelCB = setupTypeCB(maxLogLevelCB); maxLogLevelCB.setSelectedIndex(LogTypeHelper.EMERGENCY.ordinal()); c.gridx = 1; c.gridy = 7; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(5, 5, 10, 5); optionsPnl.add(maxLogLevelCB, c); // Add the OK, CANCEL buttons JPanel bottomPanel = new JPanel(new BorderLayout()); JPanel btnPnl = new JPanel(); btnPnl.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); BoxLayout boxLayout = new BoxLayout(btnPnl, BoxLayout.LINE_AXIS); btnPnl.setLayout(boxLayout); btnPnl.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10)); submitBtn = new JButton("Submit"); submitBtn.addActionListener(this); submitBtn.setEnabled(archive.getDBStatus() == DBState.DATABASE_OK); doneBtn = new JButton("Cancel"); doneBtn.addActionListener(this); btnPnl.add(submitBtn, BorderLayout.WEST); btnPnl.add(Box.createRigidArea(new Dimension(10, 0))); btnPnl.add(doneBtn, BorderLayout.EAST); btnPnl.add(Box.createRigidArea(new Dimension(10, 0))); // Set the border and a smaller font for the label statusLbl.setBorder(BorderFactory.createLoweredBevelBorder()); Font fnt = statusLbl.getFont(); Font newFont = fnt.deriveFont(fnt.getSize() * 2 / 3); statusLbl.setFont(newFont); bottomPanel.add(btnPnl, BorderLayout.EAST); bottomPanel.add(statusLbl, BorderLayout.CENTER); // Add the subpanels mainPnl.add(guiSwitches, BorderLayout.NORTH); mainPnl.add(optionsPnl, BorderLayout.CENTER); mainPnl.add(bottomPanel, BorderLayout.SOUTH); }