import java.util.regex.*;
class Main {
public static void main(String[] args) {
String execshql=null;
System.out.println("Hello world! - java.jsrun.net ");
String tableName = "ydjc_yw_checktask ydjc " +
"left join Cod_Region c on ydjc.checkarea = c.code " +
"left join sys_user s on ydjc.createuser = s.userid ";
String str = "kkskksfhdf";
String addWhere = "1=1 and rwtype='0' order by createtime desc";
String fields = "ydjc.pkid,ydjc.checktaskname,ydjc.checktype,c.name checkarea," +
"ydjc.checktype as checktypecode,ydjc.rwjcdx,ydjc.rwjcdx as dxcode," +
"checkcontext,to_char(ydjc.checkdate,'yyyy-mm-dd') as checkdate," +
"to_char(ydjc.checkenddate,'yyyy-mm-dd') as checkenddate,"+
"ydjc.taskstatus,s.username,to_char(ydjc.createtime,'yyyy-mm-dd hh24:mi:ss') as createuser";
String zsdm = "530600";
String pattern = "(?i).*cod_region.*";
execshql="select "+fields;
if (tableName!=null && !"".equals(tableName)){
execshql+=" from "+tableName;
}
boolean isMatch = Pattern.matches(pattern, tableName);
if(isMatch) {
String content = tableName.toUpperCase();
int index = content.indexOf("COD_REGION");
String bm = getFirstNonWhitespaceChar(content.substring(index+10,index+15));
System.out.println("区域代码表别名:"+bm);
if(addWhere!=null && !"".equals(addWhere) && !"null".equals(addWhere)){
String patterns = "(?i).*"+bm+".code.*";
boolean isMatchs = Pattern.matches(patterns, addWhere);
if(!isMatchs){
String a = bm+".code='" + zsdm + "' and ";
addWhere = a + addWhere;
}
execshql = addWheres(execshql, addWhere);
}else {
addWhere=bm+".code='" + zsdm + "'";
}
System.out.println("查询条件:"+addWhere);
System.out.println("查询语句:"+execshql);
}
}
private static String getFirstNonWhitespaceChar(String input) {
if (input == null || input.length() == 0) {
return "";
}
char firstChar = input.charAt(0);
if (!Character.isWhitespace(firstChar)) {
return String.valueOf(firstChar);
} else {
return getFirstNonWhitespaceChar(input.substring(1));
}
}
private static String addWheres(String execshql, String searchWhere) {
System.out.println("查询语句:"+execshql);
String toLowerExecshql=execshql.toLowerCase();
int start=0;
int indexSelect=toLowerExecshql.indexOf("select ");
while(true){
int otherSelect=toLowerExecshql.indexOf("select ",indexSelect+6);
if(otherSelect<0){
start=indexSelect;
break;
}
int indexFrom=toLowerExecshql.indexOf(" from ",indexSelect+6);
if(indexFrom<otherSelect){
start=indexFrom;
break;
}
indexSelect=indexFrom;
}
start=toLowerExecshql.indexOf("from ",start+6);
int lastIndexOn=toLowerExecshql.lastIndexOf(" on ");
if(lastIndexOn<0)lastIndexOn=toLowerExecshql.lastIndexOf(" on(");
if(lastIndexOn>start)start =lastIndexOn;
int indexWhere =toLowerExecshql.indexOf(" where ",start);
int indexGroup =toLowerExecshql.indexOf(" group ",start);
int indexOrder =toLowerExecshql.indexOf(" order ",start);
if(searchWhere!=null && !"".equals(searchWhere)){
int startindex=indexWhere+1;
if(startindex<=0){
if(indexGroup>=0 && indexOrder>=0){
startindex=Math.min(indexGroup+1, indexOrder+1);
}else if(indexGroup>=0 || indexOrder>=0){
startindex=(indexGroup>=0?indexGroup:indexOrder)+1;
}
if(startindex>0){
execshql=execshql.substring(0,startindex)+ " where "+
searchWhere+" "+execshql.substring(startindex);
}else{
execshql=execshql+" where "+searchWhere;
}
}else{
execshql=execshql.substring(0,startindex+6)+
"("+searchWhere+") and "+
execshql.substring(startindex+6);
}
}
return execshql;
}
}