package com.agilecontrol.nea.core.control.web; import com.agilecontrol.config.ResourcesConstant; import com.agilecontrol.nea.core.control.web.OraErrorInfo; import com.agilecontrol.nea.core.control.web.ServletContextManager; import com.agilecontrol.nea.core.control.web.SessionContextManager; import com.agilecontrol.nea.core.control.web.UserWebImpl; import com.agilecontrol.nea.core.query.ColumnLink; import com.agilecontrol.nea.core.query.Expression; import com.agilecontrol.nea.core.query.QueryEngine; import com.agilecontrol.nea.core.query.QueryResult; import com.agilecontrol.nea.core.query.QuerySession; import com.agilecontrol.nea.core.query.QueryUtils; import com.agilecontrol.nea.core.redis.JedisDatasource; import com.agilecontrol.nea.core.schema.AliasSupportTable; import com.agilecontrol.nea.core.schema.ClientManager; import com.agilecontrol.nea.core.schema.Column; import com.agilecontrol.nea.core.schema.Table; import com.agilecontrol.nea.core.schema.TableManager; import com.agilecontrol.nea.core.security.NDSSecurityException; import com.agilecontrol.nea.core.security.User; import com.agilecontrol.nea.core.struts.DatabaseMessageResourcesManager; import com.agilecontrol.nea.core.util.LanguageManager; import com.agilecontrol.nea.core.util.MessagesHolder; import com.agilecontrol.nea.core.util.ParamUtils; import com.agilecontrol.nea.core.util.RedisUtils; import com.agilecontrol.nea.core.util.servlet.SwallowingHttpServletResponse; import com.agilecontrol.nea.core.web.config.ObjectUIConfig; import com.agilecontrol.nea.core.web.config.PortletConfigManager; import com.agilecontrol.nea.util.Base64; import com.agilecontrol.nea.util.Configurations; import com.agilecontrol.nea.util.EncryptException; import com.agilecontrol.nea.util.EncryptUtils; import com.agilecontrol.nea.util.JSONUtils; import com.agilecontrol.nea.util.NDSException; import com.agilecontrol.nea.util.NDSRuntimeException; import com.agilecontrol.nea.util.ObjectAlradyExistException; import com.agilecontrol.nea.util.ObjectNotFoundException; import com.agilecontrol.nea.util.StringUtils; import com.agilecontrol.nea.util.Tools; import com.agilecontrol.nea.util.Validator; import com.agilecontrol.ucenter.service.impl.UCenterServerBaseServiceImpl; import java.beans.Beans; import java.io.BufferedReader; import java.io.CharArrayWriter; import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.Key; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.json.JSONArray; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; public final class WebUtils { private static final Logger logger = LoggerFactory.getLogger(WebUtils.class); private static final String welcomeNewUser = "您好,请登录,或申请试用"; private static int count = 0; private static int systemMode = 0; private static ServletContext context = null; private static Key systemKeyObject = null; private static String DOM_DOMAIN = null; public static void setSystemDebugMode(boolean f) { systemMode = f?1:2; } public static String getClientDomain(int clientId) throws Exception { return ClientManager.getInstance().getClient(clientId).getDomain(); } public static void setServletContext(ServletContext con) { context = con; } public static ServletContext getServletContext() { return context; } public static ServletContextManager getServletContextManager() { ServletContextManager manager = null; if(context == null) { throw new NDSRuntimeException("Internal Error: ServletContext not set before calling getServletContextManager"); } else { manager = (ServletContextManager)context.getAttribute("nea.web.svletctxmgr"); try { if(manager == null) { manager = (ServletContextManager)context.getAttribute("nea.web.svletctxmgr"); if(manager == null) { manager = (ServletContextManager)Beans.instantiate(WebUtils.class.getClassLoader(), "com.agilecontrol.nea.core.control.web.ServletContextManager"); context.setAttribute("nea.web.svletctxmgr", manager); manager.init((ServletContext)context); } } return manager; } catch (Exception var2) { var2.printStackTrace(); throw new NDSRuntimeException("Error getting ServletContextManager", var2); } } } public static SessionContextManager getSessionContextManager(HttpSession session) { return getSessionContextManager(session, true); } public static Jedis getJedis() { if(context == null) { throw new NDSRuntimeException("Internal Error: ServletContext not set before calling getJedis"); } else { ServletContextManager manager = (ServletContextManager)context.getAttribute("nea.web.svletctxmgr"); JedisDatasource ds = (JedisDatasource)manager.getActor("nea.web.jedisds"); return ds.getConnection(); } } public static SessionContextManager getSessionContextManager(HttpSession session, boolean create) { try { if(session == null) { System.out.println("Found session be null, and return null."); return null; } else { SessionContextManager e = (SessionContextManager)session.getAttribute("nea.web.sesonctxmgr"); if(e == null && create) { e = (SessionContextManager)Beans.instantiate(WebUtils.class.getClassLoader(), "com.agilecontrol.nea.core.control.web.SessionContextManager"); session.removeAttribute("nea.web.sesonctxmgr"); session.setAttribute("nea.web.sesonctxmgr", e); e.init((HttpSession)session); } return e; } } catch (Exception var3) { var3.printStackTrace(); throw new NDSRuntimeException("Error getting ServletContextManager", var3); } } public static void checkDirectoryReadPermission(String dirName, HttpServletRequest request) throws NDSSecurityException { checkDirectoryPermission(dirName, 1, request); } public static void checkDirectoryWritePermission(String dirName, HttpServletRequest request) throws NDSSecurityException { checkDirectoryPermission(dirName, 3, request); } public static void checkTableQueryPermission(String tableName, HttpServletRequest request) throws NDSSecurityException { String directory = TableManager.getInstance().getTable(tableName).getSecurityDirectory(); checkDirectoryReadPermission(directory, request); } private static void checkDirectoryPermission(String dirName, int permission, HttpServletRequest request) throws NDSSecurityException { HttpSession session = request.getSession(true); SessionContextManager manager = getSessionContextManager(session); UserWebImpl usr = (UserWebImpl)manager.getActor("nea.web.authorization"); usr.checkPermission(dirName, permission); } public static boolean isDirectoryPermissionEnabled(String dirName, int permission, HttpServletRequest request) throws NDSSecurityException { HttpSession session = request.getSession(true); SessionContextManager manager = getSessionContextManager(session); UserWebImpl usr = (UserWebImpl)manager.getActor("nea.web.authorization"); return usr.isPermissionEnabled(dirName, permission); } public static int getDirectoryPermission(String dirName, HttpServletRequest request) throws NDSSecurityException { HttpSession session = request.getSession(true); SessionContextManager manager = getSessionContextManager(session); UserWebImpl usr = (UserWebImpl)manager.getActor("nea.web.authorization"); return usr.getPermission((String)dirName); } public static ObjectUIConfig getTableUIConfig(Table table) { if(table == null) { return ObjectUIConfig.getDefaultTableUIConfig(); } else { PortletConfigManager pcManager = (PortletConfigManager)getServletContextManager().getActor("nea.web.PortletConfigManager"); ObjectUIConfig uiConfig = (ObjectUIConfig)pcManager.getPortletConfig(table.getUIConfigId(), 3); if(uiConfig == null) { uiConfig = ObjectUIConfig.getDefaultTableUIConfig(); } return uiConfig; } } public static String stringForJsOutput(String str) { str = str.replace('\'', '\"'); str = StringUtils.replace(str, "\n", "\\n"); str = StringUtils.replace(str, "\r", "\\r"); return str; } public static String getCompanyInfo() { return ClientManager.getInstance().getDefaultClient().getName(); } public static String getExceptionMessage(Throwable t, Locale locale) { String s = StringUtils.getRootCause(t).getMessage(); if(s == null) { return MessagesHolder.getInstance().translateMessage("@unknown-exception@", locale); } else { s = s.trim(); int p = s.indexOf("ORA-"); int q = s.indexOf("ORA-", p + 1); String r; if(p >= 0) { if(s.indexOf("00001", p) == p + 4) { r = parseOracle001Error(s, p, locale); } else if(q > 0) { r = s.substring(p + 11, q - 1); } else { r = s.substring(p + 11); } r = s.substring(0, p) + r; } else { r = s; } return MessagesHolder.getInstance().translateMessage(r, locale); } } private static String parseOracle001Error(String s, int fromIndex, Locale locale) { int idxStart = s.indexOf("(", fromIndex); int idxEnd = s.indexOf(")", fromIndex); if(idxStart > 0 && idxEnd > idxStart) { String idxName = s.substring(idxStart + 1, idxEnd); int idxTableEnd = idxName.indexOf(46); TableManager manager = TableManager.getInstance(); Object tableName = null; Table table = null; String indexName = idxName.substring(idxTableEnd + 1); String errorMsg = "@unique-constraint-violated@"; try { List t = QueryEngine.getInstance().doQueryList("select table_name, column_name from USER_IND_COLUMNS where column_name<>\'AD_CLIENT_ID\' and index_name=" + QueryUtils.TO_STRING(indexName)); if(t.size() > 0) { StringBuilder sb = new StringBuilder("@columns-that-violate-unique-constraint@:"); for(int i = 0; i < t.size(); ++i) { if(i > 0) { sb.append("+"); } String tname = (String)((List)t.get(i)).get(0); if(table == null) { table = manager.getTable(tname); } String cname = (String)((List)t.get(i)).get(1); Column col = manager.getColumn(tname, cname); if(col != null) { cname = col.getDescription(locale); } else { cname = tname + "." + cname; } sb.append(cname); } errorMsg = sb.toString(); } } catch (Throwable var18) { logger.error("Faile to parse 0001 error", var18); } return errorMsg; } else { return s; } } public static OraErrorInfo parseOracleError(Throwable t, Locale locale) { OraErrorInfo oraErrorInfo = new OraErrorInfo(); String s = StringUtils.getRootCause(t).getMessage(); s = s.trim(); s = StringUtils.getRootCause(t).getMessage().split("\n")[0]; if(Validator.isNull(s)) { oraErrorInfo.setErrorMessage("@unknown-exception@"); } else { oraErrorInfo.setErrorMessage(s); int index = s.toUpperCase().indexOf("ORA-"); if(index != -1) { String code = s.substring(index, index + 9); oraErrorInfo.setOraCode(code); oraErrorInfo.setOraErrorMessage(s); if("ORA-00001".equals(code)) { oraErrorInfo = parseOra00001Error(s, index, locale); } } } oraErrorInfo.setErrorMessage(MessagesHolder.getInstance().translateMessage(oraErrorInfo.getErrorMessage(), locale)); return oraErrorInfo; } private static OraErrorInfo parseOra00001Error(String s, int fromIndex, Locale locale) { OraErrorInfo oraErrorInfo = new OraErrorInfo(); oraErrorInfo.setErrorMessage(s); int idxStart = s.indexOf("(", fromIndex); int idxEnd = s.indexOf(")", fromIndex); if(idxStart > 0 && idxEnd > idxStart) { String idxName = s.substring(idxStart + 1, idxEnd); int idxTableEnd = idxName.indexOf(46); TableManager manager = TableManager.getInstance(); Table table = null; String indexName = idxName.substring(idxTableEnd + 1); oraErrorInfo.setErrorMessage("@unique-constraint-violated@"); try { String t = "select table_name, column_name from USER_IND_COLUMNS where column_name<>\'AD_CLIENT_ID\' and index_name=" + QueryUtils.TO_STRING(indexName); List al = QueryEngine.getInstance().doQueryList(t); if(al.size() > 0) { oraErrorInfo.setErrorMessage("@columns-that-violate-unique-constraint@:"); ArrayList columns = new ArrayList(); for(int i = 0; i < al.size(); ++i) { String tname = (String)((List)al.get(i)).get(0); if(table == null) { table = manager.getTable(tname); } String cname = (String)((List)al.get(i)).get(1); Column col = manager.getColumn(tname, cname); columns.add(col); } oraErrorInfo.setColumns(columns); } } catch (Throwable var18) { logger.error("Faile to parse 0001 error", var18); } return oraErrorInfo; } else { return oraErrorInfo; } } public static boolean isSystemDebugMode() { if(systemMode == 0) { try { Configurations e = (Configurations)getServletContextManager().getActor("nea.configs"); String mode = e.getProperty("schema.mode", "production"); if("develope".equals(mode)) { systemMode = 1; } else { systemMode = 2; } } catch (Exception var2) { var2.printStackTrace(); } } return systemMode == 1; } private static void checkLicense() { } public static String getMainTableLink(HttpServletRequest request) { int mid = ParamUtils.getIntAttributeOrParameter(request, "mainobjecttableid", -1); return mid != -1?"mainobjecttableid=" + mid + "&table=" + ParamUtils.getIntAttributeOrParameter(request, "table", -1) + "&":""; } public static void setMainTableLink(HttpServletRequest request) { if(Tools.getInt(request.getAttribute("mainobjecttableid"), -1) == -1) { request.setAttribute("mainobjecttableid", "" + Tools.getInt(request.getParameter("mainobjecttableid"), -1)); } } public static void loginSSOUser(User user, HttpServletRequest request, HttpServletResponse res) throws Exception { throw new NDSException("deprecated"); } public static Key getSystemKey() throws ObjectNotFoundException, IOException { if(systemKeyObject == null) { File file = new File(getProperty("dir.nea.root", true) + File.separator + "conf" + File.separator + "keyobj.store"); if(!file.exists()) { throw new ObjectNotFoundException(file.getAbsolutePath() + " not found"); } String content = Tools.readFile(file.getAbsolutePath(), "ISO-8859-1"); systemKeyObject = (Key)Base64.stringToObject(content); } return systemKeyObject; } public static void createSystemKey() throws ObjectAlradyExistException, EncryptException, IOException { File file = new File(getProperty("dir.nea.root", true) + File.separator + "conf" + File.separator + "keyobj.store"); if(file.exists()) { throw new ObjectAlradyExistException(file.getAbsolutePath() + " found"); } else { String content = Base64.objectToString(EncryptUtils.generateKey()); Tools.writeFile(file.getAbsolutePath(), content, "ISO-8859-1"); } } public static String getUserWelcomeString(HttpServletRequest request) { UserWebImpl userWeb = null; try { SessionContextManager scm = getSessionContextManager(request.getSession(), false); if(scm != null) { userWeb = (UserWebImpl)scm.getActor("nea.web.authorization"); } } catch (Throwable var3) { ; } return userWeb != null && !userWeb.isGuest()?"您好," + userWeb.getUserDescription() + ",退出系统":"您好,请登录,或申请试用"; } public static Expression parseWildcardFilter(Column searchOnColumn, HttpServletRequest request, UserWebImpl userWeb) throws Exception { if(searchOnColumn != null && searchOnColumn.isFilteredByWildcard()) { Locale locale = userWeb.getLocale(); String filter = searchOnColumn.getFilter(); List wfc_rcs = searchOnColumn.getReferenceColumnsInWildcardFilter(); for(int expr = 0; expr < wfc_rcs.size(); ++expr) { Column wfc_rc = (Column)wfc_rcs.get(expr); String wfc_rcv = request.getParameter("wfc_" + wfc_rc.getId()); if(wfc_rcv != null) { if(wfc_rc.getReferenceTable() != null) { logger.debug("parseWildcardFilter, searchOnColumn= " + searchOnColumn + ", ref tble=" + wfc_rc.getReferenceTable() + ", wfc_rcv=" + wfc_rcv); wfc_rcv = parseReferenceColumnValue(wfc_rcv, wfc_rc, userWeb); logger.debug("returned rcv=" + wfc_rcv); } else if(wfc_rc.getType() == 2) { wfc_rcv = QueryUtils.TO_STRING(wfc_rcv); } } else { if(!wfc_rc.isNullable()) { String msg = MessagesHolder.getInstance().getMessage(locale, "pls-input"); throw new NDSException(msg.replace("0", wfc_rc.getDescription(locale))); } wfc_rcv = "NULL"; } filter = filter.replaceAll("@" + wfc_rc.getTable().getName() + "." + wfc_rc.getName() + "@", wfc_rcv); } Expression var10 = new Expression((ColumnLink)null, filter, searchOnColumn.getDescription(locale) + MessagesHolder.getInstance().getMessage(locale, "-have-special-filter")); return var10; } else { return null; } } private static String parseReferenceColumnValue(String objectStr, Column col, UserWebImpl userWeb) throws Exception { TableManager tm = TableManager.getInstance(); QueryEngine engine = QueryEngine.getInstance(); Table refTable = col.getReferenceTable(); String refTableName = refTable.getName(); String refTablleDesc = refTable.getDescription(Locale.CHINA); Column akColumn = refTable.getAlternateKey(); String akNo = akColumn.getName(); Column akCol = refTable.getAlternateKey(); String colName = col.getName(); Object newStr = null; boolean isAliasSupportTable = refTable instanceof AliasSupportTable; Object aliasPstmt = null; Object assocColumns = null; int refTableId = tm.getTable(refTableName).getId(); Object filterSql = null; StringBuilder sqlStr = new StringBuilder("SELECT ID FROM " + refTable.getRealTableName() + " " + refTable.getName() + " WHERE " + (refTable.isAcitveFilterEnabled()?"ISACTIVE=\'Y\' AND ":"") + akNo + " = ?"); if(refTable.getFilter() != null) { sqlStr.append(" AND " + refTable.getFilter()); } if(refTable.isAdClientIsolated()) { int sql = userWeb.getAdClientId(); sqlStr.append(" and AD_CLIENT_ID=" + sql); } if(col.getFilter() != null) { if(col.isFilteredByWildcard()) { logger.warn("when getting id of " + col + " with ak=" + objectStr + ", found col is filtered by wildcard, omit this filter since ui should controled"); } else { sqlStr.append(" AND (" + col.getFilter() + ")"); } } String sql1 = QueryUtils.replaceVariables(sqlStr.toString(), userWeb.getSession()); Connection conn = QueryEngine.getInstance().getConnection(); PreparedStatement pstmt = null; ResultSet result = null; boolean isUpperCase = akCol.isUpperCase(); String ret; try { logger.debug("object obtain sql= " + sql1 + "(" + (isUpperCase?QueryUtils.toUpperCase(objectStr):objectStr) + ")"); pstmt = conn.prepareStatement(sql1); pstmt.setString(1, isUpperCase?QueryUtils.toUpperCase(objectStr):objectStr); result = pstmt.executeQuery(); if(result.next()) { ret = String.valueOf(result.getInt(1)); } else { ret = "NULL"; } } finally { if(result != null) { try { result.close(); } catch (Exception var41) { ; } } if(pstmt != null) { try { pstmt.close(); } catch (Exception var40) { ; } } if(aliasPstmt != null) { try { ((PreparedStatement)aliasPstmt).close(); } catch (Exception var39) { ; } } if(conn != null) { try { conn.close(); } catch (Exception var38) { ; } } } return ret; } public static List filterHiddenColumns(QueryResult result, List columns, JSONArray displayConditions) throws Exception { throw new NDSRuntimeException("deprecated"); } public static JSONObject loadObjectPropsForClient(Table table, int objectId, QuerySession qsession) throws Exception { JSONObject jo = table.getJSONProps(); if(jo == null) { return null; } else { JSONArray dc = jo.optJSONArray("display_condition"); if(dc == null) { return null; } else { JSONObject ro = new JSONObject(); JSONArray ja = new JSONArray(); for(int i = 0; i < dc.length(); ++i) { Object io = dc.get(i); String c; if(io instanceof String) { c = QueryUtils.replaceVariables((String)io, qsession); JSONObject v = new JSONObject(); v.put("OBJECTID", String.valueOf(objectId)); v.put("TABLEID", String.valueOf(table.getId())); v.put("TABLE", String.valueOf(table.getName())); c = JSONUtils.replaceVariables(c, v); int col = Tools.getInt(QueryEngine.getInstance().doQueryOne(c), 0); ja.put(col > 0); } else { if(!(io instanceof JSONObject)) { throw new NDSException("Not supported type:" + io.getClass() + " as " + io + " in " + jo); } c = ((JSONObject)io).getString("c"); String var13 = ((JSONObject)io).getString("v"); Column var14 = table.getColumn(c); if(var14 == null) { throw new NDSException("c is not a valid column on table " + table + ":" + c); } JSONObject jt = new JSONObject(); jt.put("c", var14.getId()); jt.put("v", var13); ja.put(jt); } } ro.put("display_condition", ja); return ro; } } } public static int getBrowserType(HttpServletRequest req) { String s = req.getHeader("user-agent"); return s == null?2:(s.indexOf("MSIE") > -1?0:(s.indexOf("Firefox") > -1?1:2)); } public static boolean isMobileBrowser(HttpServletRequest req) { String serverName = req.getServerName(); return serverName.startsWith("m.") || serverName.startsWith("M."); } public static String getContentDispositionFileName(String filename, HttpServletRequest req) throws UnsupportedEncodingException { if(filename == null) { return ""; } else { int pidx = filename.lastIndexOf("/"); if(pidx > 0) { filename = filename.substring(pidx + 1); } else { pidx = filename.lastIndexOf("\\"); if(pidx > 0) { filename = filename.substring(pidx + 1); } } int bt = getBrowserType(req); return bt == 0?"filename=\"" + StringUtils.replace(URLEncoder.encode(filename, "UTF-8"), "+", "%20") + "\"":"filename*=UTF-8\'\'" + StringUtils.replace(URLEncoder.encode(filename, "UTF-8"), "+", "%20"); } } public static Configurations getConfigurations() { Configurations conf = (Configurations)getServletContextManager().getActor("nea.configs"); if(conf == null) { conf = new Configurations(); } return conf; } public static String getProperty(String name, String defaultValue) { return getConfigurations().getProperty(name, defaultValue); } public static String getProperty(String name, boolean throwExceptionIfNotFound) { String str = getConfigurations().getProperty(name); if(throwExceptionIfNotFound && Validator.isNull(str)) { throw new NDSRuntimeException("Property " + name + " not found in configuration file"); } else { return str; } } public static String getProperty(String name) { return getConfigurations().getProperty(name); } public static String[] getPropertyArray(String name) { String v = getConfigurations().getProperty(name); return Validator.isNull(v)?null:v.split(","); } public static UserWebImpl getUser(HttpServletRequest req) throws Exception { return (UserWebImpl)getSessionContextManager(req.getSession()).getActor("nea.web.authorization"); } public static String getCompleteURL(HttpServletRequest req) { StringBuffer completeURL = req.getRequestURL(); if(completeURL == null) { completeURL = new StringBuffer(); } if(req.getQueryString() != null) { completeURL.append("?"); completeURL.append(req.getQueryString()); } return completeURL.toString(); } public static String forwardToString(String url, HttpServletRequest realRequest, HttpServletResponse realResponse) throws ServletException, IOException { StringWriter sout = new StringWriter(); StringBuffer buffer = sout.getBuffer(); SwallowingHttpServletResponse fakeResponse = new SwallowingHttpServletResponse(realResponse, sout, realResponse.getCharacterEncoding()); getServletContext().getRequestDispatcher(url).forward(realRequest, fakeResponse); return buffer.toString(); } public static String getRequestBody(HttpServletRequest request) throws ServletException, IOException { String charset = request.getCharacterEncoding(); if(charset == null) { charset = "UTF-8"; } BufferedReader in = request.getReader(); short buf_size = 4096; CharArrayWriter data = new CharArrayWriter(); char[] buf = new char[buf_size]; int ret; while((ret = in.read(buf, 0, buf_size)) != -1) { data.write(buf, 0, ret); } return data.toString(); } public static String getDocumentDomain() { if(DOM_DOMAIN == null) { DOM_DOMAIN = getConfigurations().getProperty("im.domain"); } return DOM_DOMAIN; } public static void getTables(JSONArray ja, JSONArray tables) throws NDSException { try { for(int e = 0; e < ja.length(); ++e) { Object obj = ja.get(e); if(obj instanceof JSONObject) { JSONObject table = (JSONObject)obj; Iterator it = table.keys(); while(it.hasNext()) { String key = (String)it.next(); Object value = table.get(key); if(value.equals((Object)null)) { logger.error("value of key(" + key + ") is null"); throw new NDSException("value of key(" + key + ") is null"); } if(value instanceof JSONArray) { getTables((JSONArray)value, tables); } else if(key.equals("table")) { Table table1 = TableManager.getInstance().findTable(value.toString(), true); if(null == table1) { throw new NDSException("cannot find table: " + value.toString()); } tables.put(table1.getRealTableName()); } } } else { Table var10 = TableManager.getInstance().findTable(obj.toString(), true); if(null == var10) { throw new NDSException("cannot find table: " + obj.toString()); } tables.put(var10.getRealTableName()); } } } catch (Exception var9) { logger.error(var9.getMessage()); throw new NDSException(var9.getMessage()); } } private static void recursionJSONArray(JSONArray ja) throws NDSException { try { for(int e = 0; e < ja.length(); ++e) { Object obj = ja.get(e); if(obj instanceof JSONObject) { JSONObject table = (JSONObject)obj; Iterator it = table.keys(); while(it.hasNext()) { String key = (String)it.next(); Object value = table.get(key); if(value.equals((Object)null)) { logger.error("value of key(" + key + ") is null"); throw new NDSException("value of key(" + key + ") is null"); } if(value instanceof JSONArray) { ja.put(e, (new JSONObject()).put("text", key).put("folder", value)); recursionJSONArray((JSONArray)value); } else if(key.equals("table")) { Table table1 = TableManager.getInstance().findTable(value.toString(), true); if(null == table1) { throw new NDSException("cannot find table: " + value.toString()); } String var10 = table1.getName(); } } } else { Table var9 = TableManager.getInstance().findTable(obj.toString(), true); if(null == var9) { throw new NDSException("cannot find table: " + obj.toString()); } ja.put(e, (new JSONObject()).put("table", var9.getName())); } } } catch (Exception var8) { logger.error(var8.getMessage()); throw new NDSException(var8.getMessage()); } } public static void clearTranslationCache() { Jedis dmrm = getJedis(); Throwable var1 = null; try { RedisUtils.delKeyPattern("portal:messages:*", dmrm); } catch (Throwable var10) { var1 = var10; throw var10; } finally { if(dmrm != null) { if(var1 != null) { try { dmrm.close(); } catch (Throwable var9) { var1.addSuppressed(var9); } } else { dmrm.close(); } } } DatabaseMessageResourcesManager dmrm1 = DatabaseMessageResourcesManager.getInstance(); if(dmrm1 != null) { dmrm1.reload(); } MessagesHolder.getInstance().clear(); LanguageManager.getInstance().clear(); } public static String createToken(String userName) { UCenterServerBaseServiceImpl uCenterService = (UCenterServerBaseServiceImpl)ResourcesConstant.applicationContext.getBean(UCenterServerBaseServiceImpl.class); String token = uCenterService.createToken(userName); return token; } public static Map prepareHttpHeader(String schema, String token) { HashMap header = new HashMap(); header.put("token", token); header.put("schema", schema); return header; } }