You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.5 KiB
93 lines
3.5 KiB
package com.fr.plugin.xxx.report.core; |
|
|
|
import com.fr.base.ParameterMapNameSpace; |
|
import com.fr.base.SynchronizedLiveDataModelUtils; |
|
import com.fr.base.TableData; |
|
import com.fr.data.TableDataSource; |
|
import com.fr.data.api.TableDataAssist; |
|
import com.fr.general.data.DataModel; |
|
import com.fr.main.TemplateWorkBook; |
|
import com.fr.script.Calculator; |
|
import com.fr.stable.ParameterProvider; |
|
import com.fr.web.request.ReportletRequest; |
|
|
|
import java.util.HashMap; |
|
import java.util.Map; |
|
|
|
/** |
|
* @author 秃破天际 |
|
* @version 10.0 |
|
* Created by 秃破天际 on 2020-04-01 |
|
**/ |
|
public final class DsUtils { |
|
private DsUtils(){} |
|
|
|
private final static Calculator initCalculator(TemplateWorkBook book){ |
|
Calculator calculator = Calculator.createCalculator(); |
|
calculator.setAttribute(TableDataSource.KEY,book); |
|
return calculator; |
|
} |
|
|
|
private final static void initParameter(Calculator calculator,TableData ds,ReportletRequest request){ |
|
Map<String,Object> parameters = new HashMap<String,Object>(); |
|
ParameterProvider[] ps = ds.getParameters(calculator); |
|
for( ParameterProvider p : ps ){ |
|
String pname = p.getName(); |
|
Object v = request.getParameter(pname); |
|
if( null != v ){ |
|
parameters.put(pname, v); |
|
} |
|
} |
|
ParameterMapNameSpace space = ParameterMapNameSpace.create(parameters); |
|
calculator.pushNameSpace(space); |
|
} |
|
|
|
public static DataModel getDataModel(TemplateWorkBook book, ReportletRequest request, String dsName ){ |
|
Calculator calculator = initCalculator(book); |
|
TableData ds = TableDataAssist.getTableData(calculator, dsName); |
|
initParameter(calculator,ds,request); |
|
DataModel dm = SynchronizedLiveDataModelUtils.getSELiveDataModel4Share(calculator, dsName); |
|
if ( null == dm ) { |
|
dm = ds == null ? null : ds.createDataModel(calculator); |
|
} |
|
return dm; |
|
} |
|
|
|
public static DataModel getDataModel(TemplateWorkBook book, Calculator calculator, String dsName ){ |
|
TableData ds = TableDataAssist.getTableData(calculator, dsName); |
|
DataModel dm = SynchronizedLiveDataModelUtils.getSELiveDataModel4Share(calculator, dsName); |
|
if ( null == dm ) { |
|
dm = ds == null ? null : ds.createDataModel(calculator); |
|
} |
|
return dm; |
|
} |
|
|
|
public static Map<String,String> getRelation(String dsName, String keyCol, String valueCol, TemplateWorkBook book, Calculator cal){ |
|
Map<String,String> rt = new HashMap<String,String>(); |
|
try{ |
|
DataModel dm = getDataModel(book,cal,dsName); |
|
int vIdx = dm.getColumnIndex(valueCol); |
|
int kIdx = dm.getColumnIndex(keyCol); |
|
for( int i=0,len=dm.getRowCount();i<len;i++ ){ |
|
rt.put( (String)dm.getValueAt( i, kIdx), (String)dm.getValueAt( i, vIdx) ); |
|
} |
|
}catch(Exception e){ |
|
} |
|
return rt; |
|
} |
|
|
|
public static Map<String,String> getRelation(String dsName, String keyCol, String valueCol, TemplateWorkBook book, ReportletRequest request){ |
|
Map<String,String> rt = new HashMap<String,String>(); |
|
try{ |
|
DataModel dm = getDataModel(book,request,dsName); |
|
int vIdx = dm.getColumnIndex(valueCol); |
|
int kIdx = dm.getColumnIndex(keyCol); |
|
for( int i=0,len=dm.getRowCount();i<len;i++ ){ |
|
rt.put( (String)dm.getValueAt( i, kIdx), (String)dm.getValueAt( i, vIdx) ); |
|
} |
|
}catch(Exception e){ |
|
} |
|
return rt; |
|
} |
|
|
|
}
|
|
|