Package com.persistit.ui

Source Code of com.persistit.ui.AdminUISummaryPanel

/**
* Copyright 2005-2012 Akiban Technologies, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.persistit.ui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import com.persistit.Management;

/**
* @version 1.0
*/
public class AdminUISummaryPanel extends AdminPanel implements AdminCommand {
    AdminUI _adminUI;

    JPanel _summaryPanel;
    JPanel _journalPanel;
    JPanel _recoveryPanel;
    JPanel _volumeTablePanel;

    JTextField _version;
    JTextField _copyright;
    JTextField _elapsed;
    JTextField _started;

    JTextField _totalReads;
    JTextField _totalWrites;
    JTextField _totalGets;
    JTextField _totalHits;
    JTextField _hitRatio;

    JTextField _commits;
    JTextField _rollbacks;
    JTextField _rollbacksSinceLastCommit;

    JTextField _journalCurLocation;
    JTextField _journalBlockSize;

    JTextField _journalBaseAddress;
    JTextField _journalPageMapSize;
    JTextField _journalPageCount;
    JTextField _journalCopiedPageCount;
    JTextField _journalReadPageCount;

    JTextField _journalValidCkptTime;
    JTextField _journalValidCkptAgo;
    JTextField _journalValidCkptTimestamp;
    JTextField _journalValidCkptLocation;

    JTextField _journalAppendOnly;
    JTextField _journalCopyFast;

    JTextField _frozenUpdates;
    JTextField _frozenShutdown;

    JTextField _recoveryKeystone;
    JTextField _recoveryBaseAddress;
    JTextField _recoveryEndAddress;
    JTextField _recoveryCkptTime;
    JTextField _recoveryCkptTimestamp;
    JTextField _recoveryCkptLocation;
    JTextField _recoveryCommitted;
    JTextField _recoveryUncommitted;
    JTextField _recoveryApplied;
    JTextField _recoveryException;

    JTextField _journalRecoveryLocation;

    String _frozenTrueCaption;
    String _frozenFalseCaption;
    String _enabledCaption;
    String _disabledCaption;
    String _dirtyCaption;
    String _cleanCaption;

    Color _normalForegroundColor;

    JTable _volumeTable;
    ManagementTableModel _volumeInfoArrayModel;
    private final Map _menuMap = new HashMap();
    private String _selectedVolumeName;

    @Override
    protected void setup(final AdminUI ui) throws NoSuchMethodException, RemoteException {
        _adminUI = ui;
        setLayout(new BorderLayout());
        _summaryPanel = new JPanel(new GridBagLayout());
        _journalPanel = new JPanel(new GridBagLayout());
        _recoveryPanel = new JPanel(new GridBagLayout());
        _volumeTablePanel = new JPanel(new BorderLayout());

        final GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(5, 1, 1, 5);
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.weightx = 1.0;
        gbc.anchor = GridBagConstraints.WEST;
        gbc.fill = GridBagConstraints.BOTH;

        _version = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.version", false);
        _started = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.started", false);
        _elapsed = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.elapsed", true);

        _copyright = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.copyright",
                true);

        _totalWrites = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.writes",
                false);
        _totalReads = (JTextField) ui
                .addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.reads", false);
        _totalGets = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.gets", false);
        _hitRatio = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.ratio", true);

        _commits = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.commits", false);
        _rollbacks = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(), "SummaryPanel.rollbacks",
                false);
        _rollbacksSinceLastCommit = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(),
                "SummaryPanel.rollbacksSinceLastCommit", true);

        _frozenUpdates = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(),
                "SummaryPanel.update_suspended", false);
        _frozenShutdown = (JTextField) ui.addLabeledField(_summaryPanel, gbc, new JTextField(),
                "SummaryPanel.shutdown_suspended", true);

        _journalCurLocation = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_current_location", false);
        _journalBaseAddress = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_base_address", false);
        _journalBlockSize = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_block_size", true);

        _journalPageMapSize = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_page_map_size", false);
        _journalPageCount = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_page_count", false);

        _journalCopiedPageCount = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_copy_count", false);

        _journalReadPageCount = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_read_count", true);

        _journalValidCkptLocation = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_ckpt_location", false);

        _journalValidCkptTimestamp = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_ckpt_timestamp", true);

        _journalValidCkptTime = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_ckpt_time", false);

        _journalValidCkptAgo = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_ckpt_ago", true);

        _journalAppendOnly = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_append_only", false);

        _journalCopyFast = (JTextField) ui.addLabeledField(_journalPanel, gbc, new JTextField(),
                "JournalPanel.journal_copy_fast", true);

        _recoveryKeystone = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_location", false);

        _recoveryBaseAddress = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_base", false);

        _recoveryEndAddress = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_ended", true);

        _recoveryCkptLocation = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_ckpt_location", false);

        _recoveryCkptTimestamp = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_ckpt_timestamp", false);

        _recoveryCkptTime = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_ckpt_time", true);

        _recoveryCommitted = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_committed", false);

        _recoveryUncommitted = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_uncommitted", false);

        _recoveryApplied = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_applied", true);

        _recoveryException = (JTextField) ui.addLabeledField(_recoveryPanel, gbc, new JTextField(),
                "RecoveryPanel.recovery_exception", false);

        _frozenTrueCaption = _adminUI.getProperty("SummaryPanel.suspendedTrueCaption");
        _frozenFalseCaption = _adminUI.getProperty("SummaryPanel.suspendedFalseCaption");

        _enabledCaption = _adminUI.getProperty("SummaryPanel.enabledCaption");
        _disabledCaption = _adminUI.getProperty("SummaryPanel.disabledCaption");

        _dirtyCaption = _adminUI.getProperty("SummaryPanel.dirtyCaption");
        _cleanCaption = _adminUI.getProperty("SummaryPanel.cleanCaption");

        gbc.gridx = 0;
        gbc.gridy++;
        gbc.fill = GridBagConstraints.WEST;
        add(new JLabel(_adminUI.getProperty("volumes")));

        _volumeInfoArrayModel = new ManagementTableModel(Management.VolumeInfo.class, "VolumeInfo", ui);

        final JTable volumeTable = new JTable(_volumeInfoArrayModel);
        volumeTable.setAutoCreateRowSorter(true);
        volumeTable.setPreferredScrollableViewportSize(new Dimension(800, 60));
        volumeTable.setAutoCreateColumnsFromModel(false);
        volumeTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        _volumeInfoArrayModel.formatColumns(volumeTable, null);

        volumeTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(final ListSelectionEvent lse) {
                final int index = volumeTable.getSelectedRow();
                if (!lse.getValueIsAdjusting() && index >= 0) {
                    final Management.VolumeInfo[] array = (Management.VolumeInfo[]) _volumeInfoArrayModel
                            .getInfoArray();
                    if (array != null && index < array.length) {
                        _selectedVolumeName = array[index].getName();
                    } else {
                        _selectedVolumeName = null;
                    }
                    _adminUI.scheduleRefresh(-1);
                }
            }
        });

        final JScrollPane volumeScrollPane = new JScrollPane(volumeTable);

        final JPanel volumePanel = new JPanel(new BorderLayout());
        volumePanel.setBorder(_adminUI.createTitledBorder("SummaryPanel.volumes"));
        volumePanel.add(volumeScrollPane, BorderLayout.CENTER);

        final JSplitPane splitter1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
        splitter1.add(volumePanel);

        _volumeTablePanel.add(splitter1, BorderLayout.CENTER);

        gbc.gridx = 0;
        gbc.gridy = 0;

        _normalForegroundColor = _frozenUpdates.getForeground();

        _summaryPanel.setBorder(_adminUI.createTitledBorder("SummaryPanel.status"));

        _journalPanel.setBorder(_adminUI.createTitledBorder("JournalPanel.journal_status"));

        _recoveryPanel.setBorder(_adminUI.createTitledBorder("RecoveryPanel.recovery_status"));

        final JPanel panel = new JPanel(new GridBagLayout());
        gbc.fill = GridBagConstraints.HORIZONTAL;
        panel.add(_summaryPanel, gbc);
        gbc.gridy++;
        panel.add(_journalPanel, gbc);
        gbc.gridy++;
        panel.add(_recoveryPanel, gbc);

        add(panel, BorderLayout.NORTH);
        add(_volumeTablePanel, BorderLayout.CENTER);

        refresh(false);
    }

    @Override
    public void actionPerformed(final AdminUI.AdminAction action, final ActionEvent ae) {
        //
        // Currently no actions created by this panel
        //
    }

    @Override
    protected void refresh(final boolean reset) {
        try {
            final Management management = _adminUI.getManagement();
            if (management == null) {
                _version.setText("");
                _copyright.setText("");
                _started.setText("");
                _elapsed.setText("");

                _totalReads.setText("");
                _totalWrites.setText("");
                _totalGets.setText("");
                _hitRatio.setText("");

                _commits.setText("");
                _rollbacks.setText("");
                _rollbacksSinceLastCommit.setText("");

                _journalCurLocation.setText("");
                _journalBlockSize.setText("");

                _journalBaseAddress.setText("");
                _journalPageMapSize.setText("");
                _journalPageCount.setText("");
                _journalCopiedPageCount.setText("");
                _journalReadPageCount.setText("");

                _journalValidCkptTime.setText("");
                _journalValidCkptAgo.setText("");
                _journalValidCkptTimestamp.setText("");
                _journalValidCkptLocation.setText("");

                _journalAppendOnly.setText("");
                _journalCopyFast.setText("");

                _recoveryApplied.setText("");
                _recoveryBaseAddress.setText("");
                _recoveryCkptLocation.setText("");
                _recoveryCkptTime.setText("");
                _recoveryCkptTimestamp.setText("");
                _recoveryCommitted.setText("");
                _recoveryEndAddress.setText("");
                _recoveryException.setText("");
                _recoveryKeystone.setText("");
                _recoveryUncommitted.setText("");

                _volumeInfoArrayModel.setInfoArray(null);

            } else {
                _version.setText(management.getVersion());
                _copyright.setText(management.getCopyright());

                _started.setText(_adminUI.formatDate(management.getStartTime()));

                _elapsed.setText(_adminUI.formatTime(management.getElapsedTime()));

                _frozenUpdates.setText(management.isUpdateSuspended() ? _frozenTrueCaption : _frozenFalseCaption);

                _frozenUpdates.setForeground(management.isUpdateSuspended() ? Color.red : _normalForegroundColor);

                _frozenShutdown.setText(management.isShutdownSuspended() ? _frozenTrueCaption : _frozenFalseCaption);

                _frozenShutdown.setForeground(management.isShutdownSuspended() ? Color.red : _normalForegroundColor);

                final Management.JournalInfo jinfo = management.getJournalInfo();
                _journalCurLocation.setText(_adminUI.formatFileLocation(jinfo.getCurrentJournalFile(),
                        jinfo.getCurrentJournalAddress()));
                _journalBlockSize.setText(_adminUI.formatLong(jinfo.getBlockSize()));

                _journalBaseAddress.setText(_adminUI.formatLong(jinfo.getBaseAddress()));

                _journalPageMapSize.setText(_adminUI.formatLong(jinfo.getPageMapSize()));
                _journalPageCount.setText(_adminUI.formatLong(jinfo.getJournaledPageCount()));
                _journalCopiedPageCount.setText(_adminUI.formatLong(jinfo.getCopiedPageCount()));
                _journalReadPageCount.setText(_adminUI.formatLong(jinfo.getReadPageCount()));

                if (jinfo.getLastValidCheckpointSystemTime() != 0) {
                    _journalValidCkptTime.setText(_adminUI.formatDate(jinfo.getLastValidCheckpointSystemTime()));
                    _journalValidCkptAgo.setText(_adminUI.formatLong(jinfo.getLastValidCheckpointAge()));
                    _journalValidCkptTimestamp.setText(_adminUI.formatLong(jinfo.getLastValidCheckpointTimestamp()));
                    _journalValidCkptLocation.setText(_adminUI.formatFileLocation(
                            jinfo.getLastValidCheckpointJournalFile(), jinfo.getLastValidCheckpointJournalAddress()));
                }

                _journalAppendOnly.setText(jinfo.isAppendOnly() ? _enabledCaption : _disabledCaption);

                _journalCopyFast.setText(jinfo.isFastCopying() ? _enabledCaption : _disabledCaption);

                final Management.RecoveryInfo rinfo = management.getRecoveryInfo();

                _recoveryApplied.setText(_adminUI.formatInteger(rinfo.getAppliedTransactions()));
                _recoveryBaseAddress.setText(_adminUI.formatLong(rinfo.getBaseAddress()));
                _recoveryCkptLocation.setText(_adminUI.formatLong(rinfo.getLastValidCheckpointJournalAddress()));
                _recoveryCkptTime.setText(_adminUI.formatDate(rinfo.getLastValidCheckpointSystemTime()));
                _recoveryCkptTimestamp.setText(_adminUI.formatLong(rinfo.getLastValidCheckpointTimestamp()));
                _recoveryCommitted.setText(_adminUI.formatInteger(rinfo.getCommittedTransactions()));
                _recoveryEndAddress.setText(_adminUI.formatLong(rinfo.getRecoveryEndAddress()));
                _recoveryException.setText(rinfo.getRecoveryEndedException() == null ? "none" : rinfo
                        .getRecoveryEndedException());
                _recoveryKeystone.setText(_adminUI.formatFileLocation(rinfo.getKeystoneJournalFile(),
                        rinfo.getKeystoneJournalAddress()));
                _recoveryUncommitted.setText(_adminUI.formatInteger(rinfo.getUncommittedTransactions()));

                final Management.BufferPoolInfo[] bpia = management.getBufferPoolInfoArray();

                long reads = 0;
                long writes = 0;
                long misses = 0;
                long hits = 0;
                long creates = 0;

                for (int index = 0; index < bpia.length; index++) {
                    misses += bpia[index].getMissCount();
                    hits += bpia[index].getHitCount();
                    creates += bpia[index].getNewCount();
                }

                final Management.VolumeInfo[] via = management.getVolumeInfoArray();

                if (_selectedVolumeName == null && via.length > 0) {
                    _selectedVolumeName = via[0].getName();
                }

                for (int index = 0; index < via.length; index++) {
                    reads += via[index].getReadCounter();
                    writes += via[index].getWriteCounter();
                }

                _totalReads.setText(_adminUI.formatLong(reads));
                _totalWrites.setText(_adminUI.formatLong(writes));
                _totalGets.setText(_adminUI.formatLong(misses));
                _hitRatio.setText(misses + hits + creates > 0 ? _adminUI.formatPercent((double) hits
                        / (double) (misses + hits + creates)) : "n/a");
                _volumeInfoArrayModel.setInfoArray(via);

                final Management.TransactionInfo transactionInfo = management.getTransactionInfo();
                _commits.setText(_adminUI.formatLong(transactionInfo.getCommitCount()));
                _rollbacks.setText(_adminUI.formatLong(transactionInfo.getRollbackCount()));
                _rollbacksSinceLastCommit.setText(_adminUI.formatLong(transactionInfo.getRollbackSinceCommitCount()));

            }
        } catch (final RemoteException re) {
            _adminUI.postException(re);
        }
    }

    private String formatRecoveryStatus(final long status) {
        if (status == Long.MIN_VALUE) {
            return "";
        }
        if (status == -1) {
            return _dirtyCaption;
        }
        if (status == 0) {
            return _cleanCaption;
        }
        return _adminUI.formatLong(status);
    }

    @Override
    protected Map getMenuMap() {
        return _menuMap;
    }

    @Override
    protected void setDefaultButton() {
        getRootPane().setDefaultButton(null);
    }

}
TOP

Related Classes of com.persistit.ui.AdminUISummaryPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.