net.sf.dynamicreports.report.builder.column.TextColumnBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dynamicreports-core Show documentation
Show all versions of dynamicreports-core Show documentation
DynamicReports is an open source Java reporting library based on JasperReports. It allows to create dynamic report designs and it doesn't need a visual report designer.
You can very quickly create reports and produce documents that can be displayed, printed or exported into many popular formats such as PDF, Excel, Word and others.
/**
* DynamicReports - Free Java reporting library for creating reports dynamically
*
* Copyright (C) 2010 - 2016 Ricardo Mariaca
* http://www.dynamicreports.org
*
* This file is part of DynamicReports.
*
* DynamicReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DynamicReports 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.
*
* You should have received a copy of the GNU Lesser General Public License
* along with DynamicReports. If not, see .
*/
package net.sf.dynamicreports.report.builder.column;
import static net.sf.dynamicreports.report.builder.DynamicReports.*;
import java.math.BigDecimal;
import net.sf.dynamicreports.report.builder.FieldBuilder;
import net.sf.dynamicreports.report.builder.expression.AddExpression;
import net.sf.dynamicreports.report.builder.expression.DivideExpression;
import net.sf.dynamicreports.report.builder.expression.Expressions;
import net.sf.dynamicreports.report.builder.expression.MultiplyExpression;
import net.sf.dynamicreports.report.builder.expression.SubtractExpression;
import net.sf.dynamicreports.report.builder.expression.ValueExpression;
import net.sf.dynamicreports.report.constant.Constants;
import net.sf.dynamicreports.report.definition.DRIValue;
import net.sf.dynamicreports.report.definition.expression.DRIExpression;
import org.apache.commons.lang3.Validate;
/**
* It is used to show values from the data source.
*
* @author Ricardo Mariaca ([email protected])
*/
public class TextColumnBuilder extends ValueColumnBuilder, T> implements DRIValue {
private static final long serialVersionUID = Constants.SERIAL_VERSION_UID;
protected TextColumnBuilder(FieldBuilder field) {
Validate.notNull(field, "field must not be null");
setValueExpression(field.getField());
}
protected TextColumnBuilder(DRIExpression valueExpression) {
setValueExpression(valueExpression);
}
//add
/**
* Creates a new column by adding a column value to this column instance.
*
* @param column the column builder
* @return a column builder
*/
@SuppressWarnings("unchecked")
public TextColumnBuilder add(TextColumnBuilder column) {
Validate.isTrue(Number.class.isAssignableFrom(getObject().getValueClass()), "Only Number column can multiply");
DRIExpression value1Expression = (DRIExpression) this.getComponent().getValueExpression();
DRIExpression value2Expression = column.getComponent().getValueExpression();
AddExpression exp = new AddExpression(value1Expression, value2Expression);
return new TextColumnBuilder(exp).setDataType(type.bigDecimalType());
}
/**
* Creates a new column by adding a value to this column instance.
*
* @param number the value
* @return a column builder
*/
@SuppressWarnings("unchecked")
public TextColumnBuilder add(Number number) {
Validate.isTrue(Number.class.isAssignableFrom(getObject().getValueClass()), "Only Number column can multiply");
DRIExpression value1Expression = (DRIExpression) this.getComponent().getValueExpression();
ValueExpression value2Expression = Expressions.number(number);
AddExpression exp = new AddExpression(value1Expression, value2Expression);
return new TextColumnBuilder(exp).setDataType(type.bigDecimalType());
}
//subtract
/**
* Creates a new column by subtracting a column value from this column instance.
*
* @param column the column builder
* @return a column builder
*/
@SuppressWarnings("unchecked")
public TextColumnBuilder subtract(TextColumnBuilder column) {
Validate.isTrue(Number.class.isAssignableFrom(getObject().getValueClass()), "Only Number column can subtract");
DRIExpression value1Expression = (DRIExpression) this.getComponent().getValueExpression();
DRIExpression value2Expression = column.getComponent().getValueExpression();
SubtractExpression exp = new SubtractExpression(value1Expression, value2Expression);
return new TextColumnBuilder(exp).setDataType(type.bigDecimalType());
}
/**
* Creates a new column by subtracting a value from this column instance.
*
* @param number the value
* @return a column builder
*/
@SuppressWarnings("unchecked")
public TextColumnBuilder subtract(Number number) {
Validate.isTrue(Number.class.isAssignableFrom(getObject().getValueClass()), "Only Number column can subtract");
DRIExpression value1Expression = (DRIExpression) this.getComponent().getValueExpression();
ValueExpression value2Expression = Expressions.number(number);
SubtractExpression exp = new SubtractExpression(value1Expression, value2Expression);
return new TextColumnBuilder(exp).setDataType(type.bigDecimalType());
}
//multiply
/**
* Creates a new column by multiplying this column instance with a column value.
*
* @param column the column builder
* @return a column builder
*/
@SuppressWarnings("unchecked")
public TextColumnBuilder multiply(TextColumnBuilder column) {
Validate.isTrue(Number.class.isAssignableFrom(getObject().getValueClass()), "Only Number column can multiply");
DRIExpression value1Expression = (DRIExpression) this.getComponent().getValueExpression();
DRIExpression value2Expression = column.getComponent().getValueExpression();
MultiplyExpression exp = new MultiplyExpression(value1Expression, value2Expression);
return new TextColumnBuilder(exp).setDataType(type.bigDecimalType());
}
/**
* Creates a new column by multiplying this column instance with a value.
*
* @param number the value
* @return a column builder
*/
@SuppressWarnings("unchecked")
public TextColumnBuilder multiply(Number number) {
Validate.isTrue(Number.class.isAssignableFrom(getObject().getValueClass()), "Only Number column can multiply");
DRIExpression value1Expression = (DRIExpression) this.getComponent().getValueExpression();
ValueExpression value2Expression = Expressions.number(number);
MultiplyExpression exp = new MultiplyExpression(value1Expression, value2Expression);
return new TextColumnBuilder(exp).setDataType(type.bigDecimalType());
}
//divide
/**
* Creates a new column by dividing this column instance with a column value.
*
* @param column the column builder
* @return a column builder
*/
@SuppressWarnings("unchecked")
public TextColumnBuilder divide(int scale, TextColumnBuilder column) {
Validate.isTrue(Number.class.isAssignableFrom(getObject().getValueClass()), "Only Number column can divide");
DRIExpression value1Expression = (DRIExpression) this.getComponent().getValueExpression();
DRIExpression value2Expression = column.getComponent().getValueExpression();
DivideExpression exp = new DivideExpression(scale, value1Expression, value2Expression);
return new TextColumnBuilder(exp).setDataType(type.bigDecimalType());
}
/**
* Creates a new column by dividing this column instance with a value.
*
* @param number the value
* @return a column builder
*/
@SuppressWarnings("unchecked")
public TextColumnBuilder divide(int scale, Number number) {
Validate.isTrue(Number.class.isAssignableFrom(getObject().getValueClass()), "Only Number column can divide");
DRIExpression value1Expression = (DRIExpression) this.getComponent().getValueExpression();
ValueExpression value2Expression = Expressions.number(number);
DivideExpression exp = new DivideExpression(scale, value1Expression, value2Expression);
return new TextColumnBuilder(exp).setDataType(type.bigDecimalType());
}
@Override
public String getName() {
return getObject().getName();
}
}