package com.ycsoft.report.query.sql; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import com.ycsoft.beans.system.SItemvalue; import com.ycsoft.commons.store.MemoryDict; import com.ycsoft.report.bean.RepMemoryKey; import com.ycsoft.report.commons.ReportConstants; import com.ycsoft.report.commons.SystemConfig; import com.ycsoft.report.query.key.Impl.QueryKeyValue; /** * 处理内存中sql别值转换 */ public class AnalyseMemoryKey { private static final String left_key="\"#M_"; private static final String right_key="_M#\""; /** * 转换内存关键字为更复杂的关键字 * @param sql * @return */ public static String translateColumnToKey(String sql){ for(RepMemoryKey mk:SystemConfig.getMemoryKeyListt()){ sql=sql.replaceAll(mk.getMemory_key(), left_key+mk.getMemory_key().substring(1, mk.getMemory_key().length()-1)+right_key); } return sql; } /** * 转换内存关键字为描述 * @param sql * @return */ public static String translateColumnToDesc(String sql){ for(RepMemoryKey mk:SystemConfig.getMemoryKeyListt()){ sql=sql.replaceAll(mk.getMemory_key(), mk.getMemory_desc()); } return sql; } /** * 通过转换后的复杂关键字获获取列描述 * @param columntokey * @return */ public static String getMemoryKeyDesc(String columntokey){ String key=columntokey.replaceAll(left_key.substring(1), "\"").replaceAll(right_key.substring(0, right_key.length()-1), "\""); RepMemoryKey mk=SystemConfig.getMemoryKeyMap().get(key); if(mk!=null) return mk.getMemory_desc().trim(); else return columntokey; } /** * 通过转换后的复杂关键字获取值MAP * @param columntokey * @return */ public static Map<String,String> getMemoryMap(String columntokey){ String key=columntokey.replaceAll(left_key.substring(1), "\"").replaceAll(right_key.substring(0, right_key.length()-1), "\""); RepMemoryKey mk=SystemConfig.getMemoryKeyMap().get(key); if(mk!=null){ if(mk.getMemory_type().equals(ReportConstants.memory_my_define)) return SystemConfig.getMy_memory().get(key); else{ if(mk.getValue_key()!=null){ Map<String, SItemvalue> simap=MemoryDict.getDictMap().get(mk.getValue_key()); if(simap!=null&&simap.size()>0){ Map<String,String> valuemap=new HashMap<String,String>(); for(SItemvalue si: simap.values()) valuemap.put(si.getItem_value(), si.getItem_name()); return valuemap; } } } } return null; } /** * 根据内存键值和ID取对应的名称 * @param memorykey * @param id * @return */ public static String getMemoryIDtoName(String memorykey,String id){ RepMemoryKey mk=SystemConfig.getMemoryKeyMap().get(memorykey); if(mk==null) return null; if(mk.getMemory_type().equals(ReportConstants.memory_my_define)) return SystemConfig.getMy_memory().get(memorykey).get(id); else if(mk.getValue_key()!=null) return MemoryDict.getDictMap().get(mk.getValue_key()).get(id).getItem_name(); return null; } /** * 根据内存键取List * @param memorykey * @return */ public static List<QueryKeyValue> getMemoryList(String memorykey){ RepMemoryKey mk=SystemConfig.getMemoryKeyMap().get(memorykey); if(mk==null) return null; if(mk.getMemory_type().equals(ReportConstants.memory_my_define)){ Map<String,String> mymemorymap= SystemConfig.getMy_memory().get(memorykey); if(mymemorymap!=null&&mymemorymap.size()>0){ List<QueryKeyValue> list=new ArrayList<QueryKeyValue>() ; Iterator<String> iterator=mymemorymap.keySet().iterator(); while(iterator.hasNext()){ QueryKeyValue vo=new QueryKeyValue(); String id=iterator.next(); vo.setId(id); vo.setName(mymemorymap.get(id)); list.add(vo); } return list; } }else if(mk.getValue_key()!=null){ Map<String, SItemvalue> simap=MemoryDict.getDictMap().get(mk.getValue_key()); if(simap!=null&&simap.size()>0){ List<QueryKeyValue> list=new ArrayList<QueryKeyValue>() ; for(SItemvalue si: simap.values()){ QueryKeyValue vo=new QueryKeyValue(); vo.setId(si.getItem_value()); vo.setName(si.getItem_name()); list.add(vo); } return list; } } return null; } }