Package rra.reader

Source Code of rra.reader.RRAswgMediator

package rra.reader;

import java.awt.BorderLayout;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Iterator;

import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.xy.XYSplineRenderer;
import org.jfree.data.xy.XYDataItem;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import rra.model.Combat;
import rra.model.CombatParticipant;
import rra.model.DPSStats;
import rra.model.DPSTick;
import rra.model.DeathDetail;
import rra.model.HPSStats;
import rra.model.HPSTick;
import rra.model.InterruptStats;
import rra.model.Participant;
import rra.parser.RRAParser;
import rra.swingGUI.CheckBoxCellRenderer;
import rra.swingGUI.DPSCheckBoxCellEditor;
import rra.swingGUI.DTPSCheckBoxCellEditor;
import rra.swingGUI.HPSCheckBoxCellEditor;

@SuppressWarnings("rawtypes")
public class RRAswgMediator extends RRAMediator
  private JLabel statusLabel=null;
  private JList cList=null;
  private JTable dpso=null;
  private JPanel dpsoPanel=null;
  private ChartPanel dpsoChartPanel=null;
  private JFreeChart dpsoChart=null;

  private JTable hps=null;
  private JPanel hpsPanel=null;
  private ChartPanel hpsChartPanel=null;
  private JFreeChart hpsChart=null;
 
  private JTable dpst=null;
  private JPanel dpstPanel=null;
  private ChartPanel dpstChartPanel=null;
  private JFreeChart dpstChart=null;
 
  private JList cParticipants=null;
  private JTable x1_dps1Stats=null;
  private JTable x1_dps2Stats=null;
  private JTable x1_dtps1Stats=null;
  private JTable x1_dtps2Stats=null;
  private JTable x1_hps1Stats=null;
  private JTable x1_hps2Stats=null;
  private JTable x1_hps3Stats=null;
  private JTable x1_dtpsTypes=null;

  private JTable interrupts=null;
  private JTable deaths=null;
 
  private JTextField combatName=null;
  private JTextField combatStart=null;
  private JTextField combatEnd=null;
  private JTextField combatDuration=null;
 
  private JTable allDPSO=null;
  private JTable allHPS=null;
  private JTable allDPST=null;
 
  private Collection tmp=null;
  private RRAParser parser=null;
 
  public RRAswgMediator(JLabel statusLabel,JList cList,JTable dpso,JPanel dpsoPanel,JTable hps,JPanel hpsPanel,
      JTable dpst,JPanel dpstPanel,JList cParticipants,JTable x1_dps1Stats,JTable x1_dps2Stats,
      JTable x1_dtps1Stats,JTable x1_dtps2Stats,JTable x1_hps1Stats,JTable x1_hps2Stats,JTable x1_hps3Stats,
      JTable interrupts,JTable deaths,JTextField combatName,JTextField combatStart,JTextField combatEnd,
      JTextField combatDuration,JTable allDPSO,JTable allHPS,JTable allDPST,JTable x1_dtpsTypes) {
    this.statusLabel=statusLabel;
    this.cList=cList;
    this.dpso=dpso;
    this.dpsoPanel=dpsoPanel;
    this.hps=hps;
    this.hpsPanel=hpsPanel;
    this.dpst=dpst;
    this.dpstPanel=dpstPanel;
    this.cParticipants=cParticipants;
    this.x1_dps1Stats=x1_dps1Stats;
    this.x1_dps2Stats=x1_dps2Stats;
    this.x1_dtps1Stats=x1_dtps1Stats;
    this.x1_dtps2Stats=x1_dtps2Stats;
    this.x1_hps1Stats=x1_hps1Stats;
    this.x1_hps2Stats=x1_hps2Stats;
    this.x1_hps3Stats=x1_hps3Stats;
    this.interrupts=interrupts;
    this.deaths=deaths;
    this.combatName=combatName;
    this.combatStart=combatStart;
    this.combatEnd=combatEnd;
    this.combatDuration=combatDuration;
    this.allDPSO=allDPSO;
    this.allHPS=allHPS;
    this.allDPST=allDPST;
    this.x1_dtpsTypes=x1_dtpsTypes;
  }
 
  public void setParser(RRAParser parser) {
    this.parser=parser;
  }
 
  @SuppressWarnings("unchecked")
  @Override
  public void processEvent(int eventType,Collection parameters) {
    super.processEvent(eventType,parameters);
    if(eventType==RRAMediator.EventStatusChange) {
      String s=(String)parameters.toArray()[0];
      this.statusLabel.setText(s);
      this.statusLabel.repaint();
    }
    if(eventType==RRAMediator.EventEOF) {
      this.tmp=parameters;
      try {
        SwingUtilities.invokeAndWait(new Runnable() {
          @Override
          public void run() {
            for(Iterator<Combat> it=tmp.iterator();it.hasNext();) {
              Combat c=it.next();
              if(!c.isActive()) {
                ((DefaultListModel)cList.getModel()).addElement(c.getName());
                parser.getData().addCombatToAllStats(c);
              }
            }
          }
        });
      } catch (Exception e) {
        e.printStackTrace();
      }
      cList.revalidate();
      cList.repaint();
     
      DefaultTableModel dtm=new DefaultTableModel();
      allDPSO.setModel(dtm);
      dtm.addColumn("Participant");
      dtm.addColumn("Combats");
      dtm.addColumn("Duration of all combats");
      dtm.addColumn("Damage done");
      dtm.addColumn("DPS");
      for(Iterator<Participant> it=parser.getData().getDPSSortedParticipantList().iterator();it.hasNext();) {
        Participant p=it.next();
        dtm.addRow(new Object[]{p.getName(),p.getCombats(),p.getCombatDuration(),p.getDamageDone(),p.getDPS()});
      }
      dtm.fireTableDataChanged();
      allDPSO.revalidate();
      allDPSO.repaint();
     
      dtm=new DefaultTableModel();
      allHPS.setModel(dtm);
      dtm.addColumn("Participant");
      dtm.addColumn("Combats");
      dtm.addColumn("Duration of all combats");
      dtm.addColumn("Healing done");
      dtm.addColumn("HPS");
      for(Iterator<Participant> it=parser.getData().getHPSSortedParticipantList().iterator();it.hasNext();) {
        Participant p=it.next();
        dtm.addRow(new Object[]{p.getName(),p.getCombats(),p.getCombatDuration(),p.getHealingDone(),p.getHPS()});
      }
      dtm.fireTableDataChanged();
      allHPS.revalidate();
      allHPS.repaint();
     
      dtm=new DefaultTableModel();
      allDPST.setModel(dtm);
      dtm.addColumn("Participant");
      dtm.addColumn("Combats");
      dtm.addColumn("Duration of all combats");
      dtm.addColumn("Damage taken");
      dtm.addColumn("DTPS");
      for(Iterator<Participant> it=parser.getData().getDTPSSortedParticipantList().iterator();it.hasNext();) {
        Participant p=it.next();
        dtm.addRow(new Object[]{p.getName(),p.getCombats(),p.getCombatDuration(),p.getDamageTaken(),p.getDTPS()});
      }
      dtm.fireTableDataChanged();
      allDPST.revalidate();
      allDPST.repaint();
    }
    if(eventType==RRAMediator.EventNewFile || eventType==EventCombatDeselected) {
      if(eventType==RRAMediator.EventNewFile) {
        ((DefaultListModel)cList.getModel()).removeAllElements();
        cList.revalidate();
        cList.repaint();

        parser.getData().clearCombatAllStats();
        allDPSO.setModel(new DefaultTableModel());
        allDPSO.revalidate();
        allDPSO.repaint();
        allHPS.setModel(new DefaultTableModel());
        allHPS.revalidate();
        allHPS.repaint();
        allDPST.setModel(new DefaultTableModel());
        allDPST.revalidate();
        allDPST.repaint();
      }
      combatName.setText("");
      combatStart.setText("");
      combatEnd.setText("");
      combatDuration.setText("");
      dpso.setModel(new DefaultTableModel());
      dpso.revalidate();
      dpso.repaint();
      dpsoPanel.removeAll();
      dpsoPanel.revalidate();
      dpsoPanel.repaint();
      hps.setModel(new DefaultTableModel());
      hps.revalidate();
      hps.repaint();
      hpsPanel.removeAll();
      hpsPanel.revalidate();
      hpsPanel.repaint();
      dpst.setModel(new DefaultTableModel());
      dpst.revalidate();
      dpst.repaint();
      dpstPanel.removeAll();
      dpstPanel.revalidate();
      dpstPanel.repaint();
      ((DefaultListModel)cParticipants.getModel()).removeAllElements();
      cParticipants.revalidate();
      cParticipants.repaint();
      x1_dps1Stats.setModel(new DefaultTableModel());
      x1_dps1Stats.revalidate();
      x1_dps1Stats.repaint();
      x1_dps2Stats.setModel(new DefaultTableModel());
      x1_dps2Stats.revalidate();
      x1_dps2Stats.repaint();
      x1_dtps1Stats.setModel(new DefaultTableModel());
      x1_dtps1Stats.revalidate();
      x1_dtps1Stats.repaint();
      x1_dtps2Stats.setModel(new DefaultTableModel());
      x1_dtps2Stats.revalidate();
      x1_dtps2Stats.repaint();
      x1_hps1Stats.setModel(new DefaultTableModel());
      x1_hps1Stats.revalidate();
      x1_hps1Stats.repaint();
      x1_hps2Stats.setModel(new DefaultTableModel());
      x1_hps2Stats.revalidate();
      x1_hps2Stats.repaint();
      x1_hps3Stats.setModel(new DefaultTableModel());
      x1_hps3Stats.revalidate();
      x1_hps3Stats.repaint();
      x1_dtpsTypes.setModel(new DefaultTableModel());
      x1_dtpsTypes.revalidate();
      x1_dtpsTypes.repaint();
      interrupts.setModel(new DefaultTableModel());
      interrupts.revalidate();
      interrupts.repaint();
      deaths.setModel(new DefaultTableModel());
      deaths.revalidate();
      deaths.repaint();
    }
    if(eventType==RRAMediator.EventCombatChanged) {     
      DefaultTableModel dtm=new DefaultTableModel();
      dpso.setModel(dtm);
      dtm.addColumn("");
      dtm.addColumn("Combat participant");
      dtm.addColumn("Damage done");
      dtm.addColumn("DPS");
      dtm.addColumn("DPSe");
      dtm.addColumn("Activity");
      Combat c=this.parser.getCombat((String)parameters.toArray()[0]);
      if(c==null) return;
      int marked=3;
      XYSeriesCollection dps_dataset=new XYSeriesCollection();
      for(Iterator<CombatParticipant> it=c.getSortedDPSParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        ((DefaultListModel)cParticipants.getModel()).addElement(cp.getName());
        dtm.addRow(new Object[]{(marked>0),cp.getName(),cp.getDpsRealTimeStats().getDamage(),cp.getDpsRealTimeStats().getDPS(c.getCombatDuration()),cp.getDpsRealTimeStats().getDPSe(),cp.getDpsRealTimeStats().getActivity(c.getCombatDuration())});
        if(marked>0)
          dps_dataset.addSeries(createDPSSeries(c,cp));
        marked--;
      }
      dpsoChart=ChartFactory.createXYLineChart("Real time DPS", "Seconds of combat", "DPS", dps_dataset, PlotOrientation.VERTICAL, true, true, false);
      dpsoChart.getXYPlot().setRenderer(new XYSplineRenderer());
      dpsoChartPanel=new ChartPanel(dpsoChart);
      dpsoChartPanel.setLayout(new BorderLayout());
      dpsoPanel.removeAll();
      dpsoPanel.add(dpsoChartPanel);
      dpsoChartPanel.revalidate();
      dpsoChartPanel.repaint();
      dpso.getColumnModel().getColumn(0).setMaxWidth(30);
      dpso.getColumnModel().getColumn(0).setCellRenderer(new CheckBoxCellRenderer());
      dpso.getColumnModel().getColumn(0).setCellEditor(new DPSCheckBoxCellEditor(c.getName(),this));
      dtm.fireTableDataChanged();
      dpso.revalidate();
      dpso.repaint();
     
      combatName.setText(c.getName());
      SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
      combatStart.setText(sdf.format(c.getCombatStart()));
      combatEnd.setText(sdf.format(c.getCombatEnd()));
      combatDuration.setText(Long.toString(c.getCombatDuration()));
     
      ((DefaultListModel)cParticipants.getModel()).removeAllElements();
      for(Iterator<CombatParticipant> it=c.getSortedParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        ((DefaultListModel)cParticipants.getModel()).addElement(cp.getName());
      }
      x1_dps1Stats.setModel(new DefaultTableModel());
      x1_dps1Stats.revalidate();
      x1_dps1Stats.repaint();
      x1_dps2Stats.setModel(new DefaultTableModel());
      x1_dps2Stats.revalidate();
      x1_dps2Stats.repaint();
      x1_dtps1Stats.setModel(new DefaultTableModel());
      x1_dtps1Stats.revalidate();
      x1_dtps1Stats.repaint();
      x1_dtps2Stats.setModel(new DefaultTableModel());
      x1_dtps2Stats.revalidate();
      x1_dtps2Stats.repaint();
      x1_hps1Stats.setModel(new DefaultTableModel());
      x1_hps1Stats.revalidate();
      x1_hps1Stats.repaint();
      x1_hps2Stats.setModel(new DefaultTableModel());
      x1_hps2Stats.revalidate();
      x1_hps2Stats.repaint();
      x1_hps3Stats.setModel(new DefaultTableModel());
      x1_hps3Stats.revalidate();
      x1_hps3Stats.repaint();
      x1_dtpsTypes.setModel(new DefaultTableModel());
      x1_dtpsTypes.revalidate();
      x1_dtpsTypes.repaint();
      interrupts.setModel(new DefaultTableModel());
      interrupts.revalidate();
      interrupts.repaint();
      deaths.setModel(new DefaultTableModel());
      deaths.revalidate();
      deaths.repaint();
      cParticipants.revalidate();
      cParticipants.repaint();     

      DefaultTableModel htm=new DefaultTableModel();
      hps.setModel(htm);
      htm.addColumn("");
      htm.addColumn("Combat participant");
      htm.addColumn("Healing done");
      htm.addColumn("Overhealing");
      htm.addColumn("HPS");
      htm.addColumn("HPSe");
      htm.addColumn("Activity");
      marked=3;
      XYSeriesCollection hps_dataset=new XYSeriesCollection();
      for(Iterator<CombatParticipant> it=c.getSortedHPSParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        htm.addRow(new Object[]{(marked>0),cp.getName(),cp.getHpsRealTimeStats().getHealingDone(),cp.getHpsRealTimeStats().getOverhealingDone(),cp.getHpsRealTimeStats().getHPS(c.getCombatDuration()),cp.getHpsRealTimeStats().getHPSe(),cp.getHpsRealTimeStats().getActivity(c.getCombatDuration())});
        if(marked>0)
          hps_dataset.addSeries(createHPSSeries(c,cp));
        marked--;
      }
      hpsChart=ChartFactory.createXYLineChart("Real time HPS", "Seconds of combat", "HPS", hps_dataset, PlotOrientation.VERTICAL, true, true, false);
      hpsChart.getXYPlot().setRenderer(new XYSplineRenderer());
      hpsChartPanel=new ChartPanel(hpsChart);
      hpsChartPanel.setLayout(new BorderLayout());
      hpsPanel.removeAll();
      hpsPanel.add(hpsChartPanel);
      hpsChartPanel.revalidate();
      hpsChartPanel.repaint();
      hps.getColumnModel().getColumn(0).setMaxWidth(30);
      hps.getColumnModel().getColumn(0).setCellRenderer(new CheckBoxCellRenderer());
      hps.getColumnModel().getColumn(0).setCellEditor(new HPSCheckBoxCellEditor(c.getName(),this));
      htm.fireTableDataChanged();
      hps.revalidate();
      hps.repaint();
     
      DefaultTableModel dttm=new DefaultTableModel();
      dpst.setModel(dttm);
      dttm.addColumn("");
      dttm.addColumn("Combat participant");
      dttm.addColumn("Damage taken");
      dttm.addColumn("DTPS");
      dttm.addColumn("DTPSe");
      dttm.addColumn("Activity");
      marked=3;
      XYSeriesCollection dtps_dataset=new XYSeriesCollection();
      for(Iterator<CombatParticipant> it=c.getSortedDTPSParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        dttm.addRow(new Object[]{(marked>0),cp.getName(),cp.getDtpsRealTimeStats().getDamage(),cp.getDtpsRealTimeStats().getDPS(c.getCombatDuration()),cp.getDtpsRealTimeStats().getDPSe(),cp.getDtpsRealTimeStats().getActivity(c.getCombatDuration())});
        if(marked>0)
          dtps_dataset.addSeries(createDTPSSeries(c,cp));
        marked--;
      }
      dpstChart=ChartFactory.createXYLineChart("Real time damage taken", "Seconds of combat", "DTPS", dtps_dataset, PlotOrientation.VERTICAL, true, true, false);
      dpstChart.getXYPlot().setRenderer(new XYSplineRenderer());
      dpstChartPanel=new ChartPanel(dpstChart);
      dpstChartPanel.setLayout(new BorderLayout());
      dpstPanel.removeAll();
      dpstPanel.add(dpstChartPanel);
      dpstChartPanel.revalidate();
      dpstChartPanel.repaint();
      dpst.getColumnModel().getColumn(0).setMaxWidth(30);
      dpst.getColumnModel().getColumn(0).setCellRenderer(new CheckBoxCellRenderer());
      dpst.getColumnModel().getColumn(0).setCellEditor(new DTPSCheckBoxCellEditor(c.getName(),this));
      dttm.fireTableDataChanged();
      dpst.revalidate();
      dpst.repaint();
    }
    if(eventType==RRAMediator.EventDPSCombatParticipantChange) {
      Combat c=this.parser.getCombat((String)parameters.toArray()[0]);
      for(Iterator<CombatParticipant> it=c.getSortedDPSParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        if(cp.getName().equalsIgnoreCase((String)parameters.toArray()[1])) {
          boolean select=((Boolean)parameters.toArray()[2]).booleanValue();
          XYSeriesCollection dataset=(XYSeriesCollection)dpsoChart.getXYPlot().getDataset();
          boolean exists=false;
          for(Iterator<XYSeries> it2=dataset.getSeries().iterator();it2.hasNext() && !exists;) {
            XYSeries xys=it2.next();
            if(xys.getKey().equals(cp.getName())) exists=true;
            if(!select && xys.getKey().equals(cp.getName())) {
              dataset.removeSeries(xys);
            }
          }         
          if(!exists && select) {
            dataset.addSeries(createDPSSeries(c,cp));
          }
        }
      }
      dpsoChart.fireChartChanged();
      dpsoChartPanel.revalidate();
      dpsoChartPanel.repaint();
    }
    if(eventType==RRAMediator.EventHPSCombatParticipantChange) {
      Combat c=this.parser.getCombat((String)parameters.toArray()[0]);
      for(Iterator<CombatParticipant> it=c.getSortedHPSParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        if(cp.getName().equalsIgnoreCase((String)parameters.toArray()[1])) {
          boolean select=((Boolean)parameters.toArray()[2]).booleanValue();
          XYSeriesCollection dataset=(XYSeriesCollection)hpsChart.getXYPlot().getDataset();
          boolean exists=false;
          for(Iterator<XYSeries> it2=dataset.getSeries().iterator();it2.hasNext() && !exists;) {
            XYSeries xys=it2.next();
            if(xys.getKey().equals(cp.getName())) exists=true;
            if(!select && xys.getKey().equals(cp.getName())) {
              dataset.removeSeries(xys);
            }
          }         
          if(!exists && select) {
            dataset.addSeries(createHPSSeries(c,cp));
          }
        }
      }
      hpsChart.fireChartChanged();
      hpsChartPanel.revalidate();
      hpsChartPanel.repaint();
    }
    if(eventType==RRAMediator.EventDTPSCombatParticipantChange) {
      Combat c=this.parser.getCombat((String)parameters.toArray()[0]);
      for(Iterator<CombatParticipant> it=c.getSortedDTPSParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        if(cp.getName().equalsIgnoreCase((String)parameters.toArray()[1])) {
          boolean select=((Boolean)parameters.toArray()[2]).booleanValue();
          XYSeriesCollection dataset=(XYSeriesCollection)dpstChart.getXYPlot().getDataset();
          boolean exists=false;
          for(Iterator<XYSeries> it2=dataset.getSeries().iterator();it2.hasNext() && !exists;) {
            XYSeries xys=it2.next();
            if(xys.getKey().equals(cp.getName())) exists=true;
            if(!select && xys.getKey().equals(cp.getName())) {
              dataset.removeSeries(xys);
            }
          }         
          if(!exists && select) {
            dataset.addSeries(createDTPSSeries(c,cp));
          }
        }
      }
      dpstChart.fireChartChanged();
      dpstChartPanel.revalidate();
      dpstChartPanel.repaint();
    }
    if(eventType==RRAMediator.EventNewCombat) {
      this.tmp=parameters;
      try {
        final Combat c=(Combat)tmp.toArray()[0];
        parser.getData().addCombatToAllStats(c);
        SwingUtilities.invokeAndWait(new Runnable() {
          @Override
          public void run() {
            ((DefaultListModel)cList.getModel()).addElement(c.getName());
          }
        });
      } catch (Exception e) {
        e.printStackTrace();
      }
      cList.revalidate();
      cList.repaint();

      DefaultTableModel dtm=new DefaultTableModel();
      allDPSO.setModel(dtm);
      dtm.addColumn("Participant");
      dtm.addColumn("Combats");
      dtm.addColumn("Duration of all combats");
      dtm.addColumn("Damage done");
      dtm.addColumn("DPS");
      for(Iterator<Participant> it=parser.getData().getDPSSortedParticipantList().iterator();it.hasNext();) {
        Participant p=it.next();
        dtm.addRow(new Object[]{p.getName(),p.getCombats(),p.getCombatDuration(),p.getDamageDone(),p.getDPS()});
      }
      dtm.fireTableDataChanged();
      allDPSO.revalidate();
      allDPSO.repaint();
     
      dtm=new DefaultTableModel();
      allHPS.setModel(dtm);
      dtm.addColumn("Participant");
      dtm.addColumn("Combats");
      dtm.addColumn("Duration of all combats");
      dtm.addColumn("Healing done");
      dtm.addColumn("HPS");
      for(Iterator<Participant> it=parser.getData().getHPSSortedParticipantList().iterator();it.hasNext();) {
        Participant p=it.next();
        dtm.addRow(new Object[]{p.getName(),p.getCombats(),p.getCombatDuration(),p.getHealingDone(),p.getHPS()});
      }
      dtm.fireTableDataChanged();
      allHPS.revalidate();
      allHPS.repaint();
     
      dtm=new DefaultTableModel();
      allDPST.setModel(dtm);
      dtm.addColumn("Participant");
      dtm.addColumn("Combats");
      dtm.addColumn("Duration of all combats");
      dtm.addColumn("Damage taken");
      dtm.addColumn("DTPS");
      for(Iterator<Participant> it=parser.getData().getDTPSSortedParticipantList().iterator();it.hasNext();) {
        Participant p=it.next();
        dtm.addRow(new Object[]{p.getName(),p.getCombats(),p.getCombatDuration(),p.getDamageTaken(),p.getDTPS()});
      }
      dtm.fireTableDataChanged();
      allDPST.revalidate();
      allDPST.repaint();
    }
    if(eventType==RRAMediator.EventCombatParticipantChanged) {
      Combat c=this.parser.getCombat((String)parameters.toArray()[0]);
      if(c==null) return;
      for(Iterator<CombatParticipant> it=c.getSortedDPSParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        if(cp.getName().equalsIgnoreCase((String)parameters.toArray()[1])) {
          // DPS Abilities
          DefaultTableModel tm=new DefaultTableModel();
          x1_dps1Stats.setModel(tm);
          tm.addColumn("Name");
          tm.addColumn("Hit");
          tm.addColumn("Crit");
          tm.addColumn("Miss");
          tm.addColumn("Dodge");
          tm.addColumn("Parry");
          tm.addColumn("Block");
          tm.addColumn("Absorb");
          tm.addColumn("Intercepted");
          for(Iterator<DPSStats> it2=cp.getDamageAbilityList().iterator();it2.hasNext();) {
            DPSStats xx=it2.next();
            tm.addRow(new Object[]{xx.getAbilityName(),
                xx.getAbilityDamage(DPSStats.OutcomeHit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeHit)+")",
                xx.getAbilityDamage(DPSStats.OutcomeCrit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeCrit)+")",
                xx.getOutcomeEventPercentages(DPSStats.OutcomeMiss),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeDodge),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeParry),
                xx.getAbilityDamage(DPSStats.OutcomeBlock)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeBlock)+")",
                xx.getAbilityDamage(DPSStats.OutcomeAbsorbed)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeAbsorbed)+")",
                xx.getAbilityDamage(DPSStats.OutcomeIntercepted)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeIntercepted)+")"});
          }
          tm.fireTableDataChanged();
          x1_dps1Stats.getColumnModel().getColumn(0).setMinWidth(150);
          x1_dps1Stats.getColumnModel().getColumn(1).setMinWidth(120);
          x1_dps1Stats.getColumnModel().getColumn(2).setMinWidth(120);
          x1_dps1Stats.getColumnModel().getColumn(3).setMinWidth(70);
          x1_dps1Stats.getColumnModel().getColumn(4).setMinWidth(70);
          x1_dps1Stats.getColumnModel().getColumn(5).setMinWidth(70);
          x1_dps1Stats.getColumnModel().getColumn(6).setMinWidth(120);
          x1_dps1Stats.getColumnModel().getColumn(7).setMinWidth(120);
          x1_dps1Stats.revalidate();
          x1_dps1Stats.repaint();
         
          tm=new DefaultTableModel();
          x1_dps2Stats.setModel(tm);
          tm.addColumn("Target");
          tm.addColumn("Hit");
          tm.addColumn("Crit");
          tm.addColumn("Miss");
          tm.addColumn("Dodge");
          tm.addColumn("Parry");
          tm.addColumn("Block");
          tm.addColumn("Absorb");
          tm.addColumn("Intercepted");
          for(Iterator<DPSStats> it3=cp.getDamageTargetList().iterator();it3.hasNext();) {
            DPSStats xx=it3.next();
            tm.addRow(new Object[]{xx.getAbilityName(),
                xx.getAbilityDamage(DPSStats.OutcomeHit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeHit)+")",
                xx.getAbilityDamage(DPSStats.OutcomeCrit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeCrit)+")",
                xx.getOutcomeEventPercentages(DPSStats.OutcomeMiss),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeDodge),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeParry),
                xx.getAbilityDamage(DPSStats.OutcomeBlock)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeBlock)+")",
                xx.getAbilityDamage(DPSStats.OutcomeAbsorbed)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeAbsorbed)+")",
                xx.getAbilityDamage(DPSStats.OutcomeIntercepted)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeIntercepted)+")"});
          }
          tm.fireTableDataChanged();
          x1_dps2Stats.getColumnModel().getColumn(0).setMinWidth(150);
          x1_dps2Stats.getColumnModel().getColumn(1).setMinWidth(120);
          x1_dps2Stats.getColumnModel().getColumn(2).setMinWidth(120);
          x1_dps2Stats.getColumnModel().getColumn(3).setMinWidth(70);
          x1_dps2Stats.getColumnModel().getColumn(4).setMinWidth(70);
          x1_dps2Stats.getColumnModel().getColumn(5).setMinWidth(70);
          x1_dps2Stats.getColumnModel().getColumn(6).setMinWidth(120);
          x1_dps2Stats.getColumnModel().getColumn(7).setMinWidth(120);
          x1_dps2Stats.revalidate();
          x1_dps2Stats.repaint();
                   
          tm=new DefaultTableModel();
          x1_dtps1Stats.setModel(tm);
          tm.addColumn("Ability");
          tm.addColumn("Hit");
          tm.addColumn("Crit");
          tm.addColumn("Miss");
          tm.addColumn("Dodge");
          tm.addColumn("Parry");
          tm.addColumn("Block");
          tm.addColumn("Absorb");
          tm.addColumn("Intercepted");
          for(Iterator<DPSStats> it3=cp.getDamageTakenAbilityList().iterator();it3.hasNext();) {
            DPSStats xx=it3.next();
            tm.addRow(new Object[]{xx.getAbilityName(),
                xx.getAbilityDamage(DPSStats.OutcomeHit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeHit)+")",
                xx.getAbilityDamage(DPSStats.OutcomeCrit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeCrit)+")",
                xx.getOutcomeEventPercentages(DPSStats.OutcomeMiss),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeDodge),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeParry),
                xx.getAbilityDamage(DPSStats.OutcomeBlock)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeBlock)+")",
                xx.getAbilityDamage(DPSStats.OutcomeAbsorbed)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeAbsorbed)+")",
                xx.getAbilityDamage(DPSStats.OutcomeIntercepted)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeIntercepted)+")"});
          }
          tm.fireTableDataChanged();
          x1_dtps1Stats.getColumnModel().getColumn(0).setMinWidth(150);
          x1_dtps1Stats.getColumnModel().getColumn(1).setMinWidth(120);
          x1_dtps1Stats.getColumnModel().getColumn(2).setMinWidth(120);
          x1_dtps1Stats.getColumnModel().getColumn(3).setMinWidth(70);
          x1_dtps1Stats.getColumnModel().getColumn(4).setMinWidth(70);
          x1_dtps1Stats.getColumnModel().getColumn(5).setMinWidth(70);
          x1_dtps1Stats.getColumnModel().getColumn(6).setMinWidth(120);
          x1_dtps1Stats.getColumnModel().getColumn(7).setMinWidth(120);
          x1_dtps1Stats.revalidate();
          x1_dtps1Stats.repaint();

          tm=new DefaultTableModel();
          x1_dtps2Stats.setModel(tm);
          tm.addColumn("Source");
          tm.addColumn("Hit");
          tm.addColumn("Crit");
          tm.addColumn("Miss");
          tm.addColumn("Dodge");
          tm.addColumn("Parry");
          tm.addColumn("Block");
          tm.addColumn("Absorb");
          tm.addColumn("Intercepted");
          for(Iterator<DPSStats> it3=cp.getDamageTakenTargetList().iterator();it3.hasNext();) {
            DPSStats xx=it3.next();
            tm.addRow(new Object[]{xx.getAbilityName(),
                xx.getAbilityDamage(DPSStats.OutcomeHit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeHit)+")",
                xx.getAbilityDamage(DPSStats.OutcomeCrit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeCrit)+")",
                xx.getOutcomeEventPercentages(DPSStats.OutcomeMiss),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeDodge),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeParry),
                xx.getAbilityDamage(DPSStats.OutcomeBlock)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeBlock)+")",
                xx.getAbilityDamage(DPSStats.OutcomeAbsorbed)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeAbsorbed)+")",
                xx.getAbilityDamage(DPSStats.OutcomeIntercepted)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeIntercepted)+")"});
          }
          tm.fireTableDataChanged();
          x1_dtps2Stats.getColumnModel().getColumn(0).setMinWidth(150);
          x1_dtps2Stats.getColumnModel().getColumn(1).setMinWidth(120);
          x1_dtps2Stats.getColumnModel().getColumn(2).setMinWidth(120);
          x1_dtps2Stats.getColumnModel().getColumn(3).setMinWidth(70);
          x1_dtps2Stats.getColumnModel().getColumn(4).setMinWidth(70);
          x1_dtps2Stats.getColumnModel().getColumn(5).setMinWidth(70);
          x1_dtps2Stats.getColumnModel().getColumn(6).setMinWidth(120);
          x1_dtps2Stats.getColumnModel().getColumn(7).setMinWidth(120);
          x1_dtps2Stats.revalidate();
          x1_dtps2Stats.repaint();
         

          tm=new DefaultTableModel();
          x1_dtpsTypes.setModel(tm);
          tm.addColumn("Damage type");
          tm.addColumn("Hit");
          tm.addColumn("Crit");
          tm.addColumn("Miss");
          tm.addColumn("Dodge");
          tm.addColumn("Parry");
          tm.addColumn("Block");
          tm.addColumn("Absorb");
          tm.addColumn("Intercepted");
          for(Iterator<DPSStats> it3=cp.getDamageTakenTypeList().iterator();it3.hasNext();) {
            DPSStats xx=it3.next();
            tm.addRow(new Object[]{xx.getAbilityName(),
                xx.getAbilityDamage(DPSStats.OutcomeHit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeHit)+")",
                xx.getAbilityDamage(DPSStats.OutcomeCrit)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeCrit)+")",
                xx.getOutcomeEventPercentages(DPSStats.OutcomeMiss),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeDodge),
                xx.getOutcomeEventPercentages(DPSStats.OutcomeParry),
                xx.getAbilityDamage(DPSStats.OutcomeBlock)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeBlock)+")",
                xx.getAbilityDamage(DPSStats.OutcomeAbsorbed)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeAbsorbed)+")",
                xx.getAbilityDamage(DPSStats.OutcomeIntercepted)+" ("+xx.getOutcomeEventPercentages(DPSStats.OutcomeIntercepted)+")"});
          }
          tm.fireTableDataChanged();
          x1_dtpsTypes.getColumnModel().getColumn(0).setMinWidth(150);
          x1_dtpsTypes.getColumnModel().getColumn(1).setMinWidth(120);
          x1_dtpsTypes.getColumnModel().getColumn(2).setMinWidth(120);
          x1_dtpsTypes.getColumnModel().getColumn(3).setMinWidth(70);
          x1_dtpsTypes.getColumnModel().getColumn(4).setMinWidth(70);
          x1_dtpsTypes.getColumnModel().getColumn(5).setMinWidth(70);
          x1_dtpsTypes.getColumnModel().getColumn(6).setMinWidth(120);
          x1_dtpsTypes.getColumnModel().getColumn(7).setMinWidth(120);
          x1_dtpsTypes.revalidate();
          x1_dtpsTypes.repaint();
         
          tm=new DefaultTableModel();
          x1_hps1Stats.setModel(tm);
          tm.addColumn("Ability");
          tm.addColumn("Healing");
          tm.addColumn("Overhealing");
          for(Iterator<HPSStats> it3=cp.getHealingAbilityList().iterator();it3.hasNext();) {
            HPSStats xx=it3.next();
            tm.addRow(new Object[]{xx.getAbilityName(),
                xx.getAbilityHealing()+" (crit "+xx.getHealingCritPercentage()+")",
                xx.getAbilityOverhealing()+" ("+xx.getOverhealingPercentage()+")"});
          }
          tm.fireTableDataChanged();
          x1_hps1Stats.revalidate();
          x1_hps1Stats.repaint();

          tm=new DefaultTableModel();
          x1_hps2Stats.setModel(tm);
          tm.addColumn("Target");
          tm.addColumn("Healing");
          tm.addColumn("Overhealing");
          for(Iterator<HPSStats> it3=cp.getHealingTargetList().iterator();it3.hasNext();) {
            HPSStats xx=it3.next();
            tm.addRow(new Object[]{xx.getAbilityName(),
                xx.getAbilityHealing()+" (crit "+xx.getHealingCritPercentage()+")",
                xx.getAbilityOverhealing()+" ("+xx.getOverhealingPercentage()+")"});
          }
          tm.fireTableDataChanged();
          x1_hps2Stats.revalidate();
          x1_hps2Stats.repaint();         

          x1_hps3Stats.setModel(new DefaultTableModel());
          x1_hps3Stats.revalidate();
          x1_hps3Stats.repaint();

          tm=new DefaultTableModel();
          interrupts.setModel(tm);
          tm.addColumn("Ability");
          tm.addColumn("Combat second");
          for(Iterator<InterruptStats> it3=cp.getInterruptList().iterator();it3.hasNext();) {
            InterruptStats xx=it3.next();
            long[] seconds=xx.getInterrupts();
            for(int i=0;i<seconds.length;i++)
              tm.addRow(new Object[]{xx.getAbilityName(),seconds[i]});
          }
          tm.fireTableDataChanged();
          interrupts.revalidate();
          interrupts.repaint()
         
          tm=new DefaultTableModel();
          deaths.setModel(tm);
          tm.addColumn("Killed by");
          tm.addColumn("Combat second");
          for(Iterator<DeathDetail> it3=cp.getDeathList().iterator();it3.hasNext();) {
            DeathDetail xx=it3.next();
            tm.addRow(new Object[]{xx.getKilledBy(),xx.getDiedAt()});
          }
          tm.fireTableDataChanged();
          deaths.revalidate();
          deaths.repaint()
        }
      }
    }
    if(eventType==RRAMediator.EventHealingTargetChanged) {
      Combat c=this.parser.getCombat((String)parameters.toArray()[0]);
      for(Iterator<CombatParticipant> it=c.getSortedDPSParticipantList().iterator();it.hasNext();) {
        CombatParticipant cp=it.next();
        if(cp.getName().equalsIgnoreCase((String)parameters.toArray()[1])) {
          for(Iterator<HPSStats> it3=cp.getHealingTargetList().iterator();it3.hasNext();) {
            HPSStats xx=it3.next();
            if(xx.getAbilityName().equalsIgnoreCase((String)parameters.toArray()[2])) {
              DefaultTableModel tm=new DefaultTableModel();
              x1_hps3Stats.setModel(tm);
              tm.addColumn("Ability");
              tm.addColumn("Healing");
              tm.addColumn("Overhealing");
              for(Iterator<HPSStats> it4=xx.getSubcategoryList().iterator();it4.hasNext();) {
                HPSStats yy=it4.next();
                tm.addRow(new Object[]{yy.getAbilityName(),
                    yy.getAbilityHealing()+" (crit "+yy.getHealingCritPercentage()+")",
                    yy.getAbilityOverhealing()+" ("+yy.getOverhealingPercentage()+")"});
              }
              tm.fireTableDataChanged();
              x1_hps3Stats.revalidate();
              x1_hps3Stats.repaint();
            }
          }
        }
      }
    }
  }
 
  private XYSeries createDPSSeries(Combat c,CombatParticipant cp) {
    XYSeries xys=new XYSeries(cp.getName());
    for(int i=0;i<c.getCombatDuration();i++) {
      boolean foundIt=false;
      for(Iterator<DPSTick> it=cp.getDpsRealTimeStats().getDPSTicks().iterator();it.hasNext() && !foundIt;) {
        DPSTick dpsTick=it.next();
        //System.out.println("Tick second="+dpsTick.getStartSecond());
        if(dpsTick.getStartSecond()<=i && (dpsTick.getStartSecond()+dpsTick.getSecondsDuration())>i) {
          //System.out.println("Graph>"+i+" tick="+dpsTick.getDamageDone()/dpsTick.getSecondsDuration());
          foundIt=true;
          xys.add(new XYDataItem(i, dpsTick.getDamageDone()/dpsTick.getSecondsDuration()))
        }
      }
      if(!foundIt)
        xys.add(new XYDataItem(i, 0));
    }
   
    return xys;
  }
 
  private XYSeries createHPSSeries(Combat c,CombatParticipant cp) {
    XYSeries xys=new XYSeries(cp.getName());
    for(int i=0;i<c.getCombatDuration();i++) {
      boolean foundIt=false;
      for(Iterator<HPSTick> it=cp.getHpsRealTimeStats().getHPSTicks().iterator();it.hasNext() && !foundIt;) {
        HPSTick hpsTick=it.next();
        if(hpsTick.getStartSecond()<=i && (hpsTick.getStartSecond()+hpsTick.getSecondsDuration())>i) {
          foundIt=true;
          xys.add(new XYDataItem(i, hpsTick.getHealingDone()/hpsTick.getSecondsDuration()))
        }
      }
      if(!foundIt)
        xys.add(new XYDataItem(i, 0));
    }
   
    return xys;
  }
 
  private XYSeries createDTPSSeries(Combat c,CombatParticipant cp) {
    XYSeries xys=new XYSeries(cp.getName());
    for(int i=0;i<c.getCombatDuration();i++) {
      boolean foundIt=false;
      for(Iterator<DPSTick> it=cp.getDtpsRealTimeStats().getDPSTicks().iterator();it.hasNext() && !foundIt;) {
        DPSTick dtpsTick=it.next();
        if(dtpsTick.getStartSecond()<=i && (dtpsTick.getStartSecond()+dtpsTick.getSecondsDuration())>i) {
          foundIt=true;
          xys.add(new XYDataItem(i, dtpsTick.getDamageDone()/dtpsTick.getSecondsDuration()))
        }
      }
      if(!foundIt)
        xys.add(new XYDataItem(i, 0));
    }
   
    return xys;
  }
}
TOP

Related Classes of rra.reader.RRAswgMediator

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.