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;
}
}