Package ar.com.fdvs.dj.domain.entities.columns

Source Code of ar.com.fdvs.dj.domain.entities.columns.PercentageColumn

package ar.com.fdvs.dj.domain.entities.columns;

import ar.com.fdvs.dj.core.CoreException;
import ar.com.fdvs.dj.domain.DJCalculation;
import ar.com.fdvs.dj.domain.entities.DJGroup;
import ar.com.fdvs.dj.domain.entities.Entity;

/**
* This column shows a percentage relative to another column.
*
* @author mamana and Ricardo Mariaca
*
*/
public class PercentageColumn extends AbstractColumn {
  private static final long serialVersionUID = Entity.SERIAL_VERSION_UID;
  private PropertyColumn percentageColumn;
//  private DJGroup group;

  public String getTextForExpression() {
    throw new CoreException("invalid operation on PercentageColumn");
//    return "new Double((" + getPercentageColumn().getTextForExpression() + ").doubleValue() / $V{"  + getGroupVariableName() + "}.doubleValue())";
  }
 
  public String getTextForExpression(DJGroup group) {
    return "new Double((" + getPercentageColumn().getTextForExpression() + ").doubleValue() / $V{"  + getGroupVariableName(group) + "}.doubleValue())";
 

  /**
   * Returns the formula for the percentage
   * @param group
   * @param type
   * @return
   */
  public String getTextForExpression(DJGroup group, DJGroup childGroup, String type) {
    return "new Double( $V{" + getGroupVariableName(childGroup) + "}.doubleValue() / $V{"  + getGroupVariableName(type,group.getColumnToGroupBy().getColumnProperty().getProperty()) + "}.doubleValue())";
 

  public String getValueClassNameForExpression() {
    return Number.class.getName();
  }

  public String getGroupVariableName(String type, String columnToGroupByProperty) {
    return "variable-" + type + "_" + columnToGroupByProperty + "_" + getPercentageColumn().getColumnProperty().getProperty() + "_percentage";
  }

  public String getVariableClassName(DJCalculation op) {
    if (op == DJCalculation.COUNT || op == DJCalculation.DISTINCT_COUNT)
      return Long.class.getName();
    else
      return Number.class.getName();
  }

  public String getInitialExpression(DJCalculation op) {
    return "new java.lang.Long(\"0\")";
  }

  /**
   * The group which the variable will be inside (mostly for reset)
   * @param group (may be null)
   * @return
   */
  public String getGroupVariableName(DJGroup group) {
    String columnToGroupByProperty = null;
    //if (group != null)
      columnToGroupByProperty = group.getColumnToGroupBy().getColumnProperty().getProperty();
    //else
      //columnToGroupByProperty = "global";
    return "variable-" + columnToGroupByProperty + "_" + getPercentageColumn().getColumnProperty().getProperty() + "_percentage";
  }
 
  public void setPercentageColumn(PropertyColumn percentageColumn) {
    this.percentageColumn = percentageColumn;
  }

  public PropertyColumn getPercentageColumn() {
    return percentageColumn;
  }

//  public void setGroup(DJGroup group) {
//    this.group = group;
//  }
//
//  public DJGroup getGroup() {
//    return group;
//  }
}
TOP

Related Classes of ar.com.fdvs.dj.domain.entities.columns.PercentageColumn

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.