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

Source Code of org.pentaho.reporting.engine.classic.demo.ancient.demo.cards.SelectCardFunction

/*
* 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.cards;

import java.io.Serializable;

import org.pentaho.reporting.engine.classic.core.Band;
import org.pentaho.reporting.engine.classic.core.Element;
import org.pentaho.reporting.engine.classic.core.event.ReportEvent;
import org.pentaho.reporting.engine.classic.core.function.AbstractFunction;

/**
* The SelectCardFunction defines the visiblity of the card bands depending on the current card type.
* <p/>
* Valid property names are: <ul> <li>Account <li>Admin <li>User <li>Prepaid <li>Free <li>Empty </ul>
*
* @author Thomas Morgner.
*/
public class SelectCardFunction extends AbstractFunction implements Serializable
{
  private String baseCard;
  private String field;
  private String account;
  private String admin;
  private String user;
  private String prepaid;
  private String free;
  private String empty;

  /**
   * Default constructor.
   */
  public SelectCardFunction()
  {
  }

  /**
   * Hides all bands, which are invalid for the current card type. A band declares its validity by having the same
   * element name as the card type name.
   *
   * @param band the band that should be evaluated
   */
  private void selectBand(final Band band)
  {
    CardType type = (CardType) getDataRow().get(getField());
    if (type == null)
    {
      type = CardType.EMPTY;
    }

    final String bandName = getBandForCardType(type);

    // if the special type empty is active, then everything will be hidden ...
    if (type == CardType.EMPTY)
    {
      band.setVisible(false);
    }
    else
    {
      band.setVisible(true);

      final Element[] elements = band.getElementArray();
      for (int i = 0; i < elements.length; i++)
      {
        if (elements[i] instanceof Band)
        {
          final Element e = elements[i];
          e.setVisible(e.getName().equals(bandName));
        }
      }
    }
  }

  /**
   * Receives notification that a row of data is being processed.
   *
   * @param event the event.
   */
  public void itemsAdvanced(final ReportEvent event)
  {
    final Element[] elements = event.getReport().getItemBand().getElementArray();
    final String rootName = getBaseCard();
    // the itemband contains several cards, every card is contained in a single band.
    for (int i = 0; i < elements.length; i++)
    {
      if (elements[i] instanceof Band && elements[i].getName().equals(rootName))
      {
        selectBand((Band) elements[i]);
      }
    }
  }

  /**
   * Return the current expression value. <P> The value depends (obviously) on the expression implementation.
   *
   * @return the value of the function.
   */
  public Object getValue()
  {
    return null;
  }

  public String getBaseCard()
  {
    return baseCard;
  }

  public void setBaseCard(String baseCard)
  {
    this.baseCard = baseCard;
  }

  public String getField()
  {
    return field;
  }

  public void setField(String field)
  {
    this.field = field;
  }

  public String getAccount()
  {
    return account;
  }

  public void setAccount(String account)
  {
    this.account = account;
  }

  public String getAdmin()
  {
    return admin;
  }

  public void setAdmin(String admin)
  {
    this.admin = admin;
  }

  public String getUser()
  {
    return user;
  }

  public void setUser(String user)
  {
    this.user = user;
  }

  public String getPrepaid()
  {
    return prepaid;
  }

  public void setPrepaid(String prepaid)
  {
    this.prepaid = prepaid;
  }

  public String getFree()
  {
    return free;
  }

  public void setFree(String free)
  {
    this.free = free;
  }

  public String getEmpty()
  {
    return empty;
  }

  public void setEmpty(String empty)
  {
    this.empty = empty;
  }

  protected String getBandForCardType(CardType ct)
  {
    if (CardType.ACCOUNT == ct)
    {
      return getAccount();
    }
    if (CardType.ADMIN == ct)
    {
      return getAdmin();
    }
    if (CardType.FREE == ct)
    {
      return getFree();
    }
    if (CardType.PREPAID == ct)
    {
      return getPrepaid();
    }
    if (CardType.USER == ct)
    {
      return getUser();
    }
    return getFree();
  }
}
TOP

Related Classes of org.pentaho.reporting.engine.classic.demo.ancient.demo.cards.SelectCardFunction

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.