页面树结构

版本比较

标识

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

...

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

以下是示例代码:

代码块
languagejava
themeEclipse
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));
      /** 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 {
				                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;
			}
		}
	            }
        }
    }
}