Package org.pentaho.reporting.engine.classic.demo.ancient.demo.huge

Source Code of org.pentaho.reporting.engine.classic.demo.ancient.demo.huge.HugeLetterAndColorTableModel

/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program 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.
*
* Copyright (c) 2001 - 2009 Object Refinery Ltd, Pentaho Corporation and Contributors.  All rights reserved.
*/

package org.pentaho.reporting.engine.classic.demo.ancient.demo.huge;

import java.awt.Color;
import java.util.TreeMap;
import javax.swing.table.AbstractTableModel;

/**
* A sample data source for the JFreeReport Demo Application.
*
* @author Thomas Morgner
*/
public class HugeLetterAndColorTableModel extends AbstractTableModel
{
  private TreeMap colors;
  private String[] colorNames;
  private int rowCount;

  /**
   * Default constructor - builds a sample data source.
   */
  public HugeLetterAndColorTableModel()
  {
    colors = new TreeMap();
    colors.put("AliceBlue", new Color(0xF0F8FF));
    colors.put("AntiqueWhite", new Color(0xFAEBD7));
    colors.put("Aqua", new Color(0x00FFFF));
    colors.put("Aquamarine", new Color(0x7FFFD4));
    colors.put("Azure", new Color(0xF0FFFF));
    colors.put("Beige", new Color(0xF5F5DC));
    colors.put("Bisque", new Color(0xFFE4C4));
    colors.put("Black", new Color(0x000000));
    colors.put("BlanchedAlmond", new Color(0xFFEBCD));
    colors.put("Blue", new Color(0x0000FF));
    colors.put("BlueViolet", new Color(0x8A2BE2));
    colors.put("Brown", new Color(0xA52A2A));
    colors.put("BurlyWood", new Color(0xDEB887));
    colors.put("CadetBlue", new Color(0x5F9EA0));
    colors.put("Chartreuse", new Color(0x7FFF00));
    colors.put("Chocolate", new Color(0xD2691E));
    colors.put("Coral", new Color(0xFF7F50));
    colors.put("CornflowerBlue", new Color(0x6495ED));
    colors.put("Cornsilk", new Color(0xFFF8DC));
    colors.put("Crimson", new Color(0xDC143C));
    colors.put("Cyan", new Color(0x00FFFF));
    colors.put("DarkBlue", new Color(0x00008B));
    colors.put("DarkCyan", new Color(0x008B8B));
    colors.put("DarkGoldenRod", new Color(0xB8860B));
    colors.put("DarkGray", new Color(0xA9A9A9));
    colors.put("DarkGreen", new Color(0x006400));
    colors.put("DarkKhaki", new Color(0xBDB76B));
    colors.put("DarkMagenta", new Color(0x8B008B));
    colors.put("DarkOliveGreen", new Color(0x556B2F));
    colors.put("Darkorange", new Color(0xFF8C00));
    colors.put("DarkOrchid", new Color(0x9932CC));
    colors.put("DarkRed", new Color(0x8B0000));
    colors.put("DarkSalmon", new Color(0xE9967A));
    colors.put("DarkSeaGreen", new Color(0x8FBC8F));
    colors.put("DarkSlateBlue", new Color(0x483D8B));
    colors.put("DarkSlateGray", new Color(0x2F4F4F));
    colors.put("DarkTurquoise", new Color(0x00CED1));
    colors.put("DarkViolet", new Color(0x9400D3));
    colors.put("DeepPink", new Color(0xFF1493));
    colors.put("DeepSkyBlue", new Color(0x00BFFF));
    colors.put("DimGray", new Color(0x696969));
    colors.put("DodgerBlue", new Color(0x1E90FF));
    colors.put("Feldspar", new Color(0xD19275));
    colors.put("FireBrick", new Color(0xB22222));
    colors.put("FloralWhite", new Color(0xFFFAF0));
    colors.put("ForestGreen", new Color(0x228B22));
    colors.put("Fuchsia", new Color(0xFF00FF));
    colors.put("Gainsboro", new Color(0xDCDCDC));
    colors.put("GhostWhite", new Color(0xF8F8FF));
    colors.put("Gold", new Color(0xFFD700));
    colors.put("GoldenRod", new Color(0xDAA520));
    colors.put("Gray", new Color(0x808080));
    colors.put("Green", new Color(0x008000));
    colors.put("GreenYellow", new Color(0xADFF2F));
    colors.put("HoneyDew", new Color(0xF0FFF0));
    colors.put("HotPink", new Color(0xFF69B4));
    colors.put("IndianRed", new Color(0xCD5C5C));
    colors.put("Indigo", new Color(0x4B0082));
    colors.put("Ivory", new Color(0xFFFFF0));
    colors.put("Khaki", new Color(0xF0E68C));
    colors.put("Lavender", new Color(0xE6E6FA));
    colors.put("LavenderBlush", new Color(0xFFF0F5));
    colors.put("LawnGreen", new Color(0x7CFC00));
    colors.put("LemonChiffon", new Color(0xFFFACD));
    colors.put("LightBlue", new Color(0xADD8E6));
    colors.put("LightCoral", new Color(0xF08080));
    colors.put("LightCyan", new Color(0xE0FFFF));
    colors.put("LightGoldenRodYellow", new Color(0xFAFAD2));
    colors.put("LightGrey", new Color(0xD3D3D3));
    colors.put("LightGreen", new Color(0x90EE90));
    colors.put("LightPink", new Color(0xFFB6C1));
    colors.put("LightSalmon", new Color(0xFFA07A));
    colors.put("LightSeaGreen", new Color(0x20B2AA));
    colors.put("LightSkyBlue", new Color(0x87CEFA));
    colors.put("LightSlateBlue", new Color(0x8470FF));
    colors.put("LightSlateGray", new Color(0x778899));
    colors.put("LightSteelBlue", new Color(0xB0C4DE));
    colors.put("LightYellow", new Color(0xFFFFE0));
    colors.put("Lime", new Color(0x00FF00));
    colors.put("LimeGreen", new Color(0x32CD32));
    colors.put("Linen", new Color(0xFAF0E6));
    colors.put("Magenta", new Color(0xFF00FF));
    colors.put("Maroon", new Color(0x800000));
    colors.put("MediumAquaMarine", new Color(0x66CDAA));
    colors.put("MediumBlue", new Color(0x0000CD));
    colors.put("MediumOrchid", new Color(0xBA55D3));
    colors.put("MediumPurple", new Color(0x9370D8));
    colors.put("MediumSeaGreen", new Color(0x3CB371));
    colors.put("MediumSlateBlue", new Color(0x7B68EE));
    colors.put("MediumSpringGreen", new Color(0x00FA9A));
    colors.put("MediumTurquoise", new Color(0x48D1CC));
    colors.put("MediumVioletRed", new Color(0xC71585));
    colors.put("MidnightBlue", new Color(0x191970));
    colors.put("MintCream", new Color(0xF5FFFA));
    colors.put("MistyRose", new Color(0xFFE4E1));
    colors.put("Moccasin", new Color(0xFFE4B5));
    colors.put("NavajoWhite", new Color(0xFFDEAD));
    colors.put("Navy", new Color(0x000080));
    colors.put("OldLace", new Color(0xFDF5E6));
    colors.put("Olive", new Color(0x808000));
    colors.put("OliveDrab", new Color(0x6B8E23));
    colors.put("Orange", new Color(0xFFA500));
    colors.put("OrangeRed", new Color(0xFF4500));
    colors.put("Orchid", new Color(0xDA70D6));
    colors.put("PaleGoldenRod", new Color(0xEEE8AA));
    colors.put("PaleGreen", new Color(0x98FB98));
    colors.put("PaleTurquoise", new Color(0xAFEEEE));
    colors.put("PaleVioletRed", new Color(0xD87093));
    colors.put("PapayaWhip", new Color(0xFFEFD5));
    colors.put("PeachPuff", new Color(0xFFDAB9));
    colors.put("Peru", new Color(0xCD853F));
    colors.put("Pink", new Color(0xFFC0CB));
    colors.put("Plum", new Color(0xDDA0DD));
    colors.put("PowderBlue", new Color(0xB0E0E6));
    colors.put("Purple", new Color(0x800080));
    colors.put("Red", new Color(0xFF0000));
    colors.put("RosyBrown", new Color(0xBC8F8F));
    colors.put("RoyalBlue", new Color(0x4169E1));
    colors.put("SaddleBrown", new Color(0x8B4513));
    colors.put("Salmon", new Color(0xFA8072));
    colors.put("SandyBrown", new Color(0xF4A460));
    colors.put("SeaGreen", new Color(0x2E8B57));
    colors.put("SeaShell", new Color(0xFFF5EE));
    colors.put("Sienna", new Color(0xA0522D));
    colors.put("Silver", new Color(0xC0C0C0));
    colors.put("SkyBlue", new Color(0x87CEEB));
    colors.put("SlateBlue", new Color(0x6A5ACD));
    colors.put("SlateGray", new Color(0x708090));
    colors.put("Snow", new Color(0xFFFAFA));
    colors.put("SpringGreen", new Color(0x00FF7F));
    colors.put("SteelBlue", new Color(0x4682B4));
    colors.put("Tan", new Color(0xD2B48C));
    colors.put("Teal", new Color(0x008080));
    colors.put("Thistle", new Color(0xD8BFD8));
    colors.put("Tomato", new Color(0xFF6347));
    colors.put("Turquoise", new Color(0x40E0D0));
    colors.put("Violet", new Color(0xEE82EE));
    colors.put("VioletRed", new Color(0xD02090));
    colors.put("Wheat", new Color(0xF5DEB3));
    colors.put("White", new Color(0xFFFFFF));
    colors.put("WhiteSmoke", new Color(0xF5F5F5));
    colors.put("Yellow", new Color(0xFFFF00));
    colors.put("YellowGreen", new Color(0x9ACD32));

    colorNames = (String[]) colors.keySet().toArray(new String[colors.size()]);

    rowCount = 200000;
  }


  /**
   * Returns the number of rows in the table model.
   *
   * @return the row count.
   */
  public int getRowCount()
  {
    return rowCount;
  }

  public void setRowCount(final int rowCount)
  {
    if (rowCount < 0)
    {
      throw new IllegalArgumentException();
    }
    this.rowCount = rowCount;
  }

  /**
   * Returns the number of columns in the table model.
   *
   * @return the column count.
   */
  public int getColumnCount()
  {
    return 6;
  }

  /**
   * Returns the class of the data in the specified column.
   *
   * @param column the column (zero-based index).
   * @return the column class.
   */
  public Class getColumnClass(final int column)
  {
    if (column == 3)
    {
      return Integer.class;
    }
    else if (column == 4)
    {
      return Double.class;
    }
    else if (column == 5)
    {
      return Color.class;
    }
    else
    {
      return String.class;
    }
  }

  /**
   * Returns the name of the specified column.
   *
   * @param column the column (zero-based index).
   * @return the column name.
   */
  public String getColumnName(final int column)
  {
    if (column == 0)
    {
      return "Name";
    }
    else if (column == 1)
    {
      return "Color";
    }
    else if (column == 2)
    {
      return "Letter";
    }
    else if (column == 3)
    {
      return "Integer";
    }
    else if (column == 4)
    {
      return "Double";
    }
    else if (column == 5)
    {
      return "ColorObject";
    }
    else
    {
      return null;
    }
  }

  /**
   * Returns the data value at the specified row and column.
   *
   * @param row    the row index (zero based).
   * @param column the column index (zero based).
   * @return the value.
   */
  public Object getValueAt(final int row, final int column)
  {
    switch (column)
    {
      case 0:
        return convertToEnglishNumber(row);
      case 1:
        return computeColorName(row);
      case 2:
        return computeLetter(row);
      case 3:
        return new Integer(1);
      case 4:
        return new Double(1.1);
      case 5:
        return colors.get(computeColorName(row));
      default:
        throw new IllegalArgumentException("Unexcpected column.");
    }
  }

  private String computeLetter(final int row)
  {
    // a new char every 100 rows, and we have 24 chars.
    final int idx = (row / 100) % 24;
    return "" + (char) ('A' + idx);
  }

  private String computeColorName(final int row)
  {
    // a new color every 1000 rows, and we have ?? colors in totoal.
    final int idx = (row / 1000) % colorNames.length;
    return colorNames[idx];
  }

  private static final String[] ONES_NAMES = {
      " one", " two", " three", " four", " five",
      " six", " seven", " eight", " nine", " ten",
      " eleven", " twelve", " thirteen", " fourteen",
      " fifteen", " sixteen", " seventeen",
      " eighteen", " nineteen"
  };

  private static final String[] TENS_NAMES = {
      " twenty", " thirty", " forty", " fifty",
      " sixty", " seventy", " eighty", " ninety"
  };
  //
  // so quintillions is as big as it gets. The
  // program would automatically handle larger
  // numbers if this array were extended.
  //
  private static final String[] GROUPS = {
      "",
      " thousand",
      " million",
      " billion",
      " trillion",
      " quadrillion",
      " quintillion"
  };

  private String convertToEnglishNumber(long n)
  {

    final StringBuffer result = new StringBuffer();

    // Go through the number one group at a time.
    for (int i = GROUPS.length - 1; i >= 0; i--)
    {

      // Is the number as big as this group?

      final long cutoff = (long) Math.pow(10.0, (i * 3.0));

      if (n >= cutoff)
      {

        int thisPart = (int) (n / cutoff);

        // Use the ONES_NAMES[] array for both the
        // hundreds and the ONES_NAMES digit. Note
        // that TENS_NAMES[] starts at "twenty".
        if (thisPart >= 100)
        {
          result.append(ONES_NAMES[(thisPart / 100) - 1]);
          result.append(" hundred");
          thisPart = thisPart % 100;
        }
        if (thisPart >= 20)
        {
          result.append(TENS_NAMES[(thisPart / 10) - 2]);
          thisPart = thisPart % 10;
        }
        if (thisPart >= 1)
        {
          result.append(ONES_NAMES[thisPart - 1]);
        }

        result.append(GROUPS[i]);

        n = n % cutoff;

      }
    }

    if (result.length() == 0)
    {
      return "zero";
    }
    else
    {
      // remove initial space
      return result.substring(1);
    }
  }

}
TOP

Related Classes of org.pentaho.reporting.engine.classic.demo.ancient.demo.huge.HugeLetterAndColorTableModel

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.