diff options
author | Bernard Normier <bernard@zeroc.com> | 2014-10-03 10:33:11 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2014-10-03 10:33:11 -0400 |
commit | aadbf41e6df802b4a638a5ac78d76124b001a015 (patch) | |
tree | 0c355bc30744a0c11c6738707b308151400b1735 /java/src | |
parent | JS ObjectAdapter simplifications (diff) | |
download | ice-aadbf41e6df802b4a638a5ac78d76124b001a015.tar.bz2 ice-aadbf41e6df802b4a638a5ac78d76124b001a015.tar.xz ice-aadbf41e6df802b4a638a5ac78d76124b001a015.zip |
ICE-2400: Added LogFilterDialog to IceGrid Admin and CHANGES entry for ICE-2400
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/IceGridGUI/LiveDeployment/LogFilterDialog.java | 181 | ||||
-rw-r--r-- | java/src/IceGridGUI/LiveDeployment/LogPrefsDialog.java (renamed from java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java) | 6 | ||||
-rw-r--r-- | java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java | 50 | ||||
-rw-r--r-- | java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java | 2 | ||||
-rw-r--r-- | java/src/IceInternal/LoggerAdminI.java | 5 | ||||
-rw-r--r-- | java/src/IceInternal/LoggerAdminLoggerI.java | 2 |
6 files changed, 235 insertions, 11 deletions
diff --git a/java/src/IceGridGUI/LiveDeployment/LogFilterDialog.java b/java/src/IceGridGUI/LiveDeployment/LogFilterDialog.java new file mode 100644 index 00000000000..e75a5e64730 --- /dev/null +++ b/java/src/IceGridGUI/LiveDeployment/LogFilterDialog.java @@ -0,0 +1,181 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +package IceGridGUI.LiveDeployment; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JOptionPane; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.WindowConstants; + +import com.jgoodies.forms.builder.DefaultFormBuilder; +import com.jgoodies.forms.builder.ButtonBarBuilder; +import com.jgoodies.forms.factories.Borders; +import com.jgoodies.forms.layout.CellConstraints; +import com.jgoodies.forms.layout.FormLayout; +import com.jgoodies.forms.util.LayoutStyle; + +class LogFilterDialog extends JDialog +{ + LogFilterDialog(final ShowIceLogDialog dialog) + { + super(dialog, "Ice log filter - IceGrid Admin", true); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + + java.util.Set<Ice.LogMessageType> messageTypeFilterSet = null; + if(dialog.getMessageTypeFilter() != null) + { + messageTypeFilterSet = new java.util.HashSet<>(java.util.Arrays.asList(dialog.getMessageTypeFilter())); + } + + final JCheckBox error = new JCheckBox("Error", + messageTypeFilterSet == null || messageTypeFilterSet.contains(Ice.LogMessageType.ErrorMessage)); + final JCheckBox warning = new JCheckBox("Warning", + messageTypeFilterSet == null || messageTypeFilterSet.contains(Ice.LogMessageType.WarningMessage)); + final JCheckBox print = new JCheckBox("Print", + messageTypeFilterSet == null || messageTypeFilterSet.contains(Ice.LogMessageType.PrintMessage)); + final JCheckBox trace = new JCheckBox("Trace", + messageTypeFilterSet == null || messageTypeFilterSet.contains(Ice.LogMessageType.TraceMessage)); + + final JTextArea traceCategories = new JTextArea(3, 40); + traceCategories.setLineWrap(true); + + String[] traceCategoryFilter = dialog.getTraceCategoryFilter(); + if(traceCategoryFilter != null) + { + // TODO: join with escapes! + traceCategories.setText(IceUtilInternal.StringUtil.joinString(java.util.Arrays.asList(traceCategoryFilter), ", ")); + } + else + { + traceCategories.setText(null); + } + + traceCategories.setToolTipText("Trace categories separated by commas; leave blank to get all categories"); + + JButton okButton = new JButton("OK"); + ActionListener okListener = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + String[] traceCategoryFilter = null; + + String txt = traceCategories.getText(); + if(txt != null && !txt.isEmpty()) + { + traceCategoryFilter = IceUtilInternal.StringUtil.splitString(txt, ", \t\r\n"); + if(traceCategoryFilter == null) + { + // unmatched quote + JOptionPane.showMessageDialog(LogFilterDialog.this, "Unmatched quote in Trace categories field", + "Invalid entry", JOptionPane.ERROR_MESSAGE); + return; + } + + if(traceCategoryFilter.length == 0) // only separators + { + traceCategoryFilter = null; + } + } + + java.util.Set<Ice.LogMessageType> messageTypeFilterSet = new java.util.HashSet<>(); + if(error.isSelected()) + { + messageTypeFilterSet.add(Ice.LogMessageType.ErrorMessage); + } + if(warning.isSelected()) + { + messageTypeFilterSet.add(Ice.LogMessageType.WarningMessage); + } + if(print.isSelected()) + { + messageTypeFilterSet.add(Ice.LogMessageType.PrintMessage); + } + if(trace.isSelected()) + { + messageTypeFilterSet.add(Ice.LogMessageType.TraceMessage); + } + if(messageTypeFilterSet.size() == 0 || messageTypeFilterSet.size() == 4) + { + // All or nothing checked equivalent of getting everything! + messageTypeFilterSet = null; + } + Ice.LogMessageType[] messageTypeFilter = null; + if(messageTypeFilterSet != null) + { + messageTypeFilter = messageTypeFilterSet.toArray(new Ice.LogMessageType[0]); + } + + dispose(); + dialog.setFilters(messageTypeFilter, traceCategoryFilter); + } + }; + okButton.addActionListener(okListener); + getRootPane().setDefaultButton(okButton); + + JButton cancelButton = new JButton("Cancel"); + ActionListener cancelListener = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + dispose(); + } + }; + cancelButton.addActionListener(cancelListener); + + FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", ""); + DefaultFormBuilder builder = new DefaultFormBuilder(layout); + builder.border(Borders.DIALOG); + builder.rowGroupingEnabled(true); + builder.lineGapSize(LayoutStyle.getCurrent().getLinePad()); + + builder.appendSeparator("Retrieve only the following types of log messages (server-side filtering)"); + builder.nextLine(); + builder.append(error); + builder.nextLine(); + builder.append(warning); + builder.nextLine(); + builder.append(print); + builder.nextLine(); + builder.append(trace); + builder.nextLine(); + builder.append("Trace categories"); + builder.nextLine(); + builder.append(""); + builder.nextRow(-2); + CellConstraints cc = new CellConstraints(); + JScrollPane scrollPane = new JScrollPane(traceCategories); + builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 1, 3)); + builder.nextRow(2); + builder.nextLine(); + + JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build(); + buttonBar.setBorder(Borders.DIALOG); + + java.awt.Container contentPane = getContentPane(); + contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); + contentPane.add(builder.getPanel()); + contentPane.add(buttonBar); + + pack(); + setResizable(false); + setLocationRelativeTo(dialog); + setVisible(true); + } +} diff --git a/java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java b/java/src/IceGridGUI/LiveDeployment/LogPrefsDialog.java index c9d197ddf5b..d6068df89de 100644 --- a/java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java +++ b/java/src/IceGridGUI/LiveDeployment/LogPrefsDialog.java @@ -26,9 +26,9 @@ import com.jgoodies.forms.factories.Borders; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.util.LayoutStyle; -class ShowPrefsDialog extends JDialog +class LogPrefsDialog extends JDialog { - ShowPrefsDialog(final ShowLogFileDialog dialog) + LogPrefsDialog(final ShowLogFileDialog dialog) { super(dialog, "Preferences - IceGrid Admin", true); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); @@ -121,7 +121,7 @@ class ShowPrefsDialog extends JDialog setVisible(true); } - ShowPrefsDialog(final ShowIceLogDialog dialog) + LogPrefsDialog(final ShowIceLogDialog dialog) { super(dialog, "Preferences - IceGrid Admin", true); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); diff --git a/java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java b/java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java index d496d1f629a..6e11695bf60 100644 --- a/java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java +++ b/java/src/IceGridGUI/LiveDeployment/ShowIceLogDialog.java @@ -217,7 +217,16 @@ class ShowIceLogDialog extends JDialog @Override public void actionPerformed(ActionEvent e) { - new ShowPrefsDialog(ShowIceLogDialog.this); + new LogPrefsDialog(ShowIceLogDialog.this); + } + }); + editMenu.addSeparator(); + editMenu.add(new AbstractAction("Filter...") + { + @Override + public void actionPerformed(ActionEvent e) + { + new LogFilterDialog(ShowIceLogDialog.this); } }); } @@ -617,6 +626,8 @@ class ShowIceLogDialog extends JDialog _parent.getRoot().addShowIceLogDialog(_title, this); + setVisible(true); + play(); } @@ -633,7 +644,14 @@ class ShowIceLogDialog extends JDialog if(_remoteLogger == null) { _tableModel.setRowCount(0); - setVisible(true); + if(_messageTypeFilter != null || _traceCategoryFilter != null) + { + setTitle(_title + " (Filtered) - IceGrid Admin"); + } + else + { + setTitle(_title + " (No filter) - IceGrid Admin"); + } _playItem.setSelected(true); _playButton.setSelected(true); @@ -686,7 +704,7 @@ class ShowIceLogDialog extends JDialog try { - _loggerAdmin.begin_attachRemoteLogger(_remoteLoggerPrx, null, null, _initialMessages, cb); + _loggerAdmin.begin_attachRemoteLogger(_remoteLoggerPrx, _messageTypeFilter, _traceCategoryFilter, _initialMessages, cb); } catch(LocalException ex) { @@ -780,6 +798,29 @@ class ShowIceLogDialog extends JDialog _parent.getRoot().setLogPrefs(_maxMessages, _initialMessages); } + + LogMessageType[] getMessageTypeFilter() + { + return _messageTypeFilter; + } + + String[] getTraceCategoryFilter() + { + return _traceCategoryFilter; + } + + void setFilters(LogMessageType[] messageTypeFilter, String[] traceCategoryFilter) + { + _messageTypeFilter = messageTypeFilter; + _traceCategoryFilter = traceCategoryFilter; + + if(_remoteLogger != null) + { + stop(); + play(); + } + // otherwise, leave it in stopped mode + } void stop() { @@ -820,6 +861,9 @@ class ShowIceLogDialog extends JDialog private int _maxMessages; private int _initialMessages; + + private LogMessageType[] _messageTypeFilter; + private String[] _traceCategoryFilter; private Action _play; private Action _pause; diff --git a/java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java b/java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java index 4ac60aa8814..fb256b326bd 100644 --- a/java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java +++ b/java/src/IceGridGUI/LiveDeployment/ShowLogFileDialog.java @@ -518,7 +518,7 @@ class ShowLogFileDialog extends JDialog @Override public void actionPerformed(ActionEvent e) { - new ShowPrefsDialog(ShowLogFileDialog.this); + new LogPrefsDialog(ShowLogFileDialog.this); } }); } diff --git a/java/src/IceInternal/LoggerAdminI.java b/java/src/IceInternal/LoggerAdminI.java index 1d4b1b5e68c..723584bdcd4 100644 --- a/java/src/IceInternal/LoggerAdminI.java +++ b/java/src/IceInternal/LoggerAdminI.java @@ -11,7 +11,6 @@ package IceInternal; final class LoggerAdminI extends Ice._LoggerAdminDisp { - @Override public void attachRemoteLogger(Ice.RemoteLoggerPrx prx, Ice.LogMessageType[] messageTypes, String[] categories, int messageMax, Ice.Current current) @@ -432,7 +431,7 @@ final class LoggerAdminI extends Ice._LoggerAdminDisp private int _oldestTrace = -1; private int _oldestLog = -1; - private class Filters + private static class Filters { Filters(Ice.LogMessageType[] m, String[] c) { @@ -444,7 +443,7 @@ final class LoggerAdminI extends Ice._LoggerAdminDisp final java.util.Set<String> traceCategories; } - private class RemoteLoggerData + private static class RemoteLoggerData { RemoteLoggerData(Ice.RemoteLoggerPrx prx, Filters f) { diff --git a/java/src/IceInternal/LoggerAdminLoggerI.java b/java/src/IceInternal/LoggerAdminLoggerI.java index 0f8e08fa959..868ef0d46ec 100644 --- a/java/src/IceInternal/LoggerAdminLoggerI.java +++ b/java/src/IceInternal/LoggerAdminLoggerI.java @@ -231,7 +231,7 @@ final class LoggerAdminLoggerI implements LoggerAdminLogger, Runnable return java.util.Calendar.getInstance().getTimeInMillis() * 1000; } - private class Job + private static class Job { Job(java.util.List<Ice.RemoteLoggerPrx> r, Ice.LogMessage l) { |