/* * TeleStax, Open Source Cloud Communications Copyright 2012. * and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.mobicents.protocols.ss7.oam.tools.alarmlistener; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JCheckBox; import java.awt.GridLayout; import java.awt.Component; import javax.swing.JSplitPane; import org.mobicents.protocols.ss7.oam.common.statistics.CounterProviderManagementMBean; import org.mobicents.protocols.ss7.oam.common.statistics.api.ComplexValue; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterCampaign; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterDef; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterDefSet; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterType; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterValue; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterValueSet; /** * * @author sergey vetyutnev * */ public class StatProcessForm extends JDialog { private JTextArea taResult; private CounterProviderManagementMBean statHost; private JTextField tbCampaignName; private JTextField tbCounterSetName; private JTextField tbDuration; private JCheckBox cbShortCampaign; /** * Create the dialog. */ public StatProcessForm(CounterProviderManagementMBean statHost) { this.statHost = statHost; setBounds(100, 100, 916, 721); getContentPane().setLayout(new BorderLayout()); JSplitPane splitPane = new JSplitPane(); splitPane.setResizeWeight(0.5); getContentPane().add(splitPane, BorderLayout.CENTER); JPanel panelA = new JPanel(); splitPane.setLeftComponent(panelA); panelA.setAlignmentX(Component.LEFT_ALIGNMENT); panelA.setAlignmentY(Component.TOP_ALIGNMENT); panelA.setLayout(null); { JButton btGetCountersSetList = new JButton("getCounterDefSetList"); btGetCountersSetList.setBounds(10, 11, 159, 25); panelA.add(btGetCountersSetList); JButton btCounterDefSet = new JButton("getCounterDefSet"); btCounterDefSet.setBounds(10, 44, 159, 25); panelA.add(btCounterDefSet); JButton btCampaignsList = new JButton("getCampaignsList"); btCampaignsList.setBounds(10, 76, 159, 25); panelA.add(btCampaignsList); JButton btnCreateCampaign = new JButton("createCampaign"); btnCreateCampaign.setBounds(10, 109, 159, 25); panelA.add(btnCreateCampaign); JButton btDestroyCampaign = new JButton("destroyCampaign"); btDestroyCampaign.setBounds(10, 141, 159, 25); panelA.add(btDestroyCampaign); JButton btCampaign = new JButton("getCampaign"); btCampaign.setBounds(10, 170, 159, 25); panelA.add(btCampaign); JButton btLastCounterValues = new JButton("getLastCounterValues"); btLastCounterValues.setBounds(10, 199, 186, 25); panelA.add(btLastCounterValues); JLabel lblNewLabel = new JLabel("campaignName"); lblNewLabel.setBounds(10, 235, 129, 16); panelA.add(lblNewLabel); JLabel lblCountersetname = new JLabel("counterDefSetName"); lblCountersetname.setBounds(10, 268, 129, 16); panelA.add(lblCountersetname); JLabel lblDuration = new JLabel("duration"); lblDuration.setBounds(10, 300, 129, 16); panelA.add(lblDuration); cbShortCampaign = new JCheckBox("Short campaign (duration in seconds, for normal campaigns duration in minutes)"); cbShortCampaign.setBounds(10, 330, 495, 23); panelA.add(cbShortCampaign); tbCampaignName = new JTextField(); tbCampaignName.setBounds(149, 234, 199, 22); panelA.add(tbCampaignName); tbCampaignName.setText("camp1"); tbCampaignName.setColumns(10); tbCounterSetName = new JTextField(); tbCounterSetName.setBounds(149, 267, 199, 22); panelA.add(tbCounterSetName); tbCounterSetName.setColumns(10); tbDuration = new JTextField(); tbDuration.setBounds(149, 299, 199, 22); panelA.add(tbDuration); tbDuration.setText("5"); tbDuration.setColumns(10); JButton btSelectCampaign = new JButton(". . ."); btSelectCampaign.setBounds(360, 233, 36, 25); panelA.add(btSelectCampaign); JButton btSelectCounterSet = new JButton(". . ."); btSelectCounterSet.setBounds(360, 266, 36, 25); panelA.add(btSelectCounterSet); JButton btDuration = new JButton(". . ."); btDuration.setBounds(360, 298, 36, 25); panelA.add(btDuration); JPanel panelB = new JPanel(); splitPane.setRightComponent(panelB); panelB.setAlignmentX(Component.RIGHT_ALIGNMENT); panelB.setAlignmentY(Component.TOP_ALIGNMENT); panelB.setLayout(new GridLayout(1, 0, 0, 0)); JScrollPane scrollPane = new JScrollPane(); panelB.add(scrollPane); taResult = new JTextArea(); taResult.setEditable(false); scrollPane.setViewportView(taResult); btDuration.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { doSelectDuration(); } }); btSelectCounterSet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { doSelectCounterSet(); } }); btSelectCampaign.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { doSelectCampaign(); } }); btLastCounterValues.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { doLastCounterValues(); } }); btCampaign.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { doGetCampaign(); } }); btDestroyCampaign.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { doDestroyCampaign(); } }); btnCreateCampaign.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { doCreateCampaign(); } }); btCampaignsList.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { doCampaignsList(); } }); btCounterDefSet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { doCounterDefSet(); } }); btGetCountersSetList.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { doGetCountersSetList(); } }); } } private void doLastCounterValues() { String campaignName = this.tbCampaignName.getText(); CounterValueSet res = this.statHost.getLastCounterValues(campaignName); StringBuilder sb = new StringBuilder(); sb.append("Campaign: "); sb.append(campaignName); sb.append("\n"); sb.append("\n"); if (res != null) { sb.append("StartTime="); sb.append(res.getStartTime()); sb.append("\n"); sb.append("EndTime="); sb.append(res.getEndTime()); sb.append("\n"); sb.append("Duration minutes="); sb.append(res.getDuration()); sb.append("\n"); sb.append("Duration seconds="); sb.append(res.getDurationSeconds()); sb.append("\n"); for (CounterValue cv : res.getCounterValues()) { sb.append("LastCounterValueSet="); sb.append(cv.getObjectName()); sb.append("\tCounterName="); sb.append(cv.getCounterDef().getCounterName()); sb.append("\tValue="); switch (cv.getCounterDef().getCounterType()) { case Summary: case Summary_Cumulative: sb.append(cv.getLongValue()); break; case SummaryDouble: sb.append(cv.getDoubleValue()); break; case Minimal: sb.append(cv.getLongValue()); break; case Maximal: sb.append(cv.getLongValue()); break; case Average: sb.append(cv.getDoubleValue()); break; case ComplexValue: sb.append("Complex"); break; } sb.append("\n"); if (cv.getCounterDef().getCounterType() == CounterType.ComplexValue) { for (ComplexValue comp : cv.getComplexValue()) { sb.append("\tKey="); sb.append(comp.getKey()); sb.append("\tValue="); sb.append(comp.getValue()); sb.append("\n"); } } } } else { sb.append("null"); } this.taResult.setText(sb.toString()); } private void doDestroyCampaign() { String campaignName = this.tbCampaignName.getText(); String res = "OK"; try { this.statHost.destroyCampaign(campaignName); } catch (Exception e) { res = e.toString(); } this.taResult.setText(res); } private void doSelectCampaign() { ListSelector fm = new ListSelector(this.statHost.getCampaignsList(), this.tbCampaignName.getText(), "Campaign selection"); fm.setModal(true); fm.setVisible(true); String s = fm.getResult(); if (s != null) { this.tbCampaignName.setText(s); } } private void doGetCampaign() { String campaignName = this.tbCampaignName.getText(); CounterCampaign res = this.statHost.getCampaign(campaignName); StringBuilder sb = new StringBuilder(); sb.append("Campaign: "); sb.append(campaignName); sb.append("\n"); sb.append("\n"); if (res != null) { sb.append("Name="); sb.append(res.getName()); sb.append("\n"); sb.append("CounterSetName="); sb.append(res.getCounterSetName()); sb.append("\n"); sb.append("Duration="); sb.append(res.getDuration()); sb.append("\n"); if (res.isShortCampaign()) sb.append("shortCampaign"); else sb.append("normalCampaign"); sb.append("\n"); sb.append("LastCounterValueSet="); sb.append(res.getLastCounterValueSet() != null ? "Exists" : "Does not exist"); sb.append("\n"); } else { sb.append("null"); } this.taResult.setText(sb.toString()); } private void doCampaignsList() { String[] ss = this.statHost.getCampaignsList(); StringBuilder sb = new StringBuilder(); sb.append("GetCampaignsList:"); sb.append("\n"); sb.append("\n"); if (ss != null) { for (String s : ss) { sb.append(s); sb.append("\n"); } } else { sb.append("null"); } this.taResult.setText(sb.toString()); } private void doCounterDefSet() { String counterSetName = this.tbCounterSetName.getText(); CounterDefSet res = this.statHost.getCounterDefSet(counterSetName); StringBuilder sb = new StringBuilder(); sb.append("CounterDefSet: "); sb.append(counterSetName); sb.append("\n"); sb.append("\n"); if (res != null) { sb.append("Name="); sb.append(res.getName()); sb.append("\n"); for (CounterDef cd : res.getCounterDefs()) { sb.append(cd.getCounterName()); sb.append("\t- "); sb.append(cd.getCounterType()); sb.append("\t- "); sb.append(cd.getDescription()); sb.append("\n"); } } else { sb.append("null"); } this.taResult.setText(sb.toString()); } private void doSelectCounterSet() { ListSelector fm = new ListSelector(this.statHost.getCounterDefSetList(), this.tbCounterSetName.getText(), "CounterSet selection"); fm.setModal(true); fm.setVisible(true); String s = fm.getResult(); if (s != null) { this.tbCounterSetName.setText(s); } } private void doSelectDuration() { String[] lst = new String[] { "5", "10", "15", "20", "30", "60" }; ListSelector fm = new ListSelector(lst, this.tbDuration.getText(), "Duration selection (min)"); fm.setModal(true); fm.setVisible(true); String s = fm.getResult(); if (s != null) { this.tbDuration.setText(s); } } private void doCreateCampaign() { String campaignName = this.tbCampaignName.getText(); String counterSetName = this.tbCounterSetName.getText(); int duration; try { duration = Integer.parseInt(this.tbDuration.getText()); } catch (NumberFormatException e) { this.taResult.setText("NumberFormatException: field - duration"); return; } String s = "OK"; try { //TODO: extend GUI for outputFormat field, now is hardcoded to verbose if (this.cbShortCampaign.isSelected()) this.statHost.createShortCampaign(campaignName, counterSetName, duration, 1); else this.statHost.createCampaign(campaignName, counterSetName, duration, 1); } catch (Exception e) { s = e.toString(); } this.taResult.setText(s); } private void doGetCountersSetList() { String[] ss = this.statHost.getCounterDefSetList(); StringBuilder sb = new StringBuilder(); sb.append("GetCountersSetList:"); sb.append("\n"); sb.append("\n"); if (ss != null) { for (String s : ss) { sb.append(s); sb.append("\n"); } } else { sb.append("null"); } this.taResult.setText(sb.toString()); } }