package com.khk.tools.baosight;
import java.util.HashMap;
import java.util.Map;
import com.baosight.iplat4j.core.ei.EiInfo;
public class WatchBXParam {
private static final String DEFAULT_INPUT_BLOCK="i";
public static HashMap watchInInfoI0(EiInfo inInfo)
{
Map biParams=inInfo.getBlock("i").getRow(0);
return (HashMap) biParams;
}
private static final String fs_valueEquals="ve";
private static final String fs_valueOP="nu";//not used
private static final String fs_isnull="sn";
private static final String fs_isnotnull="nn";
private static final String[][] opMap
=new String[][]
{new String[]{fs_valueEquals,"= ",""}
,new String[]{"ne","<> ",""}
,new String[]{"gt","> ",""}
,new String[]{"ge",">= ",""}
,new String[]{"lt","< ",""}
,new String[]{"le","<= ",""}
,new String[]{"se","='","'"}
,new String[]{"ct"," like '%","%'"}
,new String[]{"nc"," not like '%","%'"}
,new String[]{"sn"," is null ",""}
,new String[]{"nn"," is not null ",""}
,new String[]{"l0","=''",""}
,new String[]{"hl","!=''",""}
,new String[]{"be"," like '","%'"}
,new String[]{"en"," like '%","'"}
,new String[]{"re"," like '","'"}
,new String[]{"in"," in (",")"}
,new String[]{"is"," in ('","')"}
};
//in oracle, '' is null
//shall add [3] as sign for concatenate or not
private static final String fssFlag_xmlcolName="_colname";
private static final String fssFlag_xmlante="_opsignante";
private static final String fssFlag_xmlvalue="_value";
private static final String fssFlag_xmlnovalue="_novalue";
private static final String fssFlag_xmlpost="_opsignpost";
private static final String fssFlag_xmlconcatenated="_concatenated";
private static final String fss_db_mssql="mssql";
private static final String fss_db_mysql="mysql";
private static final String fss_db_oracle="oracle";
private static final String fss_db_mongodb="mongodb";
private static final String fss_db_current=fss_db_oracle;
//WatchBXParam.resolveOPSign(inInfo,"POINT_VALUE1","pointValue1Opsign","pointValue1Query");
public static void resolveOPSign(EiInfo inInfo,String ps_dbColName,String psop,String ps_criteriaName)
{
Object loopSign=inInfo.get("i-0-"+psop);//is null
Object os_criteria=inInfo.get("i-0-"+ps_criteriaName);
if (loopSign==null)
return;
if (fs_valueOP.equals((String)loopSign))
return;
String lsopSign=(String)loopSign;
//"pointValue1_value"
//String ls_criteria=(String)os_criteria[0];
if (fss_db_current.equals(fss_db_oracle))
{
//oracle中,空字符串被视作null oracle不支持='',所以改为字符串是否为空
if (lsopSign.equals("l0"))
lsopSign="sn";
if (lsopSign.equals("hl"))
lsopSign="sn";
}
for (String[] fls_opsign:opMap) if (lsopSign.equals(fls_opsign[0]))
{
inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlcolName, ps_dbColName);
inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlante, fls_opsign[1]);
//jdk 1.5 cannot use switch String
if ("sn,nn,h0,hl".contains(fls_opsign[0]))
os_criteria="";
inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlvalue, os_criteria);
inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlpost, fls_opsign[2]);
inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlconcatenated, ps_dbColName+fls_opsign[1]+os_criteria+fls_opsign[2]);
return;
}
}
private String parseStrIn()
{
String rstr="";
return rstr;
}
}
//call example
//WatchBXParam.resolveOPSign(inInfo,"POINT_VALUE1","pointValue1Opsign","pointValue1Query");
//WatchBXParam.resolveOPSign(inInfo,"point_Code","pointCodeOpsign","pointCodeQuery");
<jsp:include page="/WEB-INF/khk/numop.jsp" ><jsp:param name="divid" value="i-0-pointValue1Opsign"/></jsp:include>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<select name="<%=request.getParameter("divid") %>" id="<%=request.getParameter("divid") %>" >
<option value="nu">不用</option>
<option value="ve">值等</option>
<option value="ne">!=</option>
<option value="gt">></option>
<option value="ge">>=</option>
<option value="lt"><</option>
<option value="le"><=</option>
<option value="sn">为空</option>
<option value="nn">非空</option>
<option value="in">in数</option>
</select>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<select name="<%=request.getParameter("divid") %>" id="<%=request.getParameter("divid") %>" >
<option value="nu">不用</option>
<option value="se">串等</option>
<option value="ct">包含</option>
<option value="nc">不含</option>
<option value="sn">为空</option>
<option value="nn">非空</option>
<option value="l0">空串</option>
<option value="hl">含字</option>
<option value="be">开头</option>
<option value="en">结尾</option>
<option value="is">在组</option>
<option value="re">正则</option>
</select>
use example
jsp:
<jsp:include page="/WEB-INF/khk/strop.jsp" ><jsp:param name="divid" value="i-0-pointCodeOpsign"/></jsp:include>
<!-- must written in one line -->
<ehr:text id="i-0-pointCodeQuery" name="i-0-pointCodeQuery" value="${filter.pointCodeQuery}" width="60px"/>
batis xml:
<isNotEmpty prepend=" AND " property="pointValue1Query_concatenated">
( $pointValue1Query_colname$ $pointValue1Query_opsignante$ #pointValue1Query_value# $pointValue1Query_opsignpost$ )</isNotEmpty>
<isNotEmpty prepend=" AND " property="pointCodeQuery_concatenated">
( $pointCodeQuery_colname$ $pointCodeQuery_opsignante$$pointCodeQuery_value$$pointCodeQuery_opsignpost$ )</isNotEmpty>
使用的时候,本来的定值搜索可以作为范围条件搜索
jsp java xml都只需增加一句话来完成,需要增加两个jsp和一个Java
in还没做好,其他都可以了