ChartData.java
上传用户:mingda
上传日期:2017-06-20
资源大小:27691k
文件大小:20k
源码类别:

OA系统

开发平台:

Java

  1. // Decompiled by DJ v2.9.9.60 Copyright 2000 Atanas Neshkov  Date: 2002-12-03 18:42:21
  2. // Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
  3. // Decompiler options: packimports(3) 
  4. // Source File Name:   ChartData.java
  5. package cn.com.fcsoft.chart;
  6. import java.io.PrintStream;
  7. import java.io.Serializable;
  8. import java.util.Hashtable;
  9. // Referenced classes of package com.objectplanet.chart:
  10. //            ChartSample
  11. public class ChartData
  12.     implements Serializable
  13. {
  14.     public synchronized ChartSample getSample(Object obj)
  15.     {
  16.         return (ChartSample)sampleLookup.get(obj);
  17.     }
  18.     public synchronized int appendSample(int i, ChartSample chartsample, boolean flag)
  19.     {
  20.         if(i < 0 || i >= seriesCount)
  21.             throw new IllegalArgumentException("Illegal serie: " + i);
  22.         changedTime = System.currentTimeMillis();
  23.         int j = -1;
  24.         for(int k = 0; k < sampleCount; k++)
  25.         {
  26.             ChartSample chartsample1 = data[i][k];
  27.             if(chartsample1 != null && chartsample1.value != null)
  28.                 continue;
  29.             j = k;
  30.             break;
  31.         }
  32.         if(j >= 0)
  33.         {
  34.             setSample(i, j, chartsample);
  35.             return j;
  36.         }
  37.         if(flag)
  38.         {
  39.             int l = sampleCount;
  40.             setSampleCount(l + 1);
  41.             setSample(i, l, chartsample);
  42.             return l;
  43.         }
  44.         if(sampleCount > 0)
  45.         {
  46.             for(int i1 = 0; i1 < sampleLabels.length - 1; i1++)
  47.                 sampleLabels[i1] = sampleLabels[i1 + 1];
  48.             for(int j1 = 0; j1 < data[i].length - 1; j1++)
  49.                 data[i][j1] = data[i][j1 + 1];
  50.             setSample(i, sampleCount - 1, chartsample);
  51.             return sampleCount - 1;
  52.         } else
  53.         {
  54.             return -1;
  55.         }
  56.     }
  57.     public synchronized void setSample(int i, int j, ChartSample chartsample)
  58.     {
  59.         if(i < 0 || i >= data.length)
  60.             throw new IllegalArgumentException("Invalid series: " + i);
  61.         try
  62.         {
  63.             chartsample.setIndex(j);
  64.             chartsample.setSeries(i);
  65.             data[i][j] = chartsample;
  66.             if(chartsample.key == null)
  67.                 chartsample.key = i + "." + j;
  68.             sampleLookup.put(chartsample.key, chartsample);
  69.         }
  70.         catch(IndexOutOfBoundsException _ex)
  71.         {
  72.             throw new IllegalArgumentException("Invalid index: " + j);
  73.         }
  74.         catch(NullPointerException _ex)
  75.         {
  76.             System.out.println("Internal error: setSample(serie, index, sample) method");
  77.         }
  78.         setIndividualSampleLabel(i, j);
  79.         changedTime = System.currentTimeMillis();
  80.     }
  81.     public synchronized void setSeriesLabel(int i, String s)
  82.     {
  83.         try
  84.         {
  85.             seriesLabels[i] = s;
  86.             for(int j = 0; j < sampleCount; j++)
  87.                 setIndividualSampleLabel(i, j);
  88.         }
  89.         catch(IndexOutOfBoundsException _ex)
  90.         {
  91.             throw new IllegalArgumentException("Invalid series: " + i);
  92.         }
  93.         changedTime = System.currentTimeMillis();
  94.     }
  95.     public synchronized String getSeriesLabel(int i)
  96.     {
  97.         try
  98.         {
  99.             return seriesLabels[i];
  100.         }
  101.         catch(IndexOutOfBoundsException _ex)
  102.         {
  103.             throw new IllegalArgumentException("Invalid series: " + i);
  104.         }
  105.     }
  106.     private void setIndividualSampleLabel(int i, int j)
  107.     {
  108.         try
  109.         {
  110.             ChartSample chartsample = data[i][j];
  111.             if(chartsample != null)
  112.             {
  113.                 String s = seriesLabels[i];
  114.                 String s1 = sampleLabels[j];
  115.                 String s2 = "";
  116.                 if(s != null && s1 != null)
  117.                     s2 = s + " " + s1;
  118.                 else
  119.                 if(s != null)
  120.                     s2 = s;
  121.                 else
  122.                 if(s1 != null)
  123.                     s2 = s1;
  124.                 chartsample.setLabel(s2);
  125.             }
  126.         }
  127.         catch(Exception _ex)
  128.         {
  129.             System.out.println("Internal error: ChartData.setIndividualSampleLabel(serie, sample)");
  130.         }
  131.     }
  132.     public double getMaxValue(int i)
  133.     {
  134.         boolean flag = i >= 0 && i < seriesCount;
  135.         boolean flag1 = false;
  136.         double d = -1.7976931348623157E+308D;
  137.         if(flag)
  138.         {
  139.             for(int j = 0; j < sampleCount; j++)
  140.             {
  141.                 ChartSample chartsample = data[i][j];
  142.                 if(chartsample != null && chartsample.value != null && !chartsample.value.isNaN())
  143.                 {
  144.                     d = Math.max(d, chartsample.getFloatValue());
  145.                     flag1 = true;
  146.                 }
  147.             }
  148.         } else
  149.         {
  150.             for(int k = 0; k < seriesCount; k++)
  151.             {
  152.                 for(int l = 0; l < sampleCount; l++)
  153.                 {
  154.                     ChartSample chartsample1 = data[k][l];
  155.                     if(chartsample1 != null && chartsample1.value != null && !chartsample1.value.isNaN())
  156.                     {
  157.                         d = Math.max(d, chartsample1.getFloatValue());
  158.                         flag1 = true;
  159.                     }
  160.                 }
  161.             }
  162.         }
  163.         if(flag1)
  164.             return d;
  165.         else
  166.             return 0.0D;
  167.     }
  168.     public synchronized void setSampleValue(int i, int j, double d)
  169.     {
  170.         if(i < 0 || i >= data.length)
  171.             throw new IllegalArgumentException("Invalid series: " + i);
  172.         try
  173.         {
  174.             if(data[i][j] == null)
  175.             {
  176.                 data[i][j] = new ChartSample(j);
  177.                 data[i][j].setSeries(i);
  178.                 data[i][j].key = i + "." + j;
  179.                 sampleLookup.put(data[i][j].key, data[i][j]);
  180.             }
  181.             data[i][j].setValue(d);
  182.         }
  183.         catch(IndexOutOfBoundsException _ex)
  184.         {
  185.             throw new IllegalArgumentException("Invalid index: " + j);
  186.         }
  187.         catch(NullPointerException _ex)
  188.         {
  189.             System.out.println("Internal error: setSampleValue(serie, index, value) method");
  190.         }
  191.         setIndividualSampleLabel(i, j);
  192.         changedTime = System.currentTimeMillis();
  193.     }
  194.     public synchronized double getSampleValue(int i, int j)
  195.     {
  196.         if(i < 0 || i >= data.length)
  197.             throw new IllegalArgumentException("Invalid series: " + i);
  198.         if(data[i] == null)
  199.             return 0.0D;
  200.         if(j < 0 || j >= data[i].length)
  201.             throw new IllegalArgumentException("Invalid index: " + j);
  202.         if(data[i][j] != null)
  203.             return data[i][j].getFloatValue();
  204.         else
  205.             return 0.0D;
  206.     }
  207.     public synchronized int appendSampleValue(int i, double d, boolean flag)
  208.     {
  209.         if(i < 0 || i >= seriesCount)
  210.             throw new IllegalArgumentException("Illegal serie: " + i);
  211.         changedTime = System.currentTimeMillis();
  212.         int j = -1;
  213.         for(int k = 0; k < sampleCount; k++)
  214.         {
  215.             ChartSample chartsample = data[i][k];
  216.             if(chartsample != null && chartsample.value != null)
  217.                 continue;
  218.             j = k;
  219.             break;
  220.         }
  221.         if(j >= 0)
  222.         {
  223.             setSampleValue(i, j, d);
  224.             return j;
  225.         }
  226.         if(flag)
  227.         {
  228.             int l = sampleCount;
  229.             setSampleCount(l + 1);
  230.             setSampleValue(i, l, d);
  231.             return l;
  232.         }
  233.         if(sampleCount > 0)
  234.         {
  235.             double ad[] = getSampleValues(i);
  236.             for(int i1 = 0; i1 < ad.length - 1; i1++)
  237.                 ad[i1] = ad[i1 + 1];
  238.             ad[ad.length - 1] = d;
  239.             setSampleValues(i, ad);
  240.             return ad.length - 1;
  241.         } else
  242.         {
  243.             return -1;
  244.         }
  245.     }
  246.     public synchronized void setSamples(int i, ChartSample achartsample[])
  247.     {
  248.         if(i < 0 || i >= data.length)
  249.             throw new IllegalArgumentException("Invalid series: " + i);
  250.         if(data[i] == null)
  251.             data[i] = new ChartSample[sampleCount];
  252.         for(int j = 0; j < sampleCount; j++)
  253.             if(achartsample != null && j < achartsample.length && achartsample[j] != null)
  254.             {
  255.                 achartsample[j].setIndex(j);
  256.                 achartsample[j].setSeries(i);
  257.                 data[i][j] = achartsample[j];
  258.                 if(achartsample[j].key == null)
  259.                     achartsample[j].key = i + "." + j;
  260.                 sampleLookup.put(achartsample[j].key, achartsample[j]);
  261.             } else
  262.             {
  263.                 data[i][j] = null;
  264.             }
  265.         setIndividualSampleLabels();
  266.         changedTime = System.currentTimeMillis();
  267.     }
  268.     public synchronized ChartSample[] getSamples(int i)
  269.     {
  270.         try
  271.         {
  272.             return data[i];
  273.         }
  274.         catch(IndexOutOfBoundsException _ex)
  275.         {
  276.             throw new IllegalArgumentException("Invalid series: " + i);
  277.         }
  278.     }
  279.     public synchronized void setSampleValues(int i, double ad[])
  280.     {
  281.         if(i < 0 || i >= data.length)
  282.             throw new IllegalArgumentException("Invalid series: " + i);
  283.         if(data[i] == null)
  284.             data[i] = new ChartSample[sampleCount];
  285.         for(int j = 0; j < sampleCount; j++)
  286.         {
  287.             double d = 0.0D;
  288.             if(ad != null && j < ad.length)
  289.                 d = ad[j];
  290.             if(data[i][j] == null)
  291.             {
  292.                 data[i][j] = new ChartSample(j);
  293.                 data[i][j].setSeries(i);
  294.                 data[i][j].key = i + "." + j;
  295.                 sampleLookup.put(data[i][j].key, data[i][j]);
  296.             }
  297.             if(j < ad.length)
  298.                 data[i][j].setValue(d);
  299.             else
  300.                 data[i][j].value = null;
  301.         }
  302.         setIndividualSampleLabels();
  303.         changedTime = System.currentTimeMillis();
  304.     }
  305.     public synchronized double[] getSampleValues(int i)
  306.     {
  307.         try
  308.         {
  309.             ChartSample achartsample[] = data[i];
  310.             double ad[] = new double[achartsample.length];
  311.             for(int j = 0; j < achartsample.length; j++)
  312.                 if(achartsample[j] != null)
  313.                     ad[j] = achartsample[j].getFloatValue();
  314.             return ad;
  315.         }
  316.         catch(IndexOutOfBoundsException _ex)
  317.         {
  318.             throw new IllegalArgumentException("Invalid series: " + i);
  319.         }
  320.         catch(Exception _ex)
  321.         {
  322.             System.out.println("Internal error: ChartData.getSampleValues(serie)");
  323.         }
  324.         return null;
  325.     }
  326.     public synchronized void setSampleLabels(String as[])
  327.     {
  328.         for(int i = 0; i < sampleCount; i++)
  329.             if(as == null)
  330.                 sampleLabels[i] = null;
  331.             else
  332.             if(i < as.length)
  333.                 sampleLabels[i] = as[i];
  334.             else
  335.                 sampleLabels[i] = null;
  336.         setIndividualSampleLabels();
  337.         changedTime = System.currentTimeMillis();
  338.     }
  339.     public synchronized String[] getSampleLabels()
  340.     {
  341.         String as[] = new String[sampleCount];
  342.         System.arraycopy(sampleLabels, 0, as, 0, sampleLabels.length);
  343.         return as;
  344.     }
  345.     public boolean hasChangedSince(long l)
  346.     {
  347.         return changedTime >= l;
  348.     }
  349.     public synchronized void setSeriesCount(int i)
  350.     {
  351.         setDataCount(i, sampleCount);
  352.     }
  353.     public synchronized int getSeriesCount()
  354.     {
  355.         return seriesCount;
  356.     }
  357.     public double getMinValue(int i)
  358.     {
  359.         boolean flag = i >= 0 && i < seriesCount;
  360.         boolean flag1 = false;
  361.         double d = 1.7976931348623157E+308D;
  362.         if(flag)
  363.         {
  364.             for(int j = 0; j < sampleCount; j++)
  365.             {
  366.                 ChartSample chartsample = data[i][j];
  367.                 if(chartsample != null && chartsample.value != null && !chartsample.value.isNaN())
  368.                 {
  369.                     d = Math.min(d, chartsample.getFloatValue());
  370.                     flag1 = true;
  371.                 }
  372.             }
  373.         } else
  374.         {
  375.             for(int k = 0; k < seriesCount; k++)
  376.             {
  377.                 for(int l = 0; l < sampleCount; l++)
  378.                 {
  379.                     ChartSample chartsample1 = data[k][l];
  380.                     if(chartsample1 != null && chartsample1.value != null && !chartsample1.value.isNaN())
  381.                     {
  382.                         d = Math.min(d, chartsample1.getFloatValue());
  383.                         flag1 = true;
  384.                     }
  385.                 }
  386.             }
  387.         }
  388.         if(flag1)
  389.             return d;
  390.         else
  391.             return 0.0D;
  392.     }
  393.     private void setDataCount(int i, int j)
  394.     {
  395.         if(seriesCount == i && sampleCount == j)
  396.             return;
  397.         seriesCount = Math.max(0, i);
  398.         sampleCount = Math.max(0, j);
  399.         ChartSample achartsample[][] = new ChartSample[seriesCount][sampleCount];
  400.         for(int k = 0; k < achartsample.length; k++)
  401.             if(k < data.length)
  402.             {
  403.                 ChartSample achartsample1[] = achartsample[k];
  404.                 for(int i1 = 0; i1 < achartsample1.length; i1++)
  405.                     if(i1 < data[k].length)
  406.                         achartsample[k][i1] = data[k][i1];
  407.             }
  408.         data = achartsample;
  409.         String as[] = new String[seriesCount];
  410.         for(int l = 0; l < as.length; l++)
  411.             if(l < seriesLabels.length)
  412.                 as[l] = seriesLabels[l];
  413.         seriesLabels = as;
  414.         String as1[] = new String[sampleCount];
  415.         for(int j1 = 0; j1 < as1.length; j1++)
  416.             if(j1 < sampleLabels.length)
  417.                 as1[j1] = sampleLabels[j1];
  418.         sampleLabels = as1;
  419.         changedTime = System.currentTimeMillis();
  420.     }
  421.     public String toString()
  422.     {
  423.         return "ChartData " + seriesCount + " series, " + sampleCount + " samples";
  424.     }
  425.     public ChartData(int i, int j)
  426.     {
  427.         seriesCount = Math.max(0, i);
  428.         sampleCount = Math.max(0, j);
  429.         data = new ChartSample[seriesCount][];
  430.         for(int k = 0; k < data.length; k++)
  431.             data[k] = new ChartSample[sampleCount];
  432.         seriesLabels = new String[seriesCount];
  433.         sampleLabels = new String[sampleCount];
  434.         int l = Math.max(1, j) * Math.max(1, i);
  435.         sampleLookup = new Hashtable(l);
  436.         changedTime = System.currentTimeMillis();
  437.     }
  438.     public boolean isSelected(int i, int j)
  439.     {
  440.         if(i < -1 || i >= seriesCount)
  441.             throw new IllegalArgumentException("Invalid series index: " + i);
  442.         if(j < -1 || j >= sampleCount)
  443.             throw new IllegalArgumentException("Invalid sample index: " + j);
  444.         boolean flag = true;
  445.         if(i == -1 && j == -1)
  446.         {
  447.             for(int k = 0; k < seriesCount; k++)
  448.             {
  449.                 for(int j1 = 0; j1 < sampleCount; j1++)
  450.                     if(data[k] == null || data[k][j1] == null || !data[k][j1].isSelected())
  451.                         flag = false;
  452.             }
  453.         } else
  454.         if(j == -1)
  455.         {
  456.             for(int l = 0; l < sampleCount; l++)
  457.                 if(data[i] != null && data[i][l] != null && !data[i][l].isSelected())
  458.                     flag = false;
  459.         } else
  460.         if(i == -1)
  461.         {
  462.             for(int i1 = 0; i1 < seriesCount; i1++)
  463.                 if(data[i1] != null && data[i1][j] != null && !data[i1][j].isSelected())
  464.                     flag = false;
  465.         } else
  466.         if(data[i] == null || data[i][j] == null || !data[i][j].isSelected())
  467.             flag = false;
  468.         return flag;
  469.     }
  470.     public synchronized void setSampleCount(int i)
  471.     {
  472.         setDataCount(seriesCount, i);
  473.     }
  474.     public synchronized int getSampleCount()
  475.     {
  476.         return sampleCount;
  477.     }
  478.     public synchronized void setSampleLabel(int i, String s)
  479.     {
  480.         try
  481.         {
  482.             sampleLabels[i] = s;
  483.             for(int j = 0; j < seriesCount; j++)
  484.                 setIndividualSampleLabel(j, i);
  485.         }
  486.         catch(IndexOutOfBoundsException _ex)
  487.         {
  488.             throw new IllegalArgumentException("Invalid index: " + i);
  489.         }
  490.         changedTime = System.currentTimeMillis();
  491.     }
  492.     public synchronized String getSampleLabel(int i)
  493.     {
  494.         try
  495.         {
  496.             return sampleLabels[i];
  497.         }
  498.         catch(IndexOutOfBoundsException _ex)
  499.         {
  500.             throw new IllegalArgumentException("Invalid index: " + i);
  501.         }
  502.     }
  503.     public synchronized void setSeriesLabels(String as[])
  504.     {
  505.         for(int i = 0; i < seriesCount; i++)
  506.             if(as == null)
  507.                 seriesLabels[i] = null;
  508.             else
  509.             if(i < as.length)
  510.                 seriesLabels[i] = as[i];
  511.             else
  512.                 seriesLabels[i] = null;
  513.         setIndividualSampleLabels();
  514.         changedTime = System.currentTimeMillis();
  515.     }
  516.     public synchronized String[] getSeriesLabels()
  517.     {
  518.         String as[] = new String[seriesCount];
  519.         System.arraycopy(seriesLabels, 0, as, 0, as.length);
  520.         return as;
  521.     }
  522.     private void setIndividualSampleLabels()
  523.     {
  524.         for(int i = 0; i < seriesCount; i++)
  525.         {
  526.             ChartSample achartsample[] = data[i];
  527.             if(achartsample != null)
  528.             {
  529.                 for(int j = 0; j < achartsample.length; j++)
  530.                     if(achartsample[j] != null)
  531.                     {
  532.                         String s = seriesLabels[i];
  533.                         String s1 = sampleLabels[j];
  534.                         if(s != null && s1 != null)
  535.                             achartsample[j].setLabel(s + " " + s1);
  536.                         else
  537.                         if(s != null)
  538.                             achartsample[j].setLabel(s);
  539.                         else
  540.                         if(s1 != null)
  541.                             achartsample[j].setLabel(s1);
  542.                     }
  543.             }
  544.         }
  545.     }
  546.     public void setSelection(int i, int j, boolean flag)
  547.     {
  548.         setSelection(i, j, flag, false);
  549.     }
  550.     void setSelection(int i, int j, boolean flag, boolean flag1)
  551.     {
  552.         if(flag1)
  553.             setSelection(false);
  554.         if(i == -1 && j == -1)
  555.         {
  556.             for(int k = 0; k < seriesCount; k++)
  557.             {
  558.                 for(int j1 = 0; j1 < sampleCount; j1++)
  559.                     if(data[k] != null && data[k][j1] != null)
  560.                         data[k][j1].setSelection(flag);
  561.             }
  562.         } else
  563.         if(i == -1)
  564.         {
  565.             for(int l = 0; l < sampleCount; l++)
  566.                 if(data[l] != null && j >= 0 && j < data[l].length && data[l][j] != null)
  567.                     data[l][j].setSelection(flag);
  568.         } else
  569.         if(j == -1)
  570.         {
  571.             for(int i1 = 0; i1 < sampleCount; i1++)
  572.                 if(i >= 0 && i < data.length && data[i] != null && data[i][i1] != null)
  573.                     data[i][i1].setSelection(flag);
  574.         } else
  575.         if(data != null && i >= 0 && i < data.length && data[i] != null && j >= 0 && j < data[i].length)
  576.             data[i][j].setSelection(flag);
  577.         changedTime = System.currentTimeMillis();
  578.     }
  579.     private void setSelection(boolean flag)
  580.     {
  581.         for(int i = 0; i < seriesCount; i++)
  582.         {
  583.             for(int j = 0; j < sampleCount; j++)
  584.                 if(data[i] != null && data[i][j] != null)
  585.                     data[i][j].setSelection(flag);
  586.         }
  587.         changedTime = System.currentTimeMillis();
  588.     }
  589.     public synchronized ChartSample getSample(int i, int j)
  590.     {
  591.         if(i < 0 || i >= data.length)
  592.             throw new IllegalArgumentException("Invalid series: " + i);
  593.         try
  594.         {
  595.             return data[i][j];
  596.         }
  597.         catch(IndexOutOfBoundsException _ex)
  598.         {
  599.             throw new IllegalArgumentException("Invalid index: " + j);
  600.         }
  601.         catch(NullPointerException _ex)
  602.         {
  603.             System.out.println("Internal error: getSample(serie, index");
  604.         }
  605.         return null;
  606.     }
  607.     private ChartSample data[][];
  608.     private Hashtable sampleLookup;
  609.     private String seriesLabels[];
  610.     private String sampleLabels[];
  611.     private int seriesCount;
  612.     private int sampleCount;
  613.     private long changedTime;
  614. }