|
|
|
package com.fr.data;
|
|
|
|
|
|
|
|
import com.fr.general.data.TableDataException;
|
|
|
|
import com.fr.log.FineLoggerFactory;
|
|
|
|
import com.fr.stable.ParameterProvider;
|
|
|
|
import org.apache.axis.client.Call;
|
|
|
|
import org.apache.axis.client.Service;
|
|
|
|
|
|
|
|
import javax.xml.namespace.QName;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WebService程序数据集
|
|
|
|
*
|
|
|
|
* @Author Roger
|
|
|
|
* @Date 2022/10/10 15:46
|
|
|
|
* @Version 11.0
|
|
|
|
*/
|
|
|
|
public class WebServiceTableData extends SimpleTableData {
|
|
|
|
|
|
|
|
private static final int COLUMN_COUNT = 10;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 初始化列名数组
|
|
|
|
*
|
|
|
|
* @return {col1,col2,col3...}
|
|
|
|
* @throws TableDataException
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public String[] initColumnNames() {
|
|
|
|
String[] columnNames = new String[COLUMN_COUNT];
|
|
|
|
for (int i = 0; i < COLUMN_COUNT; i++) {
|
|
|
|
columnNames[i] = "column#" + i;
|
|
|
|
}
|
|
|
|
return columnNames;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 加载数据
|
|
|
|
*
|
|
|
|
* @return 行列数据
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public List<Object[]> loadData() {
|
|
|
|
String tableName = ((ParameterProvider) (parameters.get().toArray())[0]).getValue().toString();
|
|
|
|
FineLoggerFactory.getLogger().info("Query SQL of ParamTableDataDemo: {}", tableName);
|
|
|
|
|
|
|
|
// 保存得到的结果集
|
|
|
|
ArrayList<Object[]> valueList = new ArrayList();
|
|
|
|
|
|
|
|
try {
|
|
|
|
// 调用 Web 服务获取数据
|
|
|
|
String[][] data = createData();
|
|
|
|
|
|
|
|
// 如果数据为空,直接返回空列表
|
|
|
|
if (data == null || data.length == 0) {
|
|
|
|
return valueList;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 获得总列数
|
|
|
|
int colNum = data[0].length;
|
|
|
|
|
|
|
|
// 用对象保存数据
|
|
|
|
Object[] objArray = null;
|
|
|
|
for (int rowIndex = 1; rowIndex < data.length; rowIndex++) {
|
|
|
|
objArray = new Object[colNum];
|
|
|
|
for (int i = 0; i < colNum; i++) {
|
|
|
|
objArray[i] = data[rowIndex][i];
|
|
|
|
}
|
|
|
|
// 在valueList中加入这一行数据
|
|
|
|
valueList.add(objArray);
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e);
|
|
|
|
}
|
|
|
|
return valueList;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 调用 Web 服务获取数据
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public String[][] createData() {
|
|
|
|
try {
|
|
|
|
String endpoint = "http://localhost:8080/axis/TestWS2TDClient.jws";
|
|
|
|
Service service = new Service();
|
|
|
|
Call call = (Call) service.createCall();
|
|
|
|
call.setTargetEndpointAddress(new java.net.URL(endpoint));
|
|
|
|
call.setOperationName(new QName("http://localhost:8080/axis/TestWS2TDClient.jws",
|
|
|
|
"getTD"));
|
|
|
|
String[][] ret = (String[][])call.invoke(new Object[] {});
|
|
|
|
return ret;
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
return new String[][] {};
|
|
|
|
}
|
|
|
|
}
|