/** */
/**
* Created on Jan 22, 2007
*/
package com.jinfonet.loganalyzer.ui.viewers;
import guitools.swing.component.customsplit.CustomSplitPane;
import guitools.swing.component.menu.StatusChangeListener;
import guitools.swing.dialog.JCommonFrame;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JViewport;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.jinfonet.loganalyzer.logAnalyzeTool.manager.DataBaseManager;
import com.jinfonet.loganalyzer.logAnalyzeTool.util.PerformanceMessageInfo;
import com.jinfonet.designer.util.JDesgResource;
import com.jinfonet.loganalyzer.db.DBConnection;
/** */ /**
* @author gengwei.zheng
*/
public class LogAnalyzerFrame extends JCommonFrame implements StatusChangeListener
... {
/** *//**
* serialVersionUID = 8903980581711306310L
*/
private static final long serialVersionUID = 8903980581711306310L;
private static String DEFAULT_TITLE = JDesgResource.getMessage("LA_DEFAULT_TITLE");
private static LogAnalyzerFrame logAnalyzerFrame;
private ParseLogAnalyzerMenu logAnalyzerMenu;
private LogAnalyzerToolBar toolBar;
private LogAnalyzerStatusBar statusBar;
private LogAnalyzerFrameListener listener;
private DBConnection db = DBConnection.getDatabase();
private DataTable currentPageDatatable;
private JTabbedPane dataPane;
private JComboBox columnCbBox;
private JList detailViewList;
private JButton searchBtn;
private JTextField searchField;
public LogAnalyzerFrame()
...{
this(DEFAULT_TITLE);
}
public LogAnalyzerFrame(String title)
...{
super(title);
setIconImage(JDesgResource.getIcon("logo").getImage());
init();
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
addWindowListener(
new WindowAdapter()
...{
public void windowClosing(WindowEvent e)
...{
if ( listener != null )
...{
listener.closing(logAnalyzerFrame);
}
}
});
}
public void setFrameListner(LogAnalyzerFrameListener listener)
...{
this.listener = listener;
}
synchronized public static LogAnalyzerFrame getFrame()
...{
if ( logAnalyzerFrame == null )
...{
logAnalyzerFrame = new LogAnalyzerFrame();
}
return logAnalyzerFrame;
}
private void init()
...{
logAnalyzerMenu = new ParseLogAnalyzerMenu(JDesgResource.readComponent("LogAnalyzerMenu"));
toolBar = new LogAnalyzerToolBar(logAnalyzerMenu);
statusBar = new LogAnalyzerStatusBar();
logAnalyzerMenu.addStatusChangeListener(this);
setJMenuBar(logAnalyzerMenu.getMenuBar());
logAnalyzerMenu.setSelected("toolbar", true);
logAnalyzerMenu.setSelected("statusbar", true);
JLabel searchLabel = new JLabel(JDesgResource.getMessage("SEARCH_LABEL"));
Dimension size = new Dimension(100, 20);
columnCbBox = new JComboBox();
columnCbBox.setPreferredSize(size);
searchField = new JTextField();
searchField.setPreferredSize(size);
searchBtn = new JButton("Search");
searchBtn.setPreferredSize(new Dimension(80, 20));
JPanel searchPanel = new JPanel();
searchPanel.add(searchLabel);
searchPanel.add(columnCbBox);
searchPanel.add(searchField);
searchPanel.add(searchBtn);
toolBar.add(searchPanel, BorderLayout.EAST);
searchBtn.addActionListener(
new ActionListener()
...{
public void actionPerformed(ActionEvent e)
...{
String selectInfo = searchField.getText();
String selectCol = (String) columnCbBox.getSelectedItem();
try
...{
String tableName = currentPageDatatable.getTableName();
ResultSet res = null;
DataBaseManager manager = new DataBaseManager();
manager.init();
res = manager.getUsedInfoFromCol(selectInfo, selectCol, tableName);
currentPageDatatable.refetchData(res);
}
catch (Exception e1)
...{
}
}
});
DetailViewListModel model = new DetailViewListModel();
detailViewList = new JList(model);
detailViewList.setCellRenderer(new DetailViewListRenderer());
JScrollPane pane = new JScrollPane();
pane.setViewportView(detailViewList);
dataPane = new JTabbedPane();
dataPane.setTabPlacement(SwingConstants.LEFT);
// refetchAllTableData();
CustomSplitPane content = new CustomSplitPane(JSplitPane.VERTICAL_SPLIT, dataPane, pane, CustomSplitPane.RIGHTORBOTTOM);
content.setDividerSize(8);
content.setDividerLocation(300);
getContentPane().add(toolBar, BorderLayout.NORTH);
getContentPane().add(statusBar, BorderLayout.SOUTH);
getContentPane().add(content, BorderLayout.CENTER);
}
public ParseLogAnalyzerMenu getLogAnalyzerMenu()
...{
return logAnalyzerMenu;
}
public void setEnabled(String id, boolean isEnabled)
...{
logAnalyzerMenu.setEnabled(id, isEnabled);
}
public void setToolbar(boolean isVisible)
...{
toolBar.setVisible(isVisible);
}
public void setStatusbar(boolean isVisible)
...{
statusBar.setVisible(isVisible);
}
public void setStatusText(String arg0)
...{
}
public DataTable getDataTable()
...{
return currentPageDatatable;
}
public JList getDetailViewList()
...{
return detailViewList;
}
public JTabbedPane getDataPane()
...{
return dataPane;
}
public void setTotalLogsStatus(int totalLogs)
...{
statusBar.setTotalLogs(totalLogs);
}
public void setFilteredLogsStatus(int filteredLogs)
...{
statusBar.setFilteredLogs(filteredLogs);
}
public void refetchAllTableData()
...{
try...{
dataPane.removeAll();
}catch(Throwable e)...{
e.printStackTrace();
}
DataTable table = null;
Vector tableNames = db.getTableNames();
String allTableNames = "@";
for(int i = 0;i<PerformanceMessageInfo.PERFORMANCE_VIEW_TABLES.length;i++)...{
allTableNames = allTableNames + PerformanceMessageInfo.PERFORMANCE_VIEW_TABLES[i] +"@";
}
for (int i = 0; i < tableNames.size(); i++)
...{
String tableName = tableNames.get(i).toString();
if(allTableNames.indexOf(tableName) != -1)...{
ResultSet rs = null;
try...{
rs = db.getTableResultSet(tableName);
}catch(Throwable e)...{
System.out.println(tableName);
e.printStackTrace();
}
table = new DataTable(rs);
table.setTableName(tableName);
if (i == 0)
currentPageDatatable = table;
JScrollPane scrollPane = new JScrollPane(table);
dataPane.addTab(tableName, scrollPane);
}
}
dataPane.addChangeListener(
new ChangeListener()
...{
public void stateChanged(ChangeEvent e)
...{
updateView();
}
});
}
public void refetchCurrentTableData()
...{
ResultSet rs = db.getTableResultSet(currentPageDatatable.getTableName());
currentPageDatatable.refetchData(rs);
}
private void updateSearchColumn()
...{
if (columnCbBox.getItemCount() != 0)
...{
columnCbBox.removeAllItems();
}
for (int i = 0; i < currentPageDatatable.getTableModel().getColumnNames().size(); i++)
...{
columnCbBox.addItem(currentPageDatatable.getTableModel().getColumnNames().get(i));
}
}
public void filter(int index, HashMap data)
...{
// TODO do filter
dataPane.setSelectedIndex(index);
updateView();
doFilter(data);
}
private void doFilter(HashMap data)...{
String tableName = currentPageDatatable.getTableName();
ResultSet res = null;
DataBaseManager manager = new DataBaseManager();
manager.init();
StringBuffer query = new StringBuffer();
query.append("SELECT * FROM " + tableName + " WHERE ");
Object keys[] = data.keySet().toArray();
for(int i =0;i<keys.length-1 ;i++)...{
query.append((String)keys[i]+" LIKE '%"+data.get(keys[i])+"%'"+" AND ");
}
query.append((String)keys[keys.length-1]+" LIKE '%"+data.get(keys[keys.length -1])+"%'");
res = manager.getQueryResultSet(query.toString());
currentPageDatatable.refetchData(res);
}
private void updateView()
...{
if(dataPane.getSelectedComponent() == null)...{
return;
}
JViewport view = ((JScrollPane)dataPane.getSelectedComponent()).getViewport();
currentPageDatatable = (DataTable)view.getComponents()[0];
statusBar.setTotalLogs(currentPageDatatable.getTableModel().getTotalLogs());
statusBar.setFilteredLogs(currentPageDatatable.getTableModel().getFilteredLogs());
updateSearchColumn();
}
}
* Created on Jan 22, 2007
*/
package com.jinfonet.loganalyzer.ui.viewers;
import guitools.swing.component.customsplit.CustomSplitPane;
import guitools.swing.component.menu.StatusChangeListener;
import guitools.swing.dialog.JCommonFrame;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JViewport;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.jinfonet.loganalyzer.logAnalyzeTool.manager.DataBaseManager;
import com.jinfonet.loganalyzer.logAnalyzeTool.util.PerformanceMessageInfo;
import com.jinfonet.designer.util.JDesgResource;
import com.jinfonet.loganalyzer.db.DBConnection;
/** */ /**
* @author gengwei.zheng
*/
public class LogAnalyzerFrame extends JCommonFrame implements StatusChangeListener
... {
/** *//**
* serialVersionUID = 8903980581711306310L
*/
private static final long serialVersionUID = 8903980581711306310L;
private static String DEFAULT_TITLE = JDesgResource.getMessage("LA_DEFAULT_TITLE");
private static LogAnalyzerFrame logAnalyzerFrame;
private ParseLogAnalyzerMenu logAnalyzerMenu;
private LogAnalyzerToolBar toolBar;
private LogAnalyzerStatusBar statusBar;
private LogAnalyzerFrameListener listener;
private DBConnection db = DBConnection.getDatabase();
private DataTable currentPageDatatable;
private JTabbedPane dataPane;
private JComboBox columnCbBox;
private JList detailViewList;
private JButton searchBtn;
private JTextField searchField;
public LogAnalyzerFrame()
...{
this(DEFAULT_TITLE);
}
public LogAnalyzerFrame(String title)
...{
super(title);
setIconImage(JDesgResource.getIcon("logo").getImage());
init();
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
addWindowListener(
new WindowAdapter()
...{
public void windowClosing(WindowEvent e)
...{
if ( listener != null )
...{
listener.closing(logAnalyzerFrame);
}
}
});
}
public void setFrameListner(LogAnalyzerFrameListener listener)
...{
this.listener = listener;
}
synchronized public static LogAnalyzerFrame getFrame()
...{
if ( logAnalyzerFrame == null )
...{
logAnalyzerFrame = new LogAnalyzerFrame();
}
return logAnalyzerFrame;
}
private void init()
...{
logAnalyzerMenu = new ParseLogAnalyzerMenu(JDesgResource.readComponent("LogAnalyzerMenu"));
toolBar = new LogAnalyzerToolBar(logAnalyzerMenu);
statusBar = new LogAnalyzerStatusBar();
logAnalyzerMenu.addStatusChangeListener(this);
setJMenuBar(logAnalyzerMenu.getMenuBar());
logAnalyzerMenu.setSelected("toolbar", true);
logAnalyzerMenu.setSelected("statusbar", true);
JLabel searchLabel = new JLabel(JDesgResource.getMessage("SEARCH_LABEL"));
Dimension size = new Dimension(100, 20);
columnCbBox = new JComboBox();
columnCbBox.setPreferredSize(size);
searchField = new JTextField();
searchField.setPreferredSize(size);
searchBtn = new JButton("Search");
searchBtn.setPreferredSize(new Dimension(80, 20));
JPanel searchPanel = new JPanel();
searchPanel.add(searchLabel);
searchPanel.add(columnCbBox);
searchPanel.add(searchField);
searchPanel.add(searchBtn);
toolBar.add(searchPanel, BorderLayout.EAST);
searchBtn.addActionListener(
new ActionListener()
...{
public void actionPerformed(ActionEvent e)
...{
String selectInfo = searchField.getText();
String selectCol = (String) columnCbBox.getSelectedItem();
try
...{
String tableName = currentPageDatatable.getTableName();
ResultSet res = null;
DataBaseManager manager = new DataBaseManager();
manager.init();
res = manager.getUsedInfoFromCol(selectInfo, selectCol, tableName);
currentPageDatatable.refetchData(res);
}
catch (Exception e1)
...{
}
}
});
DetailViewListModel model = new DetailViewListModel();
detailViewList = new JList(model);
detailViewList.setCellRenderer(new DetailViewListRenderer());
JScrollPane pane = new JScrollPane();
pane.setViewportView(detailViewList);
dataPane = new JTabbedPane();
dataPane.setTabPlacement(SwingConstants.LEFT);
// refetchAllTableData();
CustomSplitPane content = new CustomSplitPane(JSplitPane.VERTICAL_SPLIT, dataPane, pane, CustomSplitPane.RIGHTORBOTTOM);
content.setDividerSize(8);
content.setDividerLocation(300);
getContentPane().add(toolBar, BorderLayout.NORTH);
getContentPane().add(statusBar, BorderLayout.SOUTH);
getContentPane().add(content, BorderLayout.CENTER);
}
public ParseLogAnalyzerMenu getLogAnalyzerMenu()
...{
return logAnalyzerMenu;
}
public void setEnabled(String id, boolean isEnabled)
...{
logAnalyzerMenu.setEnabled(id, isEnabled);
}
public void setToolbar(boolean isVisible)
...{
toolBar.setVisible(isVisible);
}
public void setStatusbar(boolean isVisible)
...{
statusBar.setVisible(isVisible);
}
public void setStatusText(String arg0)
...{
}
public DataTable getDataTable()
...{
return currentPageDatatable;
}
public JList getDetailViewList()
...{
return detailViewList;
}
public JTabbedPane getDataPane()
...{
return dataPane;
}
public void setTotalLogsStatus(int totalLogs)
...{
statusBar.setTotalLogs(totalLogs);
}
public void setFilteredLogsStatus(int filteredLogs)
...{
statusBar.setFilteredLogs(filteredLogs);
}
public void refetchAllTableData()
...{
try...{
dataPane.removeAll();
}catch(Throwable e)...{
e.printStackTrace();
}
DataTable table = null;
Vector tableNames = db.getTableNames();
String allTableNames = "@";
for(int i = 0;i<PerformanceMessageInfo.PERFORMANCE_VIEW_TABLES.length;i++)...{
allTableNames = allTableNames + PerformanceMessageInfo.PERFORMANCE_VIEW_TABLES[i] +"@";
}
for (int i = 0; i < tableNames.size(); i++)
...{
String tableName = tableNames.get(i).toString();
if(allTableNames.indexOf(tableName) != -1)...{
ResultSet rs = null;
try...{
rs = db.getTableResultSet(tableName);
}catch(Throwable e)...{
System.out.println(tableName);
e.printStackTrace();
}
table = new DataTable(rs);
table.setTableName(tableName);
if (i == 0)
currentPageDatatable = table;
JScrollPane scrollPane = new JScrollPane(table);
dataPane.addTab(tableName, scrollPane);
}
}
dataPane.addChangeListener(
new ChangeListener()
...{
public void stateChanged(ChangeEvent e)
...{
updateView();
}
});
}
public void refetchCurrentTableData()
...{
ResultSet rs = db.getTableResultSet(currentPageDatatable.getTableName());
currentPageDatatable.refetchData(rs);
}
private void updateSearchColumn()
...{
if (columnCbBox.getItemCount() != 0)
...{
columnCbBox.removeAllItems();
}
for (int i = 0; i < currentPageDatatable.getTableModel().getColumnNames().size(); i++)
...{
columnCbBox.addItem(currentPageDatatable.getTableModel().getColumnNames().get(i));
}
}
public void filter(int index, HashMap data)
...{
// TODO do filter
dataPane.setSelectedIndex(index);
updateView();
doFilter(data);
}
private void doFilter(HashMap data)...{
String tableName = currentPageDatatable.getTableName();
ResultSet res = null;
DataBaseManager manager = new DataBaseManager();
manager.init();
StringBuffer query = new StringBuffer();
query.append("SELECT * FROM " + tableName + " WHERE ");
Object keys[] = data.keySet().toArray();
for(int i =0;i<keys.length-1 ;i++)...{
query.append((String)keys[i]+" LIKE '%"+data.get(keys[i])+"%'"+" AND ");
}
query.append((String)keys[keys.length-1]+" LIKE '%"+data.get(keys[keys.length -1])+"%'");
res = manager.getQueryResultSet(query.toString());
currentPageDatatable.refetchData(res);
}
private void updateView()
...{
if(dataPane.getSelectedComponent() == null)...{
return;
}
JViewport view = ((JScrollPane)dataPane.getSelectedComponent()).getViewport();
currentPageDatatable = (DataTable)view.getComponents()[0];
statusBar.setTotalLogs(currentPageDatatable.getTableModel().getTotalLogs());
statusBar.setFilteredLogs(currentPageDatatable.getTableModel().getFilteredLogs());
updateSearchColumn();
}
}