怎样使用API修改“是否更新未修改的行”

怎样使用API修改”是否更新未修改的行”

需求描述

需要动态修改更新属性中的”是否更新未修改的行”。

需求实现

示例代码如下:

package com;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import com.runqian.report4.model.ReportDefine;

import com.runqian.report4.model.engine.ExtCellSet;

import com.runqian.report4.usermodel.Context;

import com.runqian.report4.usermodel.Engine;

import com.runqian.report4.usermodel.INormalCell;

import com.runqian.report4.usermodel.IReport;

import com.runqian.report4.usermodel.input.InputProperty;

import com.runqian.report4.usermodel.input.TableRelations;

import com.runqian.report4.usermodel.input.UpdateProperty;

import com.runqian.report4.util.ReportUtils;

import com.runqian.report4.view.html.HtmlReport;

public class FixUpdatePropertyMain {

public static void main(String[] args) throws Throwable {

System.out.println(“1111″);

String lisenseFile = “D:\\Program Files (x86)\\reportHome4541\\润乾license\\内部测试使用Server2012-12-31V4.0Windows.lic”;

ExtCellSet.setLicenseFileName(lisenseFile);

String reportFile = “D:\\Program Files (x86)\\MyEclipse 8.5\\Workspaces\\mydemo1.6\\WebRoot\\reportFiles\\test_更新属性.raq”;

InputStream is;

try {

is = new FileInputStream(reportFile);

ReportDefine rd = (ReportDefine)ReportUtils.read( is);

for(int i=1;i<=rd.getRowCount();i++){

for(int j=1; j<=rd.getColCount();j++){

INormalCell ic = rd.getCell(i, (short)j);

//如果单元格填报属性不为null且更新列表不为null,则再根据更新的表名进行判断是否修改”是否更新未修改的行”属性

if(ic.getInputProperty()!=null&&ic.getInputProperty().getUpdateList()!=null){

InputProperty ip = ic.getInputProperty();

ArrayList al = ip.getUpdateList();

int len = al.size();

System.out.println(“len=”+len);

ArrayList ups = new ArrayList(len);

for(int k=0;k<len;k++){

UpdateProperty up = (UpdateProperty)al.get(k);

Object relations = up.getRelation();

TableRelations trs = (TableRelations)relations;

System.out.println(“trs.getTableName()=”+trs.getTableName());

if(trs.getTableName().equals(“E7_STA_REPINST”)){

//如果更新的是报表实例表,则不更改”是否更新未修改的行”属性

}else

{

trs.setUpdateUnmodified(false);//设置”是否更新未修改的行”为未选中

}

up.setRelation(trs);

ups.add(up);

}

ip.setUpdateList(ups);

ic.setInputProperty(ip);

rd.setCell(i,(short)j, ic);

}

}

}

OutputStream out1 = new FileOutputStream( “D:\\Program Files (x86)\\MyEclipse 8.5\\Workspaces\\mydemo1.6\\WebRoot\\reportFiles\\test_更新属性_fix.raq” );

ReportUtils.write(out1,rd);

out1.close();

System.out.println(“222″);

} catch (Exception e) {

e.printStackTrace();

}

}

}