页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

实际场景下,java查询需要支持传递参数实现条件查询,与不带参数的Java查询相比,带参数Java查询代码的显著区别就是需要定义Java查询参数对象,对应类名为 smartbi.freequery.metadata.JavaQueryParameter

以下是示例代码:

代码块
languagejava
themeEclipse
languagejava
linenumberstrue
package smartbi;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import smartbi.freequery.metadata.IJavaQueryData;
import smartbi.freequery.metadata.JavaQueryConfig;
import smartbi.freequery.metadata.JavaQueryOutputField;
import smartbi.freequery.metadata.JavaQueryParameter;
import smartbi.freequery.querydata.CellData;
import smartbi.freequery.querydata.GridData;
import smartbi.net.sf.json.JSONObject;
import smartbi.util.StringUtil;
import smartbi.util.ValueType;
public class IntegerGenerator implements IJavaQueryData {
    	private static final Random RANDOM = new Random();
	    private Integer max = null;
	    private Integer min = null;
    	/** {@inheritDoc} */
	    public void close() {
    	}
    	/** {@inheritDoc}获取Java查询需要的配置信息 */
	    public List<JavaQueryConfig> getConfigs() {
		
        return new ArrayList<JavaQueryConfig>();
    	}
    	/** {@inheritDoc}获取指定行的数据 */
    	public GridData getGridData(int from, int count) {
		
        GridData grid = new GridData();
		
        List<String> headers = new ArrayList<String>();
		
        for (JavaQueryOutputField f : getOutputFields()) {
			
            headers.add(f.getId());
		}
		
        }
        grid.setStringHeaders(headers);
		
        List<List<CellData>> data = new ArrayList<List<CellData>>();
		
        for (int i = from, len = from + count; i < len; i++) {
			
            List<CellData> row = new ArrayList<CellData>();
			
            CellData cell = new CellData();
			
            cell.setType(ValueType.INTEGER);
			
            cell.setIntValue(generateRandomIntValue());
			            row.add(cell);
			
            data.add(row);
		}
		
        }
        grid.setData(data);
		
        return grid;
    	}
    	private int generateRandomIntValue() {
		
        int value = RANDOM.nextInt();
		
        if (min == null && max == null) {
			//
		
            //
        } else if (min == null) {
			
            value = RANDOM.nextInt(max);
		
        } else if (max == null) {
			
            value = Math.abs(value) + min;
		
        } else {
			
            int v0 = Math.min(max, min);
			
            int v1 = Math.max(max, min);
			
            value = RANDOM.nextInt(v1) % (v1 - v0 + 1) + v0;
		}
		
        }
        return value;
    	}
 	   /** {@inheritDoc}返回Java查询的输出字段 */
    	public List<JavaQueryOutputField> getOutputFields() {
		
        List<JavaQueryOutputField> result = new ArrayList<JavaQueryOutputField>();
		        result.add(new JavaQueryOutputField("Integer", "Integer", "Integer", "", ValueType.INTEGER, ""));
		
        return result;
   	 }
  	  /** {@inheritDoc}返回参数对象 */
    	public List<JavaQueryParameter> getParameters() {
		        List<JavaQueryParameter> result = new ArrayList<JavaQueryParameter>();
		
        /**最后一个参数值true代表参数非必填,允许为空*/
        result.add(new JavaQueryParameter("Max", "Max", "最大值", "", ValueType.INTEGER, true));
		
        result.add(new JavaQueryParameter("Min", "Min", "最小值", "", ValueType.INTEGER, true));
		
        return result;
    	}
	    /** {@inheritDoc} 返回总行数,返回Integer.MAX_VALUE表示未知总行数 */
	    public int getRowCount() {
		
        return Integer.MAX_VALUE;
	}
	    }
    /** {@inheritDoc} */
    	public void init() {
	}
	    }
    /** {@inheritDoc} */
    	public void loadConfigs(String configs) {
	}
	    }
    /** {@inheritDoc}保存配置信息 */
 	   public String saveConfigs() {
		
        return new JSONObject().toString();
 	}
	   }
    /** {@inheritDoc} */
    	public void setConfigValue(String key, String value) {
 	}
	   }
    /** {@inheritDoc} */
    	public void setConfigValues(Map<String, String> configValues) {
 	   }
	    /** {@inheritDoc}设置参数值 */
  	  public void setParameterValue(String id, String value, String displayValue) {
		
        if (StringUtil.isNullOrEmpty(value)) {
			return;
		
            return;
        } else if ("Max".equals(id)) {
			try {
				
            try {
                max = Double.valueOf(value).intValue();
			
            } catch (NumberFormatException e) {
				
                max = null;
			}
		
            }
        } else if ("Min".equals(id)) {
			try {
				
            try {
                min = Double.valueOf(value).intValue();
			
            } catch (NumberFormatException e) {
				
                min = null;
			}
		}
	
            }
        }
    }
}