- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在尝试使用 jasper 来帮助我创建报告。我有我想要在此方法中显示的信息和数据:
private void writeToFile(final List<ScenarioLoadModel> sceneLoadModel) throws Exception {
final BufferedWriter bw = new BufferedWriter(new FileWriter("/Uma/nft/result.psv"));
for (final ScenarioLoadModel slm : sceneLoadModel) {
bw.write(slm.getScenarioId() + PSP + slm.getScenarioId() + PSP + slm.getScenarioConfig().getName() + PSP + slm.getLoad() + PSP + "" + EOL);
if (!slm.getScenarios().isEmpty()) {
final int tempCount = slm.getScenarios().get(0).getTemplates().size();
final int sceneCount = slm.getScenarios().size();
for (int tempIdx = 0; tempIdx < tempCount; tempIdx++) {
String id = null;
int pass = 0;
int fail = 0;
final Map<String, BigDecimal> metricMap = new HashMap<String, BigDecimal>();
final DefaultStatisticalCategoryDataset dataset = new DefaultStatisticalCategoryDataset();
for (int sceneIdx = 0; sceneIdx < sceneCount; sceneIdx++) {
final Template temp = slm.getScenarios().get(sceneIdx).getTemplates().get(tempIdx);
if (temp.isError()) {
fail++;
} else {
pass++;
}
if (sceneIdx == 0) {
id = temp.getId();
}
final MetricGroupModel mgm = slm.getScenarios().get(sceneIdx).getMetricGroupModel().get(tempIdx);
if (mgm != null) {
for (final MetricModel mm : mgm.getMetricModel()) {
for (final MetricValue mv : mm.getMetricValue()) {
dataset.add(mv.getValue(), new BigDecimal(0.0), mv.getType(), id);
}
}
}
}
final TemplateConfig tc = TemplateManager.getTemplateConfig(id);
bw.write(slm.getScenarioId() + PSP);
bw.write(id + PSP + tc.getName() + PSP + 1 + PSP + pass + "/" + fail);
for (final Object row : dataset.getRowKeys()) {
final Number mean = dataset.getValue((String) row, id);
bw.write(PSP + row + PSP + mean);
}
bw.write(EOL);
}
}
}
bw.close();
}
根据我的理解,我创建了 Bean,然后将它们全部放入 Bean 工厂,以创建我的对象,该对象将准备好传递给 iReport。
如何将所有这些信息放入一个 Bean 中?我基本上希望 bean 包含场景/测试用例以及它是否通过。 (这是为了测试自动化)
最佳答案
我试图阅读您的代码以最好地猜测您想要哪些列,但没有上下文,我没有任何线索。所有的 bean 都是一个 pojo,具有私有(private)字段和公共(public) getter 和 setter。
假设没有分组并且基本上每个 ScenarioLoadModel
都对应于报告中的一行,您最终会得到这样一个 bean:
public class ScenariaResults {
private String id;
private String name;
private String load;
private int passCount;
private int failCount;
public ScenariaResults(String id, String name, String load, int passCount,
int failCount) {
super();
this.id = id;
this.name = name;
this.load = load;
this.passCount = passCount;
this.failCount = failCount;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLoad() {
return load;
}
public void setLoad(String load) {
this.load = load;
}
public int getPassCount() {
return passCount;
}
public void setPassCount(int passCount) {
this.passCount = passCount;
}
public int getFailCount() {
return failCount;
}
public void setFailCount(int failCount) {
this.failCount = failCount;
}
@Override
public String toString() {
return "ScenariaResults [id=" + id + ", name=" + name + ", load="
+ load + ", passCount=" + passCount + ", failCount="
+ failCount + "]";
}
}
基本上,在上面的代码中,您构建了 ScenarioResults
的实例并将它们添加到列表中。获得列表后,您需要做的就是创建一个 JRDataSource:
List<ScenarioResults> dataBeanList = ...call your method to get the list of results
//create the datasource
JRDataSource dataSource = new JRBeanCollectionDataSource(dataBeanList);
现在在 iReport 中设计报表时,自动导入字段可能有点棘手。基本上首先将带有 bean 的项目添加到 iReports 中的类路径(可以将其指向 bin 文件夹或 jar 文件`):工具 -> 选项 -> 类路径选项卡。现在按照以下步骤添加字段。
JavaBean 数据源
选项卡。ScenarioResults
)读取属性
添加选定字段
。确定
。现在如果你想用数据测试报告的样子,而不仅仅是一个空的数据源,这就是工厂的用武之地。它只用于在使用 iReport 时进行测试。你需要创建一个类,该类实际上会为您创建一个虚拟数据集。它应该看起来像:
import java.util.ArrayList;
import java.util.List;
public class ScenarioResultsFactory {
public static List<ScenarioResults> createBeanCollection() {
List<ScenarioResults> list = new ArrayList<ScenarioResults>();
list.add(new ScenarioResults("1", "test", "load", 10, 5));
//add as many as you want
return list;
}
}
现在您需要在 iReport 中创建一个指向它的数据源。
新建
。JavaBeans 设置数据源
。点击下一步
。ScenarioResultsFactory
。com
包中,您应该在此处具有 com.ScenarioResultsFactory
。createBeanCollection
。 使用字段说明
复选框。单击 Test
以确保它有效。保存
。关于java - 如何将 JRBeanCollectionDataSource 传递给 iReport?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456114/
谁能告诉我 JasperReports .jrxml 文件中属性 ireport.x 和 ireport.y 的用途?提前致谢。 最佳答案 参数ireport.x、ireport.y 和 irepor
我正在使用 iReport-3.7.6 我创建了一个 sample_Report1,其中一个参数为 (Project_name) 和 我创建了 Sample_Report2,其中一个参数为 (Empl
我在 jaspersoft 中有一个主要的报告。在主报告中,我使用了两个子报告。在其中一个子报告中,我有一个变量 Total Cash。我必须在下一个子报告中使用这个变量 Total Cash。是否可
我尝试了很长时间: 我正在使用 iReport 设计器创建报告。因为它以所有格式(PDF、Excel、RTF)显示图像,但是当我尝试在 JSP 中以 HTML 格式显示时,图像没有显示。我想做的就是解
我想在术语打印机中打印票据,但信息可以使用 3 英寸或 25 英寸长度的纸张。如果我将页面尺寸设置为 25",我会浪费大量纸张,因为打印了空白。 如何解决? 最佳答案 好吧,这比我想象的要容易。 主元
我在 iReport 中格式化日期有问题 我的电脑我将语言环境配置为法语,但是当 iReport 生成报告时,我发现日期格式为英语语言环境。 这是我的 jrxml 文件中的一些代码:
我知道如何将参数从主报表传递到子报表,因为在子报表对象中有一个特定的字段。但是,我想对表或列表对象作为使用者(而不是子报表)执行相同的操作。可能吗? 例如,假设我有一个“customerID”参数,可
我正在使用 iReport 2.0.5(因为我必须这样做),我在格式化百分比方面遇到了一些问题。当我使用未格式化的 double 时,这就是我得到的: 0 22,22 5,555 (this is t
我想为我的域类实例而不是全部实例创建报告,只是为GSP表中选定的用户(选择复选框)创建报告。在我的报告中,我还将有一些逻辑-很少的条件,一些计算等。我还必须从数据库中获取一些其他数据。我该怎么做呢?我
我正在使用 iReport 2.0.5(因为我必须这样做),我在格式化百分比方面遇到了一些问题。当我使用未格式化的 double 时,这就是我得到的: 0 22,22 5,555 (this is t
我的报表中有一个列表组件,它显示一组数据。它的高度是在运行时根据 Set(JRBeanCollectionDataSource) 的大小确定的。我想创建一个高度与列表相同的矩形。我怎样才能做到这一点?
有人知道在 IReport 上将横向和纵向方向组合在同一个报表中的一种模式吗?请记住我想要一个 PDF 文档作为结果。 谢谢 克莱伯·阿尔贝托。 最佳答案 我认为仅使用 iReport 和 Jaspe
我的报表中需要多个查询,因此添加了新的数据集。 问题是我无法在报表中使用新数据集的字段,错误是:字段不存在。 因此,如何在报表中有多个查询(以打印不同表的字段)而不为每个字段创建子报表? 谢谢。 最佳
如何在iReport中预览以获取包含子报表的报表,并且该子报表在子报表参数中发送? JRXML 中的子报表示例: /subreportExpression> java中的参数示例: InputStre
我的 Java 项目的一份报告可以包含多个子报告吗? 我有一个生成主报告的类,并且根据用户选择的报告,将在主报告中生成子报告。但我在 Java 类上执行此操作,在 iReport 上我只输入参数。因此
我使用iReport 5.1.0工具进行报表设计。 我当前的报告输出如下: ------------------------------------------------------------ |
我们正在使用 iReport 5.0.1,并已成功转换我们的许多 Crystal Reports 包。 我正在处理混合了整数和 double 据类型的数据,并且在详细信息部分的变量字段内执行计算。 然
我正在尝试在我的报告中使用外部对象。 我将带有外部对象的 jar 文件添加到 iReport 类路径(在设置中) 静态文本(带 I18n) msg($R{pdf.invoice.finalTitle}
我的报告中的累加器存在问题。在每页的页脚中,我需要打印记录的总和(小计器),但是当发生分页符时,因为历史字段非常大并且不适合此页面,所以总和会与下一页的值相加记录,将在下一页打印。这是错误的,应仅添加
我有一个子报表,它运行良好,我还有一个使用子报表的报表,并且在 IReport 中也运行良好;我总是使用“文件路径”中的子报表。 但是,我想将报告添加到 JAR(OSGI bundle )中,并将使用
我是一名优秀的程序员,十分优秀!