package com.ycsoft.report.query.sql; import java.util.HashMap; import java.util.List; import java.util.Map; import com.ycsoft.commons.helper.LoggerHelper; import com.ycsoft.report.bean.RepTemplateKey; import com.ycsoft.report.commons.ReportConstants; import com.ycsoft.report.dao.keycon.QueryKeyValueDao; import com.ycsoft.report.query.key.Impl.QueryKeyValue; /** * 列模板转换 */ public class AnalyseTemplateKey { private static final String key_replace="@"; private static final String key_id="#id#"; private static final String key_name="#name#"; private static final String key_pid="#pid#"; /** * translate_sql类型的转换键 * contect 例子: sum(case when prod_id=#id# then 1 else 0 end) '#name#' * contect_cycle 例子:select prod_id,prod_name from busi.p_prod * @param list * @param qdao * @return */ public static Map<String,String> initKeyMap(List<RepTemplateKey> list,QueryKeyValueDao qdao,StringBuilder error_info){ Map<String,String> tmap=new HashMap<String,String>(); if(list==null||list.size()==0) return tmap; for(RepTemplateKey k:list){ if(ReportConstants.template_type_fixed_sql.equals(k.getTemplate_type())){ tmap.put(k.getTemplate_key(), k.getContect()); }else if (ReportConstants.template_type_translate_sql.equals(k.getTemplate_type())){ try{ List<QueryKeyValue> contectlist=qdao.findList(k.getDatabase(), k.getContect_cycle()); if(contectlist!=null&&contectlist.size()>0){ StringBuilder sb=new StringBuilder(); String contect=k.getContect(); //给id加',用于数据转换 contect=contect.replaceAll(key_id, "'"+key_id+"'"); for(QueryKeyValue vo: contectlist){ String temp=contect; temp=temp.replaceAll(key_id, vo.getId()); temp=temp.replaceAll(key_name, vo.getName()); sb.append(" ").append(temp).append(","); } contect=sb.toString(); tmap.put(k.getTemplate_key(), contect.substring(0, contect.length()-1)); } }catch(Exception e){ LoggerHelper.info(AnalyseTemplateKey.class, k.getTemplate_key()+" init error:"+e.getMessage()); error_info.append("rep_template_key_init_error:").append(k.getTemplate_key()).append(e.getMessage()).append(";"); } }else { LoggerHelper.info(AnalyseTemplateKey.class, k.getTemplate_key()+" type is undefine."); error_info.append("rep_template_key_init_error:").append(k.getTemplate_key()).append(" type is undefine;"); } } return tmap; } public static void main(String args[]){ System.out.println("@aa@".replaceAll("@", "")); System.out.println("@aa@,".substring(0,4)); } }