package com.limegroup.gnutella.gui.statistics;
import java.awt.Component;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import com.limegroup.gnutella.gui.GUIMediator;
import com.limegroup.gnutella.gui.PaddedPanel;
import com.limegroup.gnutella.gui.statistics.panes.*;
/**
* This class constructs all of the elements of the statistics window.
* To add a new statistic, this class should be used.
* This class allows for statistics to be added to already existing panes as
* well as for statistics to be added to new panes that you can also add here.
* To add a new top-level pane, create a new <tt>StatisticsPaneImpl</tt> and
* call the addStatisticPane method. To add statistic items to that pane, add
* subclasses of <tt>AbstractPaneItem</tt>.
*/
//2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678|
public final class StatisticsConstructor {
/**
* Handle to the top-level <tt>JDialog</tt window that contains all
* of the other GUI components.
*/
private static final JDialog DIALOG =
new JDialog(GUIMediator.getAppFrame(),
GUIMediator.getStringResource("STATS_TITLE"),
false);
/**
* Constant for the default width of the statistics window.
*/
private static final int STATISTICS_WIDTH = 660;
/**
* Constant for the default height of the statistics window.
*/
private static final int STATISTICS_HEIGHT = 460;
/**
* Stored for convenience to allow using this in helper methods
* during construction.
*/
private static StatisticsTreeManager _treeManager;
/**
* Stored for convenience to allow using this in helper methods
* during construction.
*/
private static StatisticsPaneManager _paneManager;
private static final String ADVANCED_KEY = "STATS_ADVANCED_PANE_TITLE";
private static final JPanel MAIN_PANEL = new PaddedPanel();
private static final JSplitPane SPLIT_PANE =
new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
/**
* The constructor create all of the statistics windows and their
* components.
*
* @param treeManager the <tt>StatisticsTreeManager</tt> instance to
* use for constructing the main panels and
* adding elements
* @param paneManager the <tt>StatisticsPaneManager</tt> instance to
* use for constructing the main panels and
* adding elements
*/
public StatisticsConstructor(final StatisticsTreeManager treeManager,
final StatisticsPaneManager paneManager) {
_treeManager = treeManager;
_paneManager = paneManager;
DIALOG.setSize(STATISTICS_WIDTH, STATISTICS_HEIGHT);
final Box splitBox = new Box(BoxLayout.X_AXIS);
final Component treeComponent = _treeManager.getComponent();
final Component paneComponent = _paneManager.getComponent();
SPLIT_PANE.setLeftComponent(treeComponent);
SPLIT_PANE.setRightComponent(paneComponent);
splitBox.add(SPLIT_PANE);
SPLIT_PANE.setBorder(BorderFactory.createEmptyBorder());
MAIN_PANEL.add(splitBox);
MAIN_PANEL.add(Box.createVerticalStrut(17));
MAIN_PANEL.add(new StatisticsButtonPanel().getComponent());
DIALOG.getContentPane().add(MAIN_PANEL);
DIALOG.addComponentListener(new PaneAdapter());
///////////// BANDWIDTH //////////////
final String BANDWIDTH_KEY = "STATS_BANDWIDTH_PANE_TITLE";
final StatisticsPane bandwidthPane = new VisibleStatsPane(BANDWIDTH_KEY);
bandwidthPane.add(new BandwidthStats());
addGroupTreeNode(StatisticsMediator.ROOT_NODE_KEY, bandwidthPane);
// add upstream bandwidth stats
final String UPSTREAM_BANDWIDTH_KEY =
"TOTAL_UPSTREAM_BANDWIDTH";
addStatisticPane(BANDWIDTH_KEY, UPSTREAM_BANDWIDTH_KEY,
new TotalUpstreamBandwidth(UPSTREAM_BANDWIDTH_KEY));
// add downstream bandwidth stats
final String DOWNSTREAM_BANDWIDTH_KEY =
"TOTAL_DOWNSTREAM_BANDWIDTH";
addStatisticPane(BANDWIDTH_KEY, DOWNSTREAM_BANDWIDTH_KEY,
new TotalDownstreamBandwidth(DOWNSTREAM_BANDWIDTH_KEY));
///////////// ADVANCED //////////////
final StatisticsPane advancedPane = new VisibleStatsPane(ADVANCED_KEY);
advancedPane.add(new AdvancedStats());
addGroupTreeNode(StatisticsMediator.ROOT_NODE_KEY, advancedPane);
_treeManager.getTree().setSelectionRow(0);
}
/**
* Sets whether or no the advanced statistics panels are visible.
*
* @param visible the visibility state to set
*/
static void setAdvancedStatsVisible(boolean visible) {
if (visible) {
_treeManager.advancedSize();
SPLIT_PANE.setDividerLocation(200);
makeStatsVisible();
DIALOG.setSize(STATISTICS_WIDTH+75, STATISTICS_HEIGHT);
} else {
_treeManager.defaultSize();
SPLIT_PANE.setDividerLocation(125);
_treeManager.removeAllChildren(ADVANCED_KEY);
DIALOG.setSize(STATISTICS_WIDTH, STATISTICS_HEIGHT);
}
}
/**
* Makes the advanced statistics visible.
*/
private static void makeStatsVisible() {
// key for gnutella messages
final String GNUTELLA_KEY = "GNUTELLA_MESSAGES";
addGroupTreeNode(ADVANCED_KEY, GNUTELLA_KEY);
addReceivedStats(GNUTELLA_KEY);
addSentStats(GNUTELLA_KEY);
addFlowControlStats(GNUTELLA_KEY);
addCompressionStats(GNUTELLA_KEY);
addHandshakingStats(GNUTELLA_KEY);
addQRPStats(GNUTELLA_KEY);
addErrorStats(GNUTELLA_KEY);
// pane that displays OOB Throughput
final String OOB_THROUGHPUT_KEY = "OOB_THROUGHPUT";
addStatisticPane(GNUTELLA_KEY, OOB_THROUGHPUT_KEY,
new OutOfBandThroughputPaneItem(OOB_THROUGHPUT_KEY));
// pane that displays all route errors
final String ROUTE_ERRORS_KEY = "ROUTE_ERRORS";
addStatisticPane(GNUTELLA_KEY, ROUTE_ERRORS_KEY,
new RouteErrorsPaneItem(ROUTE_ERRORS_KEY));
// pane that displays all query reply route errors
final String QUERY_REPLY_ROUTE_ERRORS_KEY =
"QUERY_REPLY_ROUTE_ERRORS";
addStatisticPane(GNUTELLA_KEY, QUERY_REPLY_ROUTE_ERRORS_KEY,
new QueryReplyRouteErrors(QUERY_REPLY_ROUTE_ERRORS_KEY));
// pane that displays all filtered messages
final String FILTERED_MESSAGES_KEY = "FILTERED_MESSAGES";
addStatisticPane(GNUTELLA_KEY, FILTERED_MESSAGES_KEY,
new FilteredMessagesPaneItem(FILTERED_MESSAGES_KEY));
final String CONNECTION_ATTEMPTS_KEY = "TOTAL_CONNECTION_ATTEMPTS";
addStatisticPane(GNUTELLA_KEY, CONNECTION_ATTEMPTS_KEY,
new ConnectionAttemptsPaneItem(CONNECTION_ATTEMPTS_KEY));
//////////// END GNUTELLA MESSAGES /////////////
final String HTTP_REQUESTS_KEY = "TOTAL_HTTP_REQUESTS";
addStatisticPane(ADVANCED_KEY, HTTP_REQUESTS_KEY,
new HTTPRequestsPaneItem(HTTP_REQUESTS_KEY));
addDownloadStats(ADVANCED_KEY);
addUploadStats(ADVANCED_KEY);
}
/**
* Adds all download stats.
*/
private static void addDownloadStats(final String ADVANCED_KEY) {
// create main 'Download' group
final String DOWNLOAD_GROUP_KEY = "DOWNLOAD_STATISTICS";
addGroupTreeNode(ADVANCED_KEY, DOWNLOAD_GROUP_KEY);
// create subgroup Download->Connections
final String CONNECTIONS_KEY = "DOWNLOAD_CONNECTIONS";
addStatisticPane(DOWNLOAD_GROUP_KEY, CONNECTIONS_KEY,
new DownloadConnections(CONNECTIONS_KEY));
// create subgroup Download->Responses
final String RESPONSES_KEY = "DOWNLOAD_RESPONSES";
addStatisticPane(DOWNLOAD_GROUP_KEY, RESPONSES_KEY,
new DownloadResponses(RESPONSES_KEY));
//create subgroup Download->Alternate Locations
final String ALTERNATE_KEY = "DOWNLOAD_ALTERNATE";
addStatisticPane(DOWNLOAD_GROUP_KEY, ALTERNATE_KEY,
new DownloadAlternateLocations(ALTERNATE_KEY));
// create subgroup Download->Transfers
final String TRANFERS_KEY = "DOWNLOAD_TRANFERS";
addStatisticPane(DOWNLOAD_GROUP_KEY, TRANFERS_KEY,
new DownloadTransfers(TRANFERS_KEY));
// create stat for TCP connection times on downloads
final String TCP_CONNECT_TIME_KEY = "DOWNLOAD_TCP_CONNECT_TIME";
addStatisticPane(DOWNLOAD_GROUP_KEY, TCP_CONNECT_TIME_KEY,
new DownloadTCPConnectTime(TCP_CONNECT_TIME_KEY));
}
/**
* Adds all upload stats.
*/
private static void addUploadStats(final String ADVANCED_KEY) {
// create main 'Upload' group
final String UPLOAD_GROUP_KEY = "UPLOAD_STATISTICS";
addGroupTreeNode(ADVANCED_KEY, UPLOAD_GROUP_KEY);
// create subgroup Upload->Requests
final String REQUESTS_KEY = "UPLOAD_REQUESTS";
addStatisticPane(UPLOAD_GROUP_KEY, REQUESTS_KEY,
new UploadRequests(REQUESTS_KEY));
// create subgroup Upload->Responses
final String RESPONSES_KEY = "UPLOAD_RESPONSES";
addStatisticPane(UPLOAD_GROUP_KEY, RESPONSES_KEY,
new UploadResponses(RESPONSES_KEY));
//create subgroup Upload->Alternate Locations
//final String ALTERNATE_KEY = "UPLOAD_ALTERNATE";
//addStatisticPane(UPLOAD_GROUP_KEY, ALTERNATE_KEY,
// new DownloadAlternateLocations(ALTERNATE_KEY));
// create subgroup Upload->Request Methods
final String METHODS_KEY = "UPLOAD_METHODS";
addStatisticPane(UPLOAD_GROUP_KEY, METHODS_KEY,
new UploadRequestMethods(METHODS_KEY));
// create subgroup Upload->General
final String GENERAL_KEY = "UPLOAD_GENERAL";
addStatisticPane(UPLOAD_GROUP_KEY, GENERAL_KEY,
new UploadGeneral(GENERAL_KEY));
}
/**
* Adds all handshaking statistics.
*/
private static void addHandshakingStats(final String GNUTELLA_KEY) {
final String GROUP_KEY = "HANDSHAKING";
addGroupTreeNode(GNUTELLA_KEY, GROUP_KEY);
//pane that displays all leaf handshake stats
final String LEAF_KEY = "HANDSHAKING_LEAF";
addStatisticPane(GROUP_KEY, LEAF_KEY,
new HandshakingLeaf(LEAF_KEY));
//pane that displays all ultrapeer handshake stats
final String UP_KEY = "HANDSHAKING_ULTRAPEER";
addStatisticPane(GROUP_KEY, UP_KEY,
new HandshakingUltrapeer(UP_KEY));
//pane that displays all outgoing handshake stats
final String OUT_KEY = "HANDSHAKING_OUTGOING";
addStatisticPane(GROUP_KEY, OUT_KEY, new OutgoingHandshaking(OUT_KEY));
//pane that displays all incoming handshake stats
final String IN_KEY = "HANDSHAKING_INCOMING";
addStatisticPane(GROUP_KEY, IN_KEY, new IncomingHandshaking(IN_KEY));
//pane that displays outgoing server rejection handshaking stats
final String SERVER_REJECT_KEY = "HANDSHAKING_OUTGOING_SERVER_REJECT";
addStatisticPane(GROUP_KEY, SERVER_REJECT_KEY,
new OutgoingServerReject(SERVER_REJECT_KEY));
}
/**
* Adds all compression statistics.
*/
private static void addCompressionStats(final String GNUTELLA_KEY) {
final String COMPRESSION_GROUP_KEY = "COMPRESSABLE_MESSAGES";
addGroupTreeNode(GNUTELLA_KEY, COMPRESSION_GROUP_KEY);
//pane that displays all upstream compressable data
final String COMPRESSABLE_UPSTREAM_KEY = "COMPRESSABLE_UPSTREAM";
addStatisticPane(COMPRESSION_GROUP_KEY, COMPRESSABLE_UPSTREAM_KEY,
new CompressableUpstreamBandwidth(COMPRESSABLE_UPSTREAM_KEY));
//pane that displays all downstream compressable data
final String COMPRESSABLE_DOWNSTREAM_KEY = "COMPRESSABLE_DOWNSTREAM";
addStatisticPane(COMPRESSION_GROUP_KEY, COMPRESSABLE_DOWNSTREAM_KEY,
new CompressableDownstreamBandwidth(COMPRESSABLE_DOWNSTREAM_KEY));
}
/**
* Adds all Gnutella message statistics for flow control.
*/
private static void addFlowControlStats(final String GNUTELLA_KEY) {
final String FLOW_CONTROL_GROUP_KEY = "FLOW_CONTROLLED_MESSAGES";
addGroupTreeNode(GNUTELLA_KEY, FLOW_CONTROL_GROUP_KEY);
// pane that displays all flow control data
final String FLOW_CONTROL_KEY = "FLOW_CONTROL";
addStatisticPane(FLOW_CONTROL_GROUP_KEY, FLOW_CONTROL_KEY,
new FlowControl(FLOW_CONTROL_KEY));
// pane that displays all flow control data in bytes
final String FLOW_CONTROL_BYTES_KEY = "FLOW_CONTROL_BYTES";
addStatisticPane(FLOW_CONTROL_GROUP_KEY, FLOW_CONTROL_BYTES_KEY,
new FlowControlBytes(FLOW_CONTROL_BYTES_KEY));
}
/**
* Adds all Gnutella message statistics for received messages.
*/
private static void addReceivedStats(final String GNUTELLA_KEY) {
final String RECEIVED_KEY = "RECEIVED_MESSAGES";
addGroupTreeNode(GNUTELLA_KEY, RECEIVED_KEY);
addReceivedNumberStats(RECEIVED_KEY);
addReceivedBytesStats(RECEIVED_KEY);
addReceivedAverageMessageSizeStats(RECEIVED_KEY);
addReceivedLimeStats(RECEIVED_KEY);
}
/**
* Adds all Gnutella message statistics for sent messages.
*/
private static void addSentStats(final String GNUTELLA_KEY) {
final String SENT_KEY = "SENT_MESSAGES";
addGroupTreeNode(GNUTELLA_KEY, SENT_KEY);
addSentNumberStats(SENT_KEY);
addSentBytesStats(SENT_KEY);
addSentLimeStats(SENT_KEY);
}
/**
* Adds all Gnutella message statistics for QRP.
*/
private static void addQRPStats(final String GNUTELLA_KEY) {
final String QRP_GROUP_KEY = "QRP_MESSAGES";
addGroupTreeNode(GNUTELLA_KEY, QRP_GROUP_KEY);
addUltrapeerQRPStats(QRP_GROUP_KEY);
addLeafQRPStats(QRP_GROUP_KEY);
}
/**
* Adds all Gnutella message statistics for errors.
*/
private static void addErrorStats(final String GNUTELLA_KEY) {
final String ERROR_GROUP_KEY = "ERROR_MESSAGES";
addGroupTreeNode(GNUTELLA_KEY, ERROR_GROUP_KEY);
final String GENERIC_KEY = "ERROR_GENERIC";
addStatisticPane(ERROR_GROUP_KEY, GENERIC_KEY,
new ErrorGeneric(GENERIC_KEY));
final String QUERY_KEY = "ERROR_QUERIES";
addStatisticPane(ERROR_GROUP_KEY, QUERY_KEY,
new ErrorQueries(QUERY_KEY));
final String QUERY_REPLY_KEY = "ERROR_QUERY_REPLIES";
addStatisticPane(ERROR_GROUP_KEY, QUERY_REPLY_KEY,
new ErrorQueryReplies(QUERY_REPLY_KEY));
final String PING_REPLY_KEY = "ERROR_PING_REPLY";
addStatisticPane(ERROR_GROUP_KEY, PING_REPLY_KEY,
new ErrorPingReplies(PING_REPLY_KEY));
final String PUSH_KEY = "ERROR_PUSHES";
addStatisticPane(ERROR_GROUP_KEY, PUSH_KEY,
new ErrorPushes(PUSH_KEY));
final String VENDOR_KEY = "ERROR_VENDOR";
addStatisticPane(ERROR_GROUP_KEY, VENDOR_KEY,
new ErrorVendorMessages(VENDOR_KEY));
}
/**
* Adds received Gnutella messages statistics, in number of messages.
*/
private static void addReceivedNumberStats(final String RECEIVED_KEY) {
final String NUMBER_KEY = "RECEIVED_MESSAGE_NUMBER";
addGroupTreeNode(RECEIVED_KEY, NUMBER_KEY);
// pane for all received messages
final String TOTAL_RECEIVED_KEY =
"TOTAL_RECEIVED_MESSAGES";
addStatisticPane(NUMBER_KEY, TOTAL_RECEIVED_KEY,
new TotalReceivedMessages(TOTAL_RECEIVED_KEY));
// pane for all received TCP messages
final String RECEIVED_TCP_KEY =
"TOTAL_RECEIVED_TCP_MESSAGES";
addStatisticPane(NUMBER_KEY, RECEIVED_TCP_KEY,
new TCPMessagesReceived(RECEIVED_TCP_KEY));
// pane for all received UPD messages
final String RECEIVED_UDP_KEY =
"TOTAL_RECEIVED_UDP_MESSAGES";
addStatisticPane(NUMBER_KEY, RECEIVED_UDP_KEY,
new UDPMessagesReceived(RECEIVED_UDP_KEY));
// pane for all received MULTICAST messages
final String RECEIVED_MULTICAST_KEY =
"TOTAL_RECEIVED_MULTICAST_MESSAGES";
addStatisticPane(NUMBER_KEY, RECEIVED_MULTICAST_KEY,
new MulticastMessagesReceived(RECEIVED_MULTICAST_KEY));
// pane that displays all aggregate received TCP, UDP & Multicast messages
final String RECEIVED_ALL_KEY =
"RECEIVED_ALL";
addStatisticPane(NUMBER_KEY, RECEIVED_ALL_KEY,
new AllMessagesReceived(RECEIVED_ALL_KEY));
// add the query group
final String QUERIES_KEY = "RECEIVED_QUERY_REQUESTS";
addGroupTreeNode(NUMBER_KEY, QUERIES_KEY);
// query hops
final String QUERIES_HOPS_KEY = "QUERY_REQUEST_HOPS";
addStatisticPane(QUERIES_KEY, QUERIES_HOPS_KEY,
new QueryHops(QUERIES_HOPS_KEY));
// query ttl
final String QUERIES_TTL_KEY = "QUERY_REQUEST_TTL";
addStatisticPane(QUERIES_KEY, QUERIES_TTL_KEY,
new QueryTTL(QUERIES_TTL_KEY));
// pane for all received duplicate TCP queries
final String DUPLICATE_QUERIES_TCP_KEY =
"DUPLICATE_RECEIVED_TCP_QUERIES";
addStatisticPane(QUERIES_KEY, DUPLICATE_QUERIES_TCP_KEY,
new TCPDuplicateQueries(DUPLICATE_QUERIES_TCP_KEY));
// pane for all received duplicate Multicast queries
final String DUPLICATE_QUERIES_MULTICAST_KEY =
"DUPLICATE_RECEIVED_MULTICAST_QUERIES";
addStatisticPane(QUERIES_KEY, DUPLICATE_QUERIES_MULTICAST_KEY,
new MulticastDuplicateQueries(DUPLICATE_QUERIES_MULTICAST_KEY));
// pane for all received special queries
final String SPECIAL_QUERIES_KEY = "SPECIAL_QUERIES";
addStatisticPane(QUERIES_KEY, SPECIAL_QUERIES_KEY,
new SpecialQuery(SPECIAL_QUERIES_KEY));
// add the query hit group
final String HITS_KEY = "RECEIVED_QUERY_REPLIES";
addGroupTreeNode(NUMBER_KEY, HITS_KEY);
// query hit hops
final String HITS_HOPS_KEY = "QUERY_REPLY_HOPS";
addStatisticPane(HITS_KEY, HITS_HOPS_KEY,
new HitHops(HITS_HOPS_KEY));
// query hit ttl
final String HITS_TTL_KEY = "QUERY_REPLY_TTL";
addStatisticPane(HITS_KEY, HITS_TTL_KEY,
new HitTTL(HITS_TTL_KEY));
}
/**
* Adds received Gnutella messages statistics, in total bytes.
*/
private static void addReceivedBytesStats(final String RECEIVED_KEY) {
final String BYTES_KEY = "RECEIVED_MESSAGE_BYTES";
addGroupTreeNode(RECEIVED_KEY, BYTES_KEY);
// pane for bytes from all received messages
final String TOTAL_RECEIVED_BYTES_KEY =
"TOTAL_RECEIVED_BYTES_MESSAGES";
addStatisticPane(BYTES_KEY, TOTAL_RECEIVED_BYTES_KEY,
new TotalReceivedBytes(TOTAL_RECEIVED_BYTES_KEY));
// pane for bytes from all received TCP messages
final String RECEIVED_BYTES_TCP_KEY =
"TOTAL_RECEIVED_BYTES_TCP_MESSAGES";
addStatisticPane(BYTES_KEY, RECEIVED_BYTES_TCP_KEY,
new TCPBytesReceived(RECEIVED_BYTES_TCP_KEY));
// pane for bytes from all received UPD messages
final String RECEIVED_BYTES_UDP_KEY =
"TOTAL_RECEIVED_BYTES_UDP_MESSAGES";
addStatisticPane(BYTES_KEY, RECEIVED_BYTES_UDP_KEY,
new UDPBytesReceived(RECEIVED_BYTES_UDP_KEY));
// pane for bytes from all received Multicast messages
final String RECEIVED_BYTES_MULTICAST_KEY =
"TOTAL_RECEIVED_BYTES_MULTICAST_MESSAGES";
addStatisticPane(BYTES_KEY, RECEIVED_BYTES_MULTICAST_KEY,
new MulticastBytesReceived(RECEIVED_BYTES_MULTICAST_KEY));
// pane that displays all aggregate bytes received from TCP and
// UDP messages
final String RECEIVED_BYTES_ALL_KEY =
"RECEIVED_BYTES_ALL";
addStatisticPane(BYTES_KEY, RECEIVED_BYTES_ALL_KEY,
new AllBytesReceived(RECEIVED_BYTES_ALL_KEY));
// add the query group
final String QUERIES_KEY = "RECEIVED_QUERY_REQUESTS_BYTES";
addGroupTreeNode(BYTES_KEY, QUERIES_KEY);
// query hops
final String QUERIES_HOPS_BYTES_KEY = "QUERY_REQUEST_HOPS_BYTES";
addStatisticPane(QUERIES_KEY, QUERIES_HOPS_BYTES_KEY,
new QueryHopsBytes(QUERIES_HOPS_BYTES_KEY));
// query ttl
final String QUERIES_TTL_BYTES_KEY = "QUERY_REQUEST_TTL_BYTES";
addStatisticPane(QUERIES_KEY, QUERIES_TTL_BYTES_KEY,
new QueryTTLBytes(QUERIES_TTL_BYTES_KEY));
// pane for all received duplicate TCP queries bytes
final String DUPLICATE_QUERIES_BYTES_TCP_KEY =
"DUPLICATE_RECEIVED_BYTES_TCP_QUERIES";
addStatisticPane(QUERIES_KEY, DUPLICATE_QUERIES_BYTES_TCP_KEY,
new TCPDuplicateQueriesBytes(DUPLICATE_QUERIES_BYTES_TCP_KEY));
// pane for all received duplicate Multicast queries bytes
final String DUPLICATE_QUERIES_BYTES_MULTICAST_KEY =
"DUPLICATE_RECEIVED_BYTES_MULTICAST_QUERIES";
addStatisticPane(QUERIES_KEY, DUPLICATE_QUERIES_BYTES_MULTICAST_KEY,
new MulticastDuplicateQueriesBytes(DUPLICATE_QUERIES_BYTES_MULTICAST_KEY));
// add the query hit group
final String HITS_KEY = "RECEIVED_QUERY_REPLIES_BYTES";
addGroupTreeNode(BYTES_KEY, HITS_KEY);
// query hit hops
final String HITS_HOPS_BYTES_KEY = "QUERY_REPLY_HOPS_BYTES";
addStatisticPane(HITS_KEY, HITS_HOPS_BYTES_KEY,
new HitHopsBytes(HITS_HOPS_BYTES_KEY));
// query hit ttl
final String HITS_TTL_BYTES_KEY = "QUERY_REPLY_TTL_BYTES";
addStatisticPane(HITS_KEY, HITS_TTL_BYTES_KEY,
new HitTTLBytes(HITS_TTL_BYTES_KEY));
}
/**
* Adds LimeWire-specific statistics for received messages.
*/
private static void addReceivedLimeStats(final String RECEIVED_KEY) {
final String LIMEWIRE_RECEIVED_KEY = "RECEIVED_LIMEWIRE";
addGroupTreeNode(RECEIVED_KEY, LIMEWIRE_RECEIVED_KEY);
final String LIME_NUMBER_KEY = "LIME_RECEIVED_MESSAGE_NUMBER";
addGroupTreeNode(LIMEWIRE_RECEIVED_KEY, LIME_NUMBER_KEY);
addReceivedLimeNumberStatsTCP(LIME_NUMBER_KEY);
addReceivedLimeNumberStatsUDP(LIME_NUMBER_KEY);
addReceivedLimeNumberStatsMulticast(LIME_NUMBER_KEY);
final String LIME_BYTES_KEY = "LIME_RECEIVED_MESSAGE_BYTES";
addGroupTreeNode(LIMEWIRE_RECEIVED_KEY, LIME_BYTES_KEY);
addReceivedLimeBytesStatsTCP(LIME_BYTES_KEY);
addReceivedLimeBytesStatsUDP(LIME_BYTES_KEY);
addReceivedLimeBytesStatsMulticast(LIME_BYTES_KEY);
addReceivedAverageLimeMessageSizeStats(LIMEWIRE_RECEIVED_KEY);
}
/**
* Adds the statistics for received Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of messages.
*/
private static void addReceivedLimeNumberStatsTCP(
final String LIME_NUMBER_KEY) {
final String TCP_KEY = "STATS_RECEIVED_TCP";
addGroupTreeNode(LIME_NUMBER_KEY, TCP_KEY);
final String LIME_RECEIVED_TCP_MESSAGES_KEY =
"LIME_RECEIVED_TCP_MESSAGES";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_MESSAGES_KEY,
new TCPLimeReceivedMessages(LIME_RECEIVED_TCP_MESSAGES_KEY));
final String LIME_RECEIVED_TCP_PINGS_KEY =
"LIME_RECEIVED_TCP_PING_REQUESTS";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_PINGS_KEY,
new TCPLimeReceivedPings(LIME_RECEIVED_TCP_PINGS_KEY));
final String LIME_RECEIVED_TCP_PONGS_KEY =
"LIME_RECEIVED_TCP_PING_REPLIES";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_PONGS_KEY,
new TCPLimeReceivedPongs(LIME_RECEIVED_TCP_PONGS_KEY));
final String LIME_RECEIVED_TCP_QUERIES_KEY =
"LIME_RECEIVED_TCP_QUERIES";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_QUERIES_KEY,
new TCPLimeReceivedQueries(LIME_RECEIVED_TCP_QUERIES_KEY));
final String LIME_RECEIVED_TCP_QUERY_REPLIES_KEY =
"LIME_RECEIVED_TCP_QUERY_REPLIES";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_QUERY_REPLIES_KEY,
new TCPLimeReceivedQueryReplies(LIME_RECEIVED_TCP_QUERY_REPLIES_KEY));
final String LIME_RECEIVED_TCP_PUSH_REQUESTS_KEY =
"LIME_RECEIVED_TCP_PUSH_REQUESTS";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_PUSH_REQUESTS_KEY,
new TCPLimeReceivedPushRequests(LIME_RECEIVED_TCP_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for received Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of messages.
*/
private static void addReceivedLimeNumberStatsUDP(
final String LIME_NUMBER_KEY) {
final String UDP_KEY = "STATS_RECEIVED_UDP";
addGroupTreeNode(LIME_NUMBER_KEY, UDP_KEY);
final String LIME_RECEIVED_UDP_MESSAGES_KEY =
"LIME_RECEIVED_UDP_MESSAGES";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_MESSAGES_KEY,
new UDPLimeReceivedMessages(LIME_RECEIVED_UDP_MESSAGES_KEY));
final String LIME_RECEIVED_UDP_PINGS_KEY =
"LIME_RECEIVED_UDP_PING_REQUESTS";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_PINGS_KEY,
new UDPLimeReceivedPings(LIME_RECEIVED_UDP_PINGS_KEY));
final String LIME_RECEIVED_UDP_PONGS_KEY =
"LIME_RECEIVED_UDP_PING_REPLIES";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_PONGS_KEY,
new UDPLimeReceivedPongs(LIME_RECEIVED_UDP_PONGS_KEY));
final String LIME_RECEIVED_UDP_QUERIES_KEY =
"LIME_RECEIVED_UDP_QUERIES";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_QUERIES_KEY,
new UDPLimeReceivedQueries(LIME_RECEIVED_UDP_QUERIES_KEY));
final String LIME_RECEIVED_UDP_QUERY_REPLIES_KEY =
"LIME_RECEIVED_UDP_QUERY_REPLIES";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_QUERY_REPLIES_KEY,
new UDPLimeReceivedQueryReplies(LIME_RECEIVED_UDP_QUERY_REPLIES_KEY));
final String LIME_RECEIVED_UDP_PUSH_REQUESTS_KEY =
"LIME_RECEIVED_UDP_PUSH_REQUESTS";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_PUSH_REQUESTS_KEY,
new UDPLimeReceivedPushRequests(LIME_RECEIVED_UDP_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for received Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of messages.
*/
private static void addReceivedLimeNumberStatsMulticast(
final String LIME_NUMBER_KEY) {
final String MULTICAST_KEY = "STATS_RECEIVED_MULTICAST";
addGroupTreeNode(LIME_NUMBER_KEY, MULTICAST_KEY);
final String LIME_RECEIVED_MULTICAST_MESSAGES_KEY =
"LIME_RECEIVED_MULTICAST_MESSAGES";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_MESSAGES_KEY,
new MulticastLimeReceivedMessages(LIME_RECEIVED_MULTICAST_MESSAGES_KEY));
final String LIME_RECEIVED_MULTICAST_PINGS_KEY =
"LIME_RECEIVED_MULTICAST_PING_REQUESTS";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_PINGS_KEY,
new MulticastLimeReceivedPings(LIME_RECEIVED_MULTICAST_PINGS_KEY));
final String LIME_RECEIVED_MULTICAST_PONGS_KEY =
"LIME_RECEIVED_MULTICAST_PING_REPLIES";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_PONGS_KEY,
new MulticastLimeReceivedPongs(LIME_RECEIVED_MULTICAST_PONGS_KEY));
final String LIME_RECEIVED_MULTICAST_QUERIES_KEY =
"LIME_RECEIVED_MULTICAST_QUERIES";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_QUERIES_KEY,
new MulticastLimeReceivedQueries(LIME_RECEIVED_MULTICAST_QUERIES_KEY));
final String LIME_RECEIVED_MULTICAST_QUERY_REPLIES_KEY =
"LIME_RECEIVED_MULTICAST_QUERY_REPLIES";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_QUERY_REPLIES_KEY,
new MulticastLimeReceivedQueryReplies(LIME_RECEIVED_MULTICAST_QUERY_REPLIES_KEY));
final String LIME_RECEIVED_MULTICAST_PUSH_REQUESTS_KEY =
"LIME_RECEIVED_MULTICAST_PUSH_REQUESTS";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_PUSH_REQUESTS_KEY,
new MulticastLimeReceivedPushRequests(LIME_RECEIVED_MULTICAST_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for received Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of bytes.
*/
private static void addReceivedLimeBytesStatsTCP(final String LIME_BYTES_KEY) {
final String TCP_KEY = "STATS_RECEIVED_TCP_BYTES";
addGroupTreeNode(LIME_BYTES_KEY, TCP_KEY);
final String LIME_RECEIVED_TCP_MESSAGES_KEY =
"LIME_RECEIVED_BYTES_TCP_MESSAGES";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_MESSAGES_KEY,
new TCPLimeReceivedBytes(LIME_RECEIVED_TCP_MESSAGES_KEY));
final String LIME_RECEIVED_TCP_PINGS_KEY =
"LIME_RECEIVED_BYTES_TCP_PING_REQUESTS";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_PINGS_KEY,
new TCPLimeReceivedPingsBytes(LIME_RECEIVED_TCP_PINGS_KEY));
final String LIME_RECEIVED_TCP_PONGS_KEY =
"LIME_RECEIVED_BYTES_TCP_PING_REPLIES";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_PONGS_KEY,
new TCPLimeReceivedPongsBytes(LIME_RECEIVED_TCP_PONGS_KEY));
final String LIME_RECEIVED_TCP_QUERIES_KEY =
"LIME_RECEIVED_BYTES_TCP_QUERIES";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_QUERIES_KEY,
new TCPLimeReceivedQueriesBytes(LIME_RECEIVED_TCP_QUERIES_KEY));
final String LIME_RECEIVED_TCP_QUERY_REPLIES_KEY =
"LIME_RECEIVED_BYTES_TCP_QUERY_REPLIES";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_QUERY_REPLIES_KEY,
new TCPLimeReceivedQueryRepliesBytes(LIME_RECEIVED_TCP_QUERY_REPLIES_KEY));
final String LIME_RECEIVED_TCP_PUSH_REQUESTS_KEY =
"LIME_RECEIVED_BYTES_TCP_PUSH_REQUESTS";
addStatisticPane(TCP_KEY, LIME_RECEIVED_TCP_PUSH_REQUESTS_KEY,
new TCPLimeReceivedPushRequestsBytes(LIME_RECEIVED_TCP_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for received Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of bytes.
*/
private static void addReceivedLimeBytesStatsUDP(
final String LIME_BYTES_KEY) {
final String UDP_KEY = "STATS_RECEIVED_UDP_BYTES";
addGroupTreeNode(LIME_BYTES_KEY, UDP_KEY);
final String LIME_RECEIVED_UDP_MESSAGES_KEY =
"LIME_RECEIVED_BYTES_UDP_MESSAGES";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_MESSAGES_KEY,
new UDPLimeReceivedBytes(LIME_RECEIVED_UDP_MESSAGES_KEY));
final String LIME_RECEIVED_UDP_PINGS_KEY =
"LIME_RECEIVED_BYTES_UDP_PING_REQUESTS";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_PINGS_KEY,
new UDPLimeReceivedPingsBytes(LIME_RECEIVED_UDP_PINGS_KEY));
final String LIME_RECEIVED_UDP_PONGS_KEY =
"LIME_RECEIVED_BYTES_UDP_PING_REPLIES";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_PONGS_KEY,
new UDPLimeReceivedPongsBytes(LIME_RECEIVED_UDP_PONGS_KEY));
final String LIME_RECEIVED_UDP_QUERIES_KEY =
"LIME_RECEIVED_BYTES_UDP_QUERIES";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_QUERIES_KEY,
new UDPLimeReceivedQueriesBytes(LIME_RECEIVED_UDP_QUERIES_KEY));
final String LIME_RECEIVED_UDP_QUERY_REPLIES_KEY =
"LIME_RECEIVED_BYTES_UDP_QUERY_REPLIES";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_QUERY_REPLIES_KEY,
new UDPLimeReceivedQueryRepliesBytes(LIME_RECEIVED_UDP_QUERY_REPLIES_KEY));
final String LIME_RECEIVED_UDP_PUSH_REQUESTS_KEY =
"LIME_RECEIVED_BYTES_UDP_PUSH_REQUESTS";
addStatisticPane(UDP_KEY, LIME_RECEIVED_UDP_PUSH_REQUESTS_KEY,
new UDPLimeReceivedPushRequestsBytes(LIME_RECEIVED_UDP_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for received Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of bytes.
*/
private static void addReceivedLimeBytesStatsMulticast(
final String LIME_BYTES_KEY) {
final String MULTICAST_KEY = "STATS_RECEIVED_MULTICAST_BYTES";
addGroupTreeNode(LIME_BYTES_KEY, MULTICAST_KEY);
final String LIME_RECEIVED_MULTICAST_MESSAGES_KEY =
"LIME_RECEIVED_BYTES_MULTICAST_MESSAGES";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_MESSAGES_KEY,
new MulticastLimeReceivedBytes(LIME_RECEIVED_MULTICAST_MESSAGES_KEY));
final String LIME_RECEIVED_MULTICAST_PINGS_KEY =
"LIME_RECEIVED_BYTES_MULTICAST_PING_REQUESTS";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_PINGS_KEY,
new MulticastLimeReceivedPingsBytes(LIME_RECEIVED_MULTICAST_PINGS_KEY));
final String LIME_RECEIVED_MULTICAST_PONGS_KEY =
"LIME_RECEIVED_BYTES_MULTICAST_PING_REPLIES";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_PONGS_KEY,
new MulticastLimeReceivedPongsBytes(LIME_RECEIVED_MULTICAST_PONGS_KEY));
final String LIME_RECEIVED_MULTICAST_QUERIES_KEY =
"LIME_RECEIVED_BYTES_MULTICAST_QUERIES";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_QUERIES_KEY,
new MulticastLimeReceivedQueriesBytes(LIME_RECEIVED_MULTICAST_QUERIES_KEY));
final String LIME_RECEIVED_MULTICAST_QUERY_REPLIES_KEY =
"LIME_RECEIVED_BYTES_MULTICAST_QUERY_REPLIES";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_QUERY_REPLIES_KEY,
new MulticastLimeReceivedQueryRepliesBytes(LIME_RECEIVED_MULTICAST_QUERY_REPLIES_KEY));
final String LIME_RECEIVED_MULTICAST_PUSH_REQUESTS_KEY =
"LIME_RECEIVED_BYTES_MULTICAST_PUSH_REQUESTS";
addStatisticPane(MULTICAST_KEY, LIME_RECEIVED_MULTICAST_PUSH_REQUESTS_KEY,
new MulticastLimeReceivedPushRequestsBytes(LIME_RECEIVED_MULTICAST_PUSH_REQUESTS_KEY));
}
/**
* Adds the average TCP received message size.
*/
private static void addReceivedAverageMessageSizeStats(final String receivedKey) {
final String RECEIVED_AVERAGE_MESSAGE_SIZE =
"RECEIVED_AVERAGE_MESSAGE_SIZE";
addStatisticPane(receivedKey, RECEIVED_AVERAGE_MESSAGE_SIZE,
new TCPAverageMessageSize(RECEIVED_AVERAGE_MESSAGE_SIZE));
}
/**
* Adds the average TCP received message size for LimeWire messages.
*/
private static void addReceivedAverageLimeMessageSizeStats(final String receivedKey) {
final String RECEIVED_AVERAGE_LIME_MESSAGE_SIZE =
"RECEIVED_AVERAGE_LIME_MESSAGE_SIZE";
addStatisticPane(receivedKey, RECEIVED_AVERAGE_LIME_MESSAGE_SIZE,
new TCPLimeAverageMessageSize(RECEIVED_AVERAGE_LIME_MESSAGE_SIZE));
}
/**
* Adds sent Gnutella message statistics, in number of messages.
*/
private static void addSentNumberStats(final String SENT_KEY) {
// sent messages
final String NUMBER_SENT_KEY = "SENT_MESSAGE_NUMBER";
addGroupTreeNode(SENT_KEY, NUMBER_SENT_KEY);
// pane for all sent messages
final String TOTAL_SENT_KEY = "TOTAL_SENT_MESSAGES";
addStatisticPane(NUMBER_SENT_KEY, TOTAL_SENT_KEY,
new TotalSentMessages(TOTAL_SENT_KEY));
// pane for all sent TCP messages
final String SENT_TCP_KEY = "TOTAL_SENT_TCP_MESSAGES";
addStatisticPane(NUMBER_SENT_KEY, SENT_TCP_KEY,
new TCPMessagesSent(SENT_TCP_KEY));
// pane for all sent UPD messages
final String SENT_UDP_KEY = "TOTAL_SENT_UDP_MESSAGES";
addStatisticPane(NUMBER_SENT_KEY, SENT_UDP_KEY,
new UDPMessagesSent(SENT_UDP_KEY));
// pane for all sent Multicast messages
final String SENT_MULTICAST_KEY = "TOTAL_SENT_MULTICAST_MESSAGES";
addStatisticPane(NUMBER_SENT_KEY, SENT_MULTICAST_KEY,
new MulticastMessagesSent(SENT_MULTICAST_KEY));
// pane that displays all aggregate sent TCP, UDP & Multicast messages
final String SENT_ALL_KEY = "SENT_ALL";
addStatisticPane(NUMBER_SENT_KEY, SENT_ALL_KEY,
new AllMessagesSent(SENT_ALL_KEY));
}
/**
* Adds stats for messages sent to Ultrapeers.
*/
private static void addUltrapeerQRPStats(final String QRP_KEY) {
// stats for qrp-routed messages to Ultrapeers
final String ULTRAPEER_KEY = "QRP_ULTRAPEER";
addGroupTreeNode(QRP_KEY, ULTRAPEER_KEY);
// stat for messages routed to other ultrapeers
final String ROUTED_ULTRAPEER_QUERY_KEY = "QRP_ULTRAPEER_ROUTED_QUERIES_SENT";
addStatisticPane(ULTRAPEER_KEY, ROUTED_ULTRAPEER_QUERY_KEY,
new RoutedOutgoingUltrapeerQueries(ROUTED_ULTRAPEER_QUERY_KEY));
}
/**
* Adds stats for messages sent to leaves.
*/
private static void addLeafQRPStats(final String QRP_KEY) {
// stats for qrp-routed messages to leaves
final String LEAF_KEY = "QRP_LEAF";
addGroupTreeNode(QRP_KEY, LEAF_KEY);
// stat for messages routed to other leaves
final String ROUTED_LEAF_SENT_QUERY_KEY = "QRP_LEAF_ROUTED_QUERIES_SENT";
addStatisticPane(LEAF_KEY, ROUTED_LEAF_SENT_QUERY_KEY,
new RoutedOutgoingLeafQueries(ROUTED_LEAF_SENT_QUERY_KEY));
// stat for messages received from routed queries
final String ROUTED_LEAF_RECVD_QUERY_KEY = "QRP_LEAF_ROUTED_QUERIES_RECEIVED";
addStatisticPane(LEAF_KEY, ROUTED_LEAF_RECVD_QUERY_KEY,
new RoutedIncomingLeafQueries(ROUTED_LEAF_RECVD_QUERY_KEY));
}
/**
* Adds sent Gnutella message statistics, in number of bytes.
*/
private static void addSentBytesStats(final String SENT_KEY) {
// sent bytes
final String BYTES_SENT_KEY = "SENT_MESSAGE_BYTES";
addGroupTreeNode(SENT_KEY, BYTES_SENT_KEY);
// pane for all bytes sent
final String TOTAL_BYTES_SENT_KEY = "TOTAL_SENT_BYTES_MESSAGES";
addStatisticPane(BYTES_SENT_KEY, TOTAL_BYTES_SENT_KEY,
new TotalSentBytes(TOTAL_BYTES_SENT_KEY));
// pane for all bytes sent through TCP messages
final String SENT_BYTES_TCP_KEY = "TOTAL_SENT_BYTES_TCP_MESSAGES";
addStatisticPane(BYTES_SENT_KEY, SENT_BYTES_TCP_KEY,
new TCPBytesSent(SENT_BYTES_TCP_KEY));
// pane for all bytes sent through UPD messages
final String SENT_BYTES_UDP_KEY = "TOTAL_SENT_BYTES_UDP_MESSAGES";
addStatisticPane(BYTES_SENT_KEY, SENT_BYTES_UDP_KEY,
new UDPBytesSent(SENT_BYTES_UDP_KEY));
// pane for all bytes sent through Multicast messages
final String SENT_BYTES_MULTICAST_KEY = "TOTAL_SENT_BYTES_MULTICAST_MESSAGES";
addStatisticPane(BYTES_SENT_KEY, SENT_BYTES_MULTICAST_KEY,
new MulticastBytesSent(SENT_BYTES_MULTICAST_KEY));
// pane that displays all aggregate sent TCP and UDP message bytes
final String SENT_BYTES_ALL_KEY = "SENT_BYTES_ALL";
addStatisticPane(BYTES_SENT_KEY, SENT_BYTES_ALL_KEY,
new AllBytesSent(SENT_BYTES_ALL_KEY));
}
/**
* Adds LimeWire-specific statistics for sent messages.
*/
private static void addSentLimeStats(final String SENT_KEY) {
final String LIMEWIRE_SENT_KEY = "SENT_LIMEWIRE";
addGroupTreeNode(SENT_KEY, LIMEWIRE_SENT_KEY);
final String LIME_NUMBER_KEY = "LIME_SENT_MESSAGES_NUMBER";
addGroupTreeNode(LIMEWIRE_SENT_KEY, LIME_NUMBER_KEY);
addSentLimeNumberStatsTCP(LIME_NUMBER_KEY);
addSentLimeNumberStatsUDP(LIME_NUMBER_KEY);
addSentLimeNumberStatsMulticast(LIME_NUMBER_KEY);
final String LIME_BYTES_KEY = "LIME_SENT_MESSAGES_BYTES";
addGroupTreeNode(LIMEWIRE_SENT_KEY, LIME_BYTES_KEY);
addSentLimeBytesStatsTCP(LIME_BYTES_KEY);
addSentLimeBytesStatsUDP(LIME_BYTES_KEY);
addSentLimeBytesStatsMulticast(LIME_BYTES_KEY);
}
/**
* Adds the statistics for sent Gnutella messages from other
* LimeWires versus other Gnutella clients, in kilobytes.
*/
private static void addSentLimeNumberStatsTCP(
final String LIME_NUMBER_KEY) {
final String TCP_KEY = "STATS_SENT_TCP";
addGroupTreeNode(LIME_NUMBER_KEY, TCP_KEY);
final String LIME_SENT_TCP_MESSAGES_KEY =
"LIME_SENT_TCP_MESSAGES";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_MESSAGES_KEY,
new TCPLimeSentMessages(LIME_SENT_TCP_MESSAGES_KEY));
final String LIME_SENT_TCP_PINGS_KEY =
"LIME_SENT_TCP_PING_REQUESTS";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_PINGS_KEY,
new TCPLimeSentPings(LIME_SENT_TCP_PINGS_KEY));
final String LIME_SENT_TCP_PONGS_KEY =
"LIME_SENT_TCP_PING_REPLIES";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_PONGS_KEY,
new TCPLimeSentPongs(LIME_SENT_TCP_PONGS_KEY));
final String LIME_SENT_TCP_QUERIES_KEY =
"LIME_SENT_TCP_QUERIES";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_QUERIES_KEY,
new TCPLimeSentQueries(LIME_SENT_TCP_QUERIES_KEY));
final String LIME_SENT_TCP_QUERY_REPLIES_KEY =
"LIME_SENT_TCP_QUERY_REPLIES";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_QUERY_REPLIES_KEY,
new TCPLimeSentQueryReplies(LIME_SENT_TCP_QUERY_REPLIES_KEY));
final String LIME_SENT_TCP_PUSH_REQUESTS_KEY =
"LIME_SENT_TCP_PUSH_REQUESTS";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_PUSH_REQUESTS_KEY,
new TCPLimeSentPushRequests(LIME_SENT_TCP_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for sent Gnutella messages from other
* LimeWires versus other Gnutella clients, in kilobytes.
*/
private static void addSentLimeNumberStatsUDP(
final String LIME_NUMBER_KEY) {
final String UDP_KEY = "STATS_SENT_UDP";
addGroupTreeNode(LIME_NUMBER_KEY, UDP_KEY);
final String LIME_SENT_UDP_MESSAGES_KEY =
"LIME_SENT_UDP_MESSAGES";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_MESSAGES_KEY,
new UDPLimeSentMessages(LIME_SENT_UDP_MESSAGES_KEY));
final String LIME_SENT_UDP_PINGS_KEY =
"LIME_SENT_UDP_PING_REQUESTS";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_PINGS_KEY,
new UDPLimeSentPings(LIME_SENT_UDP_PINGS_KEY));
final String LIME_SENT_UDP_PONGS_KEY =
"LIME_SENT_UDP_PING_REPLIES";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_PONGS_KEY,
new UDPLimeSentPongs(LIME_SENT_UDP_PONGS_KEY));
final String LIME_SENT_UDP_QUERIES_KEY =
"LIME_SENT_UDP_QUERIES";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_QUERIES_KEY,
new UDPLimeSentQueries(LIME_SENT_UDP_QUERIES_KEY));
final String LIME_SENT_UDP_QUERY_REPLIES_KEY =
"LIME_SENT_UDP_QUERY_REPLIES";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_QUERY_REPLIES_KEY,
new UDPLimeSentQueryReplies(LIME_SENT_UDP_QUERY_REPLIES_KEY));
final String LIME_SENT_UDP_PUSH_REQUESTS_KEY =
"LIME_SENT_UDP_PUSH_REQUESTS";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_PUSH_REQUESTS_KEY,
new UDPLimeSentPushRequests(LIME_SENT_UDP_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for sent Gnutella messages from other
* LimeWires versus other Gnutella clients, in kilobytes.
*/
private static void addSentLimeNumberStatsMulticast(
final String LIME_NUMBER_KEY) {
final String MULTICAST_KEY = "STATS_SENT_MULTICAST";
addGroupTreeNode(LIME_NUMBER_KEY, MULTICAST_KEY);
final String LIME_SENT_MULTICAST_MESSAGES_KEY =
"LIME_SENT_MULTICAST_MESSAGES";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_MESSAGES_KEY,
new MulticastLimeSentMessages(LIME_SENT_MULTICAST_MESSAGES_KEY));
final String LIME_SENT_MULTICAST_PINGS_KEY =
"LIME_SENT_MULTICAST_PING_REQUESTS";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_PINGS_KEY,
new MulticastLimeSentPings(LIME_SENT_MULTICAST_PINGS_KEY));
final String LIME_SENT_MULTICAST_PONGS_KEY =
"LIME_SENT_MULTICAST_PING_REPLIES";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_PONGS_KEY,
new MulticastLimeSentPongs(LIME_SENT_MULTICAST_PONGS_KEY));
final String LIME_SENT_MULTICAST_QUERIES_KEY =
"LIME_SENT_MULTICAST_QUERIES";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_QUERIES_KEY,
new MulticastLimeSentQueries(LIME_SENT_MULTICAST_QUERIES_KEY));
final String LIME_SENT_MULTICAST_QUERY_REPLIES_KEY =
"LIME_SENT_MULTICAST_QUERY_REPLIES";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_QUERY_REPLIES_KEY,
new MulticastLimeSentQueryReplies(LIME_SENT_MULTICAST_QUERY_REPLIES_KEY));
final String LIME_SENT_MULTICAST_PUSH_REQUESTS_KEY =
"LIME_SENT_MULTICAST_PUSH_REQUESTS";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_PUSH_REQUESTS_KEY,
new MulticastLimeSentPushRequests(LIME_SENT_MULTICAST_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for sent Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of bytes.
*/
private static void addSentLimeBytesStatsTCP(
final String LIME_BYTES_KEY) {
final String TCP_KEY = "STATS_SENT_TCP_BYTES";
addGroupTreeNode(LIME_BYTES_KEY, TCP_KEY);
final String LIME_SENT_TCP_MESSAGES_KEY =
"LIME_SENT_BYTES_TCP_MESSAGES";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_MESSAGES_KEY,
new TCPLimeSentBytes(LIME_SENT_TCP_MESSAGES_KEY));
final String LIME_SENT_TCP_PINGS_KEY =
"LIME_SENT_BYTES_TCP_PING_REQUESTS";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_PINGS_KEY,
new TCPLimeSentPingsBytes(LIME_SENT_TCP_PINGS_KEY));
final String LIME_SENT_TCP_PONGS_KEY =
"LIME_SENT_BYTES_TCP_PING_REPLIES";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_PONGS_KEY,
new TCPLimeSentPongsBytes(LIME_SENT_TCP_PONGS_KEY));
final String LIME_SENT_TCP_QUERIES_KEY =
"LIME_SENT_BYTES_TCP_QUERIES";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_QUERIES_KEY,
new TCPLimeSentQueriesBytes(LIME_SENT_TCP_QUERIES_KEY));
final String LIME_SENT_TCP_QUERY_REPLIES_KEY =
"LIME_SENT_BYTES_TCP_QUERY_REPLIES";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_QUERY_REPLIES_KEY,
new TCPLimeSentQueryRepliesBytes(LIME_SENT_TCP_QUERY_REPLIES_KEY));
final String LIME_SENT_TCP_PUSH_REQUESTS_KEY =
"LIME_SENT_BYTES_TCP_PUSH_REQUESTS";
addStatisticPane(TCP_KEY, LIME_SENT_TCP_PUSH_REQUESTS_KEY,
new TCPLimeSentPushRequestsBytes(LIME_SENT_TCP_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for sent Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of bytes.
*/
private static void addSentLimeBytesStatsUDP(
final String LIME_BYTES_KEY) {
final String UDP_KEY = "STATS_SENT_UDP_BYTES";
addGroupTreeNode(LIME_BYTES_KEY, UDP_KEY);
final String LIME_SENT_UDP_MESSAGES_KEY =
"LIME_SENT_BYTES_UDP_MESSAGES";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_MESSAGES_KEY,
new UDPLimeSentBytes(LIME_SENT_UDP_MESSAGES_KEY));
final String LIME_SENT_UDP_PINGS_KEY =
"LIME_SENT_BYTES_UDP_PING_REQUESTS";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_PINGS_KEY,
new UDPLimeSentPingsBytes(LIME_SENT_UDP_PINGS_KEY));
final String LIME_SENT_UDP_PONGS_KEY =
"LIME_SENT_BYTES_UDP_PING_REPLIES";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_PONGS_KEY,
new UDPLimeSentPongsBytes(LIME_SENT_UDP_PONGS_KEY));
final String LIME_SENT_UDP_QUERIES_KEY =
"LIME_SENT_BYTES_UDP_QUERIES";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_QUERIES_KEY,
new UDPLimeSentQueriesBytes(LIME_SENT_UDP_QUERIES_KEY));
final String LIME_SENT_UDP_QUERY_REPLIES_KEY =
"LIME_SENT_BYTES_UDP_QUERY_REPLIES";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_QUERY_REPLIES_KEY,
new UDPLimeSentQueryRepliesBytes(LIME_SENT_UDP_QUERY_REPLIES_KEY));
final String LIME_SENT_UDP_PUSH_REQUESTS_KEY =
"LIME_SENT_BYTES_UDP_PUSH_REQUESTS";
addStatisticPane(UDP_KEY, LIME_SENT_UDP_PUSH_REQUESTS_KEY,
new UDPLimeSentPushRequestsBytes(LIME_SENT_UDP_PUSH_REQUESTS_KEY));
}
/**
* Adds the statistics for sent Gnutella messages from other
* LimeWires versus other Gnutella clients, in number of bytes.
*/
private static void addSentLimeBytesStatsMulticast(
final String LIME_BYTES_KEY) {
final String MULTICAST_KEY = "STATS_SENT_MULTICAST_BYTES";
addGroupTreeNode(LIME_BYTES_KEY, MULTICAST_KEY);
final String LIME_SENT_MULTICAST_MESSAGES_KEY =
"LIME_SENT_BYTES_MULTICAST_MESSAGES";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_MESSAGES_KEY,
new MulticastLimeSentBytes(LIME_SENT_MULTICAST_MESSAGES_KEY));
final String LIME_SENT_MULTICAST_PINGS_KEY =
"LIME_SENT_BYTES_MULTICAST_PING_REQUESTS";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_PINGS_KEY,
new MulticastLimeSentPingsBytes(LIME_SENT_MULTICAST_PINGS_KEY));
final String LIME_SENT_MULTICAST_PONGS_KEY =
"LIME_SENT_BYTES_MULTICAST_PING_REPLIES";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_PONGS_KEY,
new MulticastLimeSentPongsBytes(LIME_SENT_MULTICAST_PONGS_KEY));
final String LIME_SENT_MULTICAST_QUERIES_KEY =
"LIME_SENT_BYTES_MULTICAST_QUERIES";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_QUERIES_KEY,
new MulticastLimeSentQueriesBytes(LIME_SENT_MULTICAST_QUERIES_KEY));
final String LIME_SENT_MULTICAST_QUERY_REPLIES_KEY =
"LIME_SENT_BYTES_MULTICAST_QUERY_REPLIES";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_QUERY_REPLIES_KEY,
new MulticastLimeSentQueryRepliesBytes(LIME_SENT_MULTICAST_QUERY_REPLIES_KEY));
final String LIME_SENT_MULTICAST_PUSH_REQUESTS_KEY =
"LIME_SENT_BYTES_MULTICAST_PUSH_REQUESTS";
addStatisticPane(MULTICAST_KEY, LIME_SENT_MULTICAST_PUSH_REQUESTS_KEY,
new MulticastLimeSentPushRequestsBytes(LIME_SENT_MULTICAST_PUSH_REQUESTS_KEY));
}
/**
* Adds the specified statistic to the statistics displayed, within
* the specified group key.
*/
private static void addStatisticPane(final String parentKey,
final String key,
final PaneItem item) {
final StatisticsPane pane =
new StatisticsPaneImpl("STATS_" + key + "_TITLE");
pane.add(item);
_treeManager.addNode(parentKey, pane);
_paneManager.addPane(pane);
}
/**
* Adds a parent node to the tree. This node serves navigational
* purposes only, as the corresponding <tt>StatisticsPane</tt> does
* not display any data. This method allows for multiple tiers of
* parent nodes, not only top-level parents.
*
* @param parentKey the key of the parent node to add this parent
* node to
* @param childKey the key of the child node being added
*/
private static void addGroupTreeNode(final String parentKey,
final String childKey) {
final StatisticsPane pane = new StatisticsPaneParent(childKey);
_treeManager.addNode(parentKey, pane);
_paneManager.addPane(pane);
}
/**
* Adds a parent node to the tree. This parent has the visible
* display of the <tt>StatisticsPane</tt> parameter.
* This method allows for multiple tiers of parent nodes, not only
* top-level parents.
*
* @param parentKey the key of the parent node to add this parent
* node to
* @param pane the <tt>StatisticsPane</tt> instance containing the
* data for visual display
*/
private static void addGroupTreeNode(final String parentKey,
final StatisticsPane pane) {
_treeManager.addNode(parentKey, pane);
_paneManager.addPane(pane);
}
/**
* Makes the statistics window either visible or not visible depending on
* the boolean argument.
*
* @param visible <tt>boolean</tt> value specifying whether the statistics
* window should be made visible or not visible
*/
public void setStatisticsVisible(boolean visible) {
if (visible == true) {
DIALOG.setLocationRelativeTo(GUIMediator.getAppFrame());
DIALOG.show();
} else {
DIALOG.dispose();
}
}
/**
* Returns if the statistics window is visible.
*
* @return <tt>true</tt> if the statistics window is visible,
* <tt>false</tt> otherwise
*/
public boolean isStatisticsVisible() {
return DIALOG.isVisible();
}
/**
* Returns the main <tt>Component</tt> instance for the statistics window,
* allowing other components to position themselves accordingly.
*
* @return the main statistics <tt>Component</tt> window
*/
public static Component getMainComponent() {
return DIALOG;
}
/**
* Returns the main <tt>Component</tt> instance for the statistics window,
* allowing other components to position themselves accordingly.
*
* @return the main statistics <tt>Component</tt> window
*/
public static JComponent getComponent() {
return MAIN_PANEL;
}
/**
* Accessor for the component that contains the displayed statistics,
* as opposed to the navigational component.
*
* @return the component that contains the displayed statistics,
* as opposed to the navigational component
*/
public static JComponent getStatDisplayComponent() {
return _paneManager.getFirstDisplayedPaneItem().getStatsComponent();
}
private class PaneAdapter extends ComponentAdapter {
public void componentResized(ComponentEvent e) {
_paneManager.componentResized(e);
}
}
}