Compare commits

...

38 Commits

Author SHA1 Message Date
richie 298d68108e Merge pull request '修改pom文件中仓库位置' (#12) from onlyxx/finekit:master into master 2 years ago
左良 8304ca3fca 修改pom文件中仓库位置 2 years ago
fanglei d478c5195c Pull request #48: REPORT-51953 【设计器埋点】userid应该记录论坛用户的id而不是用户名 3 years ago
方磊 6c6d508a4d REPORT-51953 【设计器埋点】userid应该记录论坛用户的id而不是用户名 3 years ago
fanglei e2e8e2ae9b Pull request #47: REPORT-50207 埋点插件需要用到的一些后台方法封装到Finekit中 3 years ago
方磊 d7b8d62996 REPORT-50207 埋点插件需要用到的一些后台方法封装到Finekit中 3 years ago
fanglei dfd16cb126 Pull request #46: REPORT-50744 在FineKit增加根据JTemplate对象获取templateId的方法 3 years ago
方磊 198f73b578 REPORT-50744 用JTemplateProvider替代JTemplate 3 years ago
方磊 7013e6461f REPORT-50744 补上注释 3 years ago
方磊 649edf31f9 REPORT-50744 在FineKit增加根据JTemplate对象获取templateId的方法 3 years ago
fanglei 2f51c2b3c0 Pull request #45: REPORT-50744 在FineKit增加获取当前模板ID的方法和获取设计器ID的方法 3 years ago
方磊 b6778538bc REPORT-50744 在FineKit增加获取当前模板ID的方法和获取设计器ID的方法 3 years ago
richie 6df075061c 增加数据集lock特性 3 years ago
richie 30b5970252 Merge pull request 'REPORT-47782 数据集-数据连接-数据集界面的数据连接按钮,鼠标悬浮时的提示不对' (#10) from yvan/finekit:master into master 3 years ago
Yvan 521dd29c3e REPORT-47782 数据集-数据连接-数据集界面的数据连接按钮,鼠标悬浮时的提示不对 3 years ago
richie 8280abdf3b Merge pull request 'WIP REPORT-39459 json数据集-传参方式从get改为post-raw,参数的值没有保留' (#9) from Lucian.Chen/finekit:master into master 3 years ago
lucian c8fb5454f3 REPORT-39459 json数据集-传参方式从get改为post-raw,参数的值没有保留 3 years ago
richie 22c28b7090 Merge pull request 'REPORT-43833 【10.0.14】远程设计数据连接/服务器数据集增加锁定' (#6) from yvan/finekit:master into master 3 years ago
Yvan a1900cf1ba REPORT-43833 【10.0.14】远程设计数据连接/服务器数据集增加锁定 3 years ago
richie eaf185c3ed Merge pull request '无 jira 任务 fix: 之前的commit无故丢失,重构内心补上' (#5) from Dylan.Liu/finekit:master into master 3 years ago
Dylan.Liu 753eb6961b 无 jira 任务 fix: 之前的commit无故丢失,重构内心补上 3 years ago
richie c0cfb5d757 Merge pull request 'DEC-16802 fix: FineFileServer.getInstance().getRepoConfig() 接口提供' (#4) from Dylan.Liu/finekit:master into master 3 years ago
Dylan.Liu c7b4de0094 DEC-16802 fix: FineFileServer.getInstance().getRepoConfig() 接口提供 3 years ago
Dylan.Liu a74076a85f DEC-16802 fix: FineFileServer.getInstance().getRepoConfig() 接口提供 3 years ago
richie 49a526fe18 Merge pull request 'DEC-16532 feat: 支持hdfs高可用模式' (#3) from Dylan.Liu/finekit:master into master 3 years ago
Dylan.Liu a5f9492492 DEC-16532 fix: 移除重复的方法 3 years ago
Dylan.Liu 40754f05de DEC-16532 feat: 支持hdfs高可用模式 3 years ago
zed 4793f9c62f Pull request #44: DEC-15861 feat: Fr/Bi融合与独立部署V1 3 years ago
zed afef877673 fix 3 years ago
zed ed3d398e94 Merge remote-tracking branch 'origin/master' 3 years ago
zed a7632f3931 DEC-15861 feat: Fr/Bi融合与独立部署V1 3 years ago
richie f989336efe 新增API 3 years ago
zed defd3cce2a Pull request #43: DEC-15861 feat: Fr/Bi融合与独立部署V1 3 years ago
zed 420bc83904 DEC-15861 feat: Fr/Bi融合与独立部署V1 3 years ago
zed 8439799f7e Merge remote-tracking branch 'origin/master' 3 years ago
zed fb3039634b DEC-15861 feat: Fr/Bi融合与独立部署V1 3 years ago
zed 94a302baa3 Pull request #42: DEC-15861 feat: Fr/Bi融合与独立部署V1 3 years ago
zed 9cff6a3549 DEC-15861 feat: Fr/Bi融合与独立部署V1 3 years ago
  1. 4
      pom.xml
  2. 51
      src/main/java/com/fanruan/api/cal/ParameterKit.java
  3. 17
      src/main/java/com/fanruan/api/cluster/resource/BaseCommonRepoConfig.java
  4. 25
      src/main/java/com/fanruan/api/cluster/resource/FineFileServerKit.java
  5. 17
      src/main/java/com/fanruan/api/cluster/resource/ResourceModuleContextKit.java
  6. 15
      src/main/java/com/fanruan/api/cluster/resource/WorkContextKit.java
  7. 17
      src/main/java/com/fanruan/api/cluster/state/BaseStandAloneStore.java
  8. 20
      src/main/java/com/fanruan/api/cluster/state/FineCollectionsKit.java
  9. 9
      src/main/java/com/fanruan/api/cluster/state/StateServerConfigKit.java
  10. 15
      src/main/java/com/fanruan/api/cluster/state/StoreTemplateKit.java
  11. 33
      src/main/java/com/fanruan/api/conf/ConfigurationKit.java
  12. 6
      src/main/java/com/fanruan/api/conf/HolderKit.java
  13. 23
      src/main/java/com/fanruan/api/conf/MarketConfigKit.java
  14. 12
      src/main/java/com/fanruan/api/decision/CommonKit.java
  15. 119
      src/main/java/com/fanruan/api/decision/login/LoginKit.java
  16. 22
      src/main/java/com/fanruan/api/decision/user/UserKit.java
  17. 50
      src/main/java/com/fanruan/api/design/DesignKit.java
  18. 55
      src/main/java/com/fanruan/api/design/ui/component/UILockButton.java
  19. 40
      src/main/java/com/fanruan/api/design/work/ConnectionComboBoxPanel.java
  20. 50
      src/main/java/com/fanruan/api/design/work/compat/ConnectionLockHelper.java
  21. 122
      src/main/java/com/fanruan/api/design/work/component/ItemEditableComboBoxPanel.java
  22. 9
      src/main/java/com/fanruan/api/macro/ProductConstants.java
  23. 60
      src/main/java/com/fanruan/api/net/http/HttpKit.java
  24. 24
      src/main/java/com/fanruan/api/report/ReportEntryKit.java
  25. 9
      src/main/java/com/fanruan/api/runtime/EnvKit.java
  26. 40
      src/main/java/com/fanruan/api/security/SecurityKit.java
  27. 49
      src/test/java/com/fanruan/api/cal/ParameterKitTest.java
  28. 20
      src/test/java/com/fanruan/api/cluster/state/FineCollectionsKitTest.java
  29. 2
      src/test/java/com/fanruan/api/cluster/state/FineJedisPoolKitTest.java
  30. 4
      src/test/java/com/fanruan/api/cluster/state/RedisConfigKitTest.java
  31. 2
      src/test/java/com/fanruan/api/cluster/state/StandAloneJedisKitTest.java
  32. 17
      src/test/java/com/fanruan/api/cluster/state/StateServerConfigKitTest.java
  33. 38
      src/test/java/com/fanruan/api/cluster/state/StoreTemplateKitTest.java
  34. 29
      src/test/java/com/fanruan/api/conf/ConfigurationKitTest.java
  35. 11
      src/test/java/com/fanruan/api/decision/CommonKitTest.java
  36. 42
      src/test/java/com/fanruan/api/decision/login/LoginKitTest.java
  37. 6
      src/test/java/com/fanruan/api/decision/user/UserKitTest.java
  38. 24
      src/test/java/com/fanruan/api/report/ReportEntryKitTest.java
  39. 15
      src/test/java/com/fanruan/api/security/SecurityKitTest.java

4
pom.xml

@ -176,7 +176,7 @@
<repository>
<id>fanruan</id>
<name>fanruan</name>
<url>http://mvn.finedevelop.com/repository/maven-public/</url>
<url>https://mvn.fanruan.com/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
@ -188,7 +188,7 @@
<pluginRepository>
<id>fanruan</id>
<name>fanruan</name>
<url>http://mvn.finedevelop.com/repository/maven-public/</url>
<url>https://mvn.fanruan.com/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>

51
src/main/java/com/fanruan/api/cal/ParameterKit.java

@ -2,22 +2,26 @@ package com.fanruan.api.cal;
import com.fanruan.api.util.ArrayKit;
import com.fanruan.api.util.AssistKit;
import com.fr.base.DataSetFunctionParameterMapNameSpace;
import com.fr.base.Parameter;
import com.fr.base.ParameterHelper;
import com.fr.base.ParameterMapNameSpace;
import com.fr.base.ParameterTypeHandler;
import com.fr.base.TemplateUtils;
import com.fr.data.impl.TableColumn;
import com.fr.general.DateUtils;
import com.fr.json.JSON;
import com.fr.json.JSONArray;
import com.fr.json.JSONFactory;
import com.fr.json.JSONObject;
import com.fr.script.Calculator;
import com.fr.stable.ArrayUtils;
import com.fr.stable.ParameterProvider;
import com.fr.stable.script.NameSpace;
import org.jetbrains.annotations.NotNull;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
@ -144,6 +148,53 @@ public class ParameterKit {
return parameters;
}
/**
* 获得参数并集将新的参数拼接在后面
*
* @param paramTexts sql语句
* @param ps 旧的参数集合
* @return 新参数集合
*/
public static ParameterProvider[] analyzeAndMergeParameters(String[] paramTexts, ParameterProvider[] ps) {
ParameterProvider[] parameters = ParameterKit.analyze4Parameters(paramTexts, false);
if (ArrayKit.isEmpty(parameters) || ArrayKit.isEmpty(ps)) {
return ArrayUtils.addAll(ps, parameters);
}
List<ParameterProvider> psList = ArrayKit.toList(ps);
// 检查ps中是否有parameter,如果没有就加进去
for (ParameterProvider parameter : parameters) {
for (int i = 0; i < ps.length; i ++) {
if (AssistKit.equals(ps[i].getName(), parameter.getName())) {
break;
}
else if (i >= ps.length - 1) {
psList.add(parameter);
}
}
}
return psList.toArray(new ParameterProvider[0]);
}
/**
* 增加处理数据集间联系例如select * from t where time=${today()}
*
* @param text 原文本字符串
* @param parameters 参数集合
* @return 新的文本字符串
*/
public static String analyzeCurrentContextTableData4Template(String text, ParameterProvider[] parameters) {
Calculator c = Calculator.createCalculator();
NameSpace ns = DataSetFunctionParameterMapNameSpace.creat(parameters);
c.pushNameSpace(ns);
String str = TemplateUtils.renderTpl(c, text);
c.removeNameSpace(ns);
return str;
}
/**
* 从JSON中解析出来参数信息
*

17
src/main/java/com/fanruan/api/cluster/resource/BaseCommonRepoConfig.java

@ -0,0 +1,17 @@
package com.fanruan.api.cluster.resource;
import com.fr.io.config.CommonRepoConfig;
/**
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/3
*/
public class BaseCommonRepoConfig extends CommonRepoConfig {
private static final long serialVersionUID = 6713243696930557143L;
public BaseCommonRepoConfig(String identity) {
super(identity);
}
}

25
src/main/java/com/fanruan/api/cluster/resource/FineFileServerKit.java

@ -0,0 +1,25 @@
package com.fanruan.api.cluster.resource;
import com.fr.decision.fileserver.FineFileServer;
import com.fr.io.config.RepositoryConfig;
/**
* 文件服务器Kit.
*
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/12
*/
public class FineFileServerKit {
/**
* 获取文件服务器当前配置.
*
* @return 文件服务器当前配置
* @throws Exception 获取配置失败时异常
*/
public static <T extends RepositoryConfig> T getRepoConfig() throws Exception {
return FineFileServer.getInstance().getRepoConfig();
}
}

17
src/main/java/com/fanruan/api/cluster/resource/ResourceModuleContextKit.java

@ -0,0 +1,17 @@
package com.fanruan.api.cluster.resource;
import com.fr.io.config.RepositoryConfig;
import com.fr.io.context.ResourceModuleContext;
/**
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/3
*/
public class ResourceModuleContextKit {
public static <T extends RepositoryConfig> T getRepoConfig(String hdfs, String srcRepo) {
return ResourceModuleContext.getRepoConfig(hdfs, srcRepo);
}
}

15
src/main/java/com/fanruan/api/cluster/resource/WorkContextKit.java

@ -0,0 +1,15 @@
package com.fanruan.api.cluster.resource;
import com.fr.workspace.WorkContext;
import com.fr.workspace.resource.WorkResource;
/**
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/3
*/
public class WorkContextKit {
public static WorkResource getWorkResource() {
return WorkContext.getWorkResource();
}
}

17
src/main/java/com/fanruan/api/cluster/state/BaseStandAloneStore.java

@ -0,0 +1,17 @@
package com.fanruan.api.cluster.state;
import com.fr.store.impl.accessor.api.impl.StandAloneStore;
import com.fr.third.redis.clients.jedis.Jedis;
/**
* 单机<code>Redis API</code>.
*
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/18
*/
public class BaseStandAloneStore extends StandAloneStore {
public BaseStandAloneStore(Jedis jedis) {
super(jedis);
}
}

20
src/main/java/com/fanruan/api/cluster/state/FineCollectionsKit.java

@ -0,0 +1,20 @@
package com.fanruan.api.cluster.state;
import com.fr.collections.FineCollections;
/**
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/18
*/
public class FineCollectionsKit {
public FineCollectionsKit() {}
/**
* 销毁集群集合
*/
public static void destroy() {
FineCollections.getInstance().getClient().destroy();
}
}

9
src/main/java/com/fanruan/api/cluster/state/StateServerConfigKit.java

@ -29,6 +29,15 @@ public class StateServerConfigKit {
StateServerConfig.getInstance().setShareMode(isShareMode);
}
/**
* 是否是共享仓库
* @return 是否是共享仓库
*/
public static boolean isShareMode() {
return StateServerConfig.getInstance().isShareMode();
}
/**
* 设置状态服务器类型
* @param type 状态服务器类型

15
src/main/java/com/fanruan/api/cluster/state/StoreTemplateKit.java

@ -0,0 +1,15 @@
package com.fanruan.api.cluster.state;
import com.fr.store.impl.StoreTemplate;
/**
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/3
*/
public class StoreTemplateKit {
public static void close() {
StoreTemplate.getInstance().close();
}
}

33
src/main/java/com/fanruan/api/conf/ConfigurationKit.java

@ -4,11 +4,14 @@ import com.fanruan.api.generic.Matcher;
import com.fanruan.api.generic.Runner;
import com.fr.config.Configuration;
import com.fr.config.holder.ConfigChangeListener;
import com.fr.decision.webservice.utils.WebServiceUtils;
import com.fr.transaction.Configurations;
import com.fr.transaction.ValidateProxy;
import com.fr.transaction.WorkerCallBack;
import com.fr.transaction.WorkerFacade;
import java.util.Map;
/**
* @author richie
* @version 10.0
@ -17,6 +20,26 @@ import com.fr.transaction.WorkerFacade;
*/
public class ConfigurationKit {
/**
* 获取配置项的属性组成map
*
* @param config 配置项
* @return map
*/
public static Map<String, Object> getConfig(Configuration config) {
return WebServiceUtils.getConfigValue(config);
}
/**
* 更新配置项信息
*
* @param config 配置项
* @param map 更新内容
*/
public static void setConfig(Configuration config, Map<String, Object> map) {
WebServiceUtils.setConfigValue(config, map);
}
/**
* 兼容配置缓存失效
*
@ -64,8 +87,8 @@ public class ConfigurationKit {
* 在一个事务中修改配置
* 支持 configType, configTypes 缓存失效
*
* @param configType 配置类
* @param runner 执行器
* @param configType 配置类
* @param runner 执行器
* @param configTypes 配置类(所有的配置类都会缓存失效)
*/
public static void modify(final Runner runner, Class<? extends Configuration> configType, Class<? extends Configuration>... configTypes) {
@ -106,9 +129,9 @@ public class ConfigurationKit {
* 在一个事务中修改配置
* 支持 configType, configTypes 失效
*
* @param configType 配置类
* @param runner 执行器
* @param callBack 事务回调
* @param configType 配置类
* @param runner 执行器
* @param callBack 事务回调
* @param configTypes 配置类(所有的配置类都会缓存失效)
*/
public static void modify(final Runner runner, WorkerCallBack callBack, Class<? extends Configuration> configType, Class<? extends Configuration>... configTypes) {

6
src/main/java/com/fanruan/api/conf/HolderKit.java

@ -6,9 +6,11 @@ import com.fanruan.api.conf.impl.ObjectColConf;
import com.fanruan.api.conf.impl.ObjectMapConf;
import com.fanruan.api.conf.impl.SimConf;
import com.fr.config.holder.Conf;
import com.fr.config.holder.impl.MapConf;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
@ -109,4 +111,8 @@ public class HolderKit {
public static <K> ColConf<Collection<K>> collection(Collection<K> collection, Class<K> valueType) {
return new ColConf(collection, valueType);
}
public static MapConf<Map<String, String>> map(HashMap<Object, Object> map, Class<String> keyType, Class<String> valueType) {
return new MapConf<>(map, keyType, valueType);
}
}

23
src/main/java/com/fanruan/api/conf/MarketConfigKit.java

@ -0,0 +1,23 @@
package com.fanruan.api.conf;
import com.fr.config.MarketConfig;
public class MarketConfigKit {
/**
* 获取服务器appId
*
* @return appId
*/
public static String getAppId() {
return MarketConfig.getInstance().getCloudOperationMaintenanceId();
}
/**
* 获取已登录帆软市场的用户名
*
* @return userId
*/
public static long getUserId() {
return MarketConfig.getInstance().getBbsUid();
}
}

12
src/main/java/com/fanruan/api/decision/CommonKit.java

@ -5,8 +5,10 @@ import com.fanruan.api.util.StringKit;
import com.fr.base.Base64;
import com.fr.base.ServerConfig;
import com.fr.decision.webservice.utils.DecisionServiceConstants;
import com.fr.decision.webservice.utils.WebServiceUtils;
import com.fr.stable.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.awt.Image;
/**
* @author richie
@ -63,4 +65,14 @@ public class CommonKit {
public static String encode(Image im, String format) {
return Base64.encode(im, format);
}
/**
* 是否是ajax请求
*
* @param request http请求
* @return 是否是ajax请求
*/
public static boolean ajaxRequest(HttpServletRequest request) {
return WebServiceUtils.ajaxRequest(request);
}
}

119
src/main/java/com/fanruan/api/decision/login/LoginKit.java

@ -1,13 +1,20 @@
package com.fanruan.api.decision.login;
import com.fr.data.NetworkHelper;
import com.fr.decision.authorize.Passport;
import com.fr.decision.authorize.impl.HttpPassport;
import com.fr.decision.config.AppearanceConfig;
import com.fr.decision.config.FSConfig;
import com.fr.decision.mobile.terminal.TerminalHandler;
import com.fr.decision.webservice.Response;
import com.fr.decision.webservice.v10.login.LoginService;
import com.fr.decision.webservice.v10.login.TokenResource;
import com.fr.general.ComparatorUtils;
import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory;
import com.fr.security.JwtUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.web.Device;
import com.fr.third.fasterxml.jackson.databind.ObjectMapper;
import com.fr.third.socketio.SocketIOClient;
import com.fr.web.utils.WebUtils;
@ -23,6 +30,118 @@ import javax.servlet.http.HttpServletResponse;
*/
public class LoginKit {
/**
* 根据请求header获取用户名
* @param req http请求
* @return 用户名
*/
public static String getUserNameFromRequest(HttpServletRequest req) {
return LoginService.getInstance().getUserNameFromRequest(req);
}
/**
* 根据请求cookie获取用户名
* @param req http请求
* @return 用户名
*/
public static String getUserNameFromRequestCookie(HttpServletRequest req) {
return LoginService.getInstance().getUserNameFromRequestCookie(req);
}
/**
* 根据请求header获取展示名
* @param req http请求
* @return 用户名
*/
public static String getDisplayNameFromRequest(HttpServletRequest req) {
return LoginService.getInstance().getDisplayNameFromRequest(req);
}
/**
* 根据请求cookie获取展示名
* @param req http请求
* @return 用户名
*/
public static String getDisplayNameFromRequestCookie(HttpServletRequest req) {
return LoginService.getInstance().getDisplayNameFromRequestCookie(req);
}
/**
* 根据请求header获取用户名不会抛出异常
* @param req http请求
* @return 用户名
*/
public static String getCurrentUserNameFromRequest(HttpServletRequest req) {
return LoginService.getInstance().getCurrentUserNameFromRequest(req);
}
/**
* 根据请求cookie获取用户名不会抛出异常
* @param req http请求
* @return 用户名
*/
public static String getCurrentUserNameFromRequestCookie(HttpServletRequest req) {
return LoginService.getInstance().getCurrentUserNameFromRequestCookie(req);
}
/**
* 通过用户名生成token仅用户名登录
*
* @param req http请求
* @param res http响应
* @param username 用户名
* @return token
* @throws Exception 异常
*/
public static String login(HttpServletRequest req, HttpServletResponse res, String username) throws Exception {
return LoginService.getInstance().login(req, res, username);
}
/**
* 通过请求的header获取token
*
* @param req http请求
* @return token
*/
public static String getTokenByHeader(HttpServletRequest req) {
return TokenResource.HEADER.getToken(req);
}
/**
* 通过请求的cookie获取token
*
* @param req http请求
* @return token
*/
public static String getTokenByCookie(HttpServletRequest req) {
return TokenResource.COOKIE.getToken(req);
}
/**
* 校验token是否有效当前登录者和token信息是否一致 & token未超时
*
* @param req http请求
* @param token token
* @param currentUserName 当前用户名
* @return 是否有效
*/
public static boolean checkTokenValid(HttpServletRequest req, String token, String currentUserName) {
try {
//当前登录用户和token对应的用户名不同,需要重新生成token
if (!ComparatorUtils.equals(currentUserName, JwtUtils.parseJWT(token).getSubject())) {
FineLoggerFactory.getLogger().info("Username changed:{}", currentUserName);
return false;
}
Device device = NetworkHelper.getDevice(req);
LoginService.getInstance().loginStatusValid(token, TerminalHandler.getTerminal(req, device));
return true;
} catch (Exception ignore) {
}
return false;
}
/**
* 获取决策平台设置的认证类型
*

22
src/main/java/com/fanruan/api/decision/user/UserKit.java

@ -16,6 +16,17 @@ import java.util.List;
*/
public class UserKit {
/**
* 判断是否存在该用户名
*
* @param username 用户名
* @return 是否存在
* @throws Exception 如果在获取用户的过程中出错了则抛出此异常
*/
public static boolean existUsername(String username) throws Exception {
return UserService.getInstance().getUserByUserName(username) != null;
}
/**
* 根据用户名获取这个用户的来源
*
@ -87,6 +98,17 @@ public class UserKit {
return UserService.getInstance().getCurrentUserId(request);
}
/**
* 获取当前用户idcookie
*
* @param request 请求体
* @return 用户id
* @throws Exception 异常
*/
public static String getCurrentUserIdFromCookie(HttpServletRequest request) throws Exception {
return UserService.getInstance().getCurrentUserIdFromCookie(request);
}
/**
* 获取超级管理角色下的用户ID列表
*

50
src/main/java/com/fanruan/api/design/DesignKit.java

@ -1,5 +1,8 @@
package com.fanruan.api.design;
import com.fr.base.io.BaseBook;
import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.JTemplateProvider;
import com.fr.design.mainframe.WidgetPropertyPane;
import com.fr.base.TableData;
import com.fr.design.DesignModelAdapter;
@ -12,6 +15,7 @@ import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.DesignerFrame;
import com.fr.design.mainframe.HyperlinkGroupPaneActionImpl;
import com.fr.design.mainframe.JTemplate;
import com.fr.module.ModuleContext;
import javax.swing.JComponent;
@ -64,6 +68,43 @@ public class DesignKit {
return HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
}
/**
* 获取当前正在编辑的模板的ID
*
* @return 正在编辑的模板的ID
*/
public static String getCurrentEditingTemplateId() {
return getCurrentEditingTemplate().getTarget().getTemplateID();
}
/**
* 获取指定模板的ID
*
* @param template 指定模板
* @return 模板ID
*/
public static String getTemplateId(JTemplateProvider template) {
return ((BaseBook) template.getTarget()).getTemplateID();
}
/**
* 获取设计器ID
*
* @return 设计器ID
*/
public static String getDesignerId() {
return DesignerEnvManager.getEnvManager().getUUID();
}
/**
* 获取注册码
*
* @return 注册码
*/
public static String getActivationKey() {
return DesignerEnvManager.getEnvManager().getActivationKey();
}
/**
* 根据名字获取已经定义的bean对象
*
@ -97,4 +138,13 @@ public class DesignKit {
public static JComponent getWidgetComponent() {
return (JComponent) (WidgetPropertyPane.getInstance().getEditingFormDesigner().getSelectionModel().getSelection().getSelectedCreator()).getComponent(0);
}
/**
* 设计器是否启动
*
* @return isStartup
*/
public static boolean isStartup() {
return ModuleContext.isDesignerStartup();
}
}

55
src/main/java/com/fanruan/api/design/ui/component/UILockButton.java

@ -0,0 +1,55 @@
package com.fanruan.api.design.ui.component;
import com.fr.design.editlock.EditLockChangeEvent;
import com.fr.design.editlock.EditLockChangeListener;
import com.fr.design.editlock.EditLockUtils;
import com.fr.report.LockItem;
import javax.swing.*;
/**
* @author Yvan
* @version 10.0
* Created by Yvan on 2021/1/20
*/
public class UILockButton extends UIButton implements EditLockChangeListener {
/**
* 锁定状态图标
*/
private final Icon lockedIcon;
/**
* 正常状态图标
*/
private final Icon normalIcon;
/**
* 锁定状态的提示信息
*/
private final String lockedTooltips;
/**
* 正常状态的提示信息
*/
private final String normalTooltips;
public UILockButton(Icon lockedIcon, Icon normalIcon, String lockedTooltips, String normalTooltips) {
super();
this.lockedIcon = lockedIcon;
this.normalIcon = normalIcon;
this.lockedTooltips = lockedTooltips;
this.normalTooltips = normalTooltips;
init();
}
private void init() {
boolean locked = EditLockUtils.isLocked(LockItem.CONNECTION);
this.setIcon(locked ? lockedIcon : normalIcon);
this.setToolTipText(locked ? lockedTooltips : normalTooltips);
}
@Override
public void updateLockedState(EditLockChangeEvent event) {
this.setIcon(event.isLocked() ? lockedIcon : normalIcon);
this.setToolTipText(event.isLocked() ? lockedTooltips : normalTooltips);
this.repaint();
}
}

40
src/main/java/com/fanruan/api/design/work/ConnectionComboBoxPanel.java

@ -5,6 +5,9 @@ import com.fanruan.api.data.ConnectionKit;
import com.fanruan.api.data.open.BaseConnection;
import com.fanruan.api.design.DesignKit;
import com.fanruan.api.design.macro.DataSourceConstants;
import com.fanruan.api.design.ui.component.UIButton;
import com.fanruan.api.design.work.compat.ConnectionLockHelper;
import com.fanruan.api.design.work.component.ItemEditableComboBoxPanel;
import com.fanruan.api.generic.Runner;
import com.fanruan.api.util.AssistKit;
import com.fanruan.api.util.StringKit;
@ -12,10 +15,10 @@ import com.fr.data.impl.Connection;
import com.fr.design.DesignerEnvManager;
import com.fr.design.data.datapane.connect.ConnectionListPane;
import com.fr.design.data.datapane.connect.ConnectionShowPane;
import com.fr.design.data.datapane.connect.ItemEditableComboBoxPanel;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.file.ConnectionConfig;
import com.fr.general.GeneralUtils;
import com.fr.stable.NameReference;
import com.fr.transaction.WorkerCallBack;
import com.fr.workspace.WorkContext;
@ -23,6 +26,7 @@ import com.fr.workspace.server.connection.DBConnectAuth;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
@ -54,6 +58,19 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel {
refreshItems();
}
@Override
protected UIButton initEditButton(UIButton editButton, Dimension buttonSize) {
if (isChangedVersion()) {
return ConnectionLockHelper.generateLockButton(buttonSize, e -> editItems());
} else {
return super.initEditButton(editButton, buttonSize);
}
}
private boolean isChangedVersion() {
return GeneralUtils.readBuildNO().compareTo("2021.03.15") > 0;
}
protected Iterator<String> items() {
nameList = new ArrayList<>();
Iterator<String> nameIt = ConnectionKit.getConnections().keySet().iterator();
@ -92,6 +109,12 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel {
protected void editItems() {
if (isChangedVersion()) {
boolean lock = ConnectionLockHelper.doLock(this);
if (lock) {
return;
}
}
final ConnectionListPane connectionListPane = new ConnectionListPane();
final ConnectionConfig connectionConfig = ConnectionConfig.getInstance();
ConnectionConfig cloned = connectionConfig.mirror();
@ -119,6 +142,7 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel {
@Override
public void afterCommit() {
DesignKit.getDesignerBean("databasename").refreshBeanElement();
unlock();
}
@Override
@ -127,11 +151,23 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel {
}
});
}
@Override
public void doCancel() {
super.doCancel();
unlock();
}
});
connectionListDialog.setVisible(true);
refreshItems();
}
private void unlock() {
if (isChangedVersion()) {
ConnectionLockHelper.unlock();
}
}
/**
* @param connection 数据库链接
*/
@ -176,4 +212,4 @@ public class ConnectionComboBoxPanel extends ItemEditableComboBoxPanel {
}
return -1;
}
}
}

50
src/main/java/com/fanruan/api/design/work/compat/ConnectionLockHelper.java

@ -0,0 +1,50 @@
package com.fanruan.api.design.work.compat;
import com.fanruan.api.design.ui.component.UIButton;
import com.fanruan.api.design.ui.component.UILockButton;
import com.fr.base.svg.IconUtils;
import com.fr.design.editlock.ConnectionLockChangeChecker;
import com.fr.design.editlock.EditLockUtils;
import com.fr.report.LockItem;
import java.awt.*;
import java.awt.event.ActionListener;
/**
* @author richie
* @version 10.0
* Created by richie on 2021/3/18
* 用于兼容没有数据连接lock的版本
*/
public class ConnectionLockHelper {
public static UIButton generateLockButton(Dimension buttonSize, ActionListener listener) {
UILockButton editButton = new UILockButton(
EditLockUtils.CONNECTION_LOCKED_ICON,
IconUtils.readIcon("/com/fr/design/images/m_web/connection"),
EditLockUtils.CONNECTION_LOCKED_TOOLTIPS,
null
);
editButton.setPreferredSize(buttonSize);
editButton.addActionListener(listener);
ConnectionLockChangeChecker.getInstance().addEditLockChangeListener(editButton);
return editButton;
}
public static boolean doLock(Component component) {
// 尝试为数据连接加锁
boolean actionLock = EditLockUtils.lock(LockItem.CONNECTION);
if (!actionLock) {
// 锁定失败,代表已经被其他用户锁定,跳出弹窗提示
EditLockUtils.showLockMessage(component);
return true;
}
return false;
}
public static void unlock() {
// 关闭定义数据连接页面,为其解锁
EditLockUtils.unlock(LockItem.CONNECTION);
}
}

122
src/main/java/com/fanruan/api/design/work/component/ItemEditableComboBoxPanel.java

@ -0,0 +1,122 @@
package com.fanruan.api.design.work.component;
import com.fanruan.api.design.ui.component.UIButton;
import com.fanruan.api.design.ui.component.UIComboBox;
import com.fanruan.api.util.IOKit;
import com.fanruan.api.util.StringKit;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author richie
* @version 10.0
* Created by richie on 2021/3/18
*/
public abstract class ItemEditableComboBoxPanel extends JPanel {
private static final long serialVersionUID = 1L;
protected static final Object EMPTY = new Object() {
public String toString() {
return StringKit.EMPTY;
}
};
protected UIComboBox<?> itemComboBox;
protected UIButton editButton;
protected UIButton refreshButton;
public ItemEditableComboBoxPanel() {
super();
initComponents();
}
protected void initComponents() {
this.setLayout(new BorderLayout(4, 4));
Dimension buttonSize = new Dimension(26, 20);
itemComboBox = new UIComboBox<>();
itemComboBox.setEnabled(true);
this.add(itemComboBox, BorderLayout.CENTER);
refreshButton = new UIButton(IOKit.readIcon("/com/fr/design/images/control/refresh.png"));
JPanel jPanel = new JPanel(new GridLayout(0, 2, 4, 4));
editButton = initEditButton(editButton, buttonSize);
jPanel.add(editButton);
jPanel.add(refreshButton);
this.add(jPanel, BorderLayout.EAST);
refreshButton.setPreferredSize(buttonSize);
refreshButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
refreshItems();
}
});
}
protected UIButton initEditButton(UIButton editButton, Dimension buttonSize) {
editButton = new UIButton(IOKit.readIcon("/com/fr/design/images/control/control-center2.png"));
editButton.setPreferredSize(buttonSize);
editButton.addActionListener(evt -> editItems());
return editButton;
}
/**
* 给itemComboBox添加ActionListener
*/
public void addComboBoxActionListener(ActionListener l) {
itemComboBox.addActionListener(l);
}
protected void refreshItems() {
// 记录原来选中的Item,重新加载后需要再次选中
Object lastSelectedItem = itemComboBox.getSelectedItem();
DefaultComboBoxModel<Object> model = ((DefaultComboBoxModel<Object>) itemComboBox.getModel());
model.removeAllElements();
// 先加EMPTY,再加items
model.addElement(EMPTY);
java.util.Iterator<String> itemIt = items();
while (itemIt.hasNext()) {
model.addElement(itemIt.next());
}
// 再次选中之前选中的Item
int idx = model.getIndexOf(lastSelectedItem);
if (idx < 0) {
idx = 0;
}
itemComboBox.setSelectedIndex(idx);
}
/*
* 得到其中的itemComboBox所选中的Item
*/
public String getSelectedItem() {
Object selected = itemComboBox.getSelectedItem();
return selected instanceof String ? (String) selected : null;
}
/*
* 选中name项
*/
public void setSelectedItem(String name) {
DefaultComboBoxModel model = ((DefaultComboBoxModel) itemComboBox.getModel());
model.setSelectedItem(name);
}
/*
* 刷新ComboBox.items
*/
protected abstract java.util.Iterator<String> items();
/*
* 弹出对话框编辑Items
*/
protected abstract void editItems();
}

9
src/main/java/com/fanruan/api/macro/ProductConstants.java

@ -16,4 +16,13 @@ public class ProductConstants {
* 大的版本号
*/
public static final String MAIN_VERSION = com.fr.stable.ProductConstants.MAIN_VERSION;
/**
* 获取env路径
*
* @return env路径
*/
public static String getEnvHome() {
return com.fr.stable.ProductConstants.getEnvHome();
}
}

60
src/main/java/com/fanruan/api/net/http/HttpKit.java

@ -1,20 +1,12 @@
package com.fanruan.api.net.http;
import com.fanruan.api.macro.EncodeConstants;
import com.fanruan.api.log.LogKit;
import com.fanruan.api.net.http.rs.BaseHttpResponseHandle;
import com.fanruan.api.macro.EncodeConstants;
import com.fanruan.api.net.http.rs.HttpRequest;
import com.fanruan.api.net.http.rs.HttpRequestType;
import com.fanruan.api.net.http.rs.HttpResponseType;
import com.fanruan.api.net.http.rs.StreamResponseHandle;
import com.fanruan.api.net.http.rs.TextResponseHandle;
import com.fanruan.api.net.http.rs.UploadResponseHandle;
import com.fanruan.api.net.http.rs.*;
import com.fr.json.JSONObject;
import com.fr.third.guava.collect.Maps;
import com.fr.third.org.apache.http.HttpEntity;
import com.fr.third.org.apache.http.HttpEntityEnclosingRequest;
import com.fr.third.org.apache.http.HttpHost;
import com.fr.third.org.apache.http.NameValuePair;
import com.fr.third.org.apache.http.NoHttpResponseException;
import com.fr.third.org.apache.http.*;
import com.fr.third.org.apache.http.client.HttpRequestRetryHandler;
import com.fr.third.org.apache.http.client.config.RequestConfig;
import com.fr.third.org.apache.http.client.entity.UrlEncodedFormEntity;
@ -31,6 +23,7 @@ import com.fr.third.org.apache.http.conn.socket.LayeredConnectionSocketFactory;
import com.fr.third.org.apache.http.conn.socket.PlainConnectionSocketFactory;
import com.fr.third.org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import com.fr.third.org.apache.http.entity.FileEntity;
import com.fr.third.org.apache.http.entity.StringEntity;
import com.fr.third.org.apache.http.entity.mime.HttpMultipartMode;
import com.fr.third.org.apache.http.entity.mime.MultipartEntityBuilder;
import com.fr.third.org.apache.http.impl.client.CloseableHttpClient;
@ -45,20 +38,13 @@ import org.jetbrains.annotations.Nullable;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLHandshakeException;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.UnsupportedEncodingException;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import static com.fanruan.api.net.http.rs.HttpRequestType.POST;
@ -205,6 +191,30 @@ public class HttpKit {
});
}
/**
* 发起POST JSON请求并获取返回的文本
*
* @param url 响应请求的的服务器地址
* @param params POST请求的参数
* @return 服务器返回的文本内容
*/
public static String postJSON(String url, JSONObject params, Map<String, String> headers) throws IOException {
StringEntity jsonEntity = new StringEntity(params.toString(), "UTF-8");
jsonEntity.setContentEncoding("UTF-8");
if (headers != null) {
headers.put("Content-Type", "application/json");
} else {
headers = new HashMap<>();
headers.put("Content-Type", "application/json");
}
return executeAndParse(HttpRequest
.custom()
.headers(headers)
.url(url)
.post(jsonEntity)
.build());
}
/**
* 发起POST请求并获取返回的文本
*
@ -438,6 +448,7 @@ public class HttpKit {
/**
* 从指定的地址下载文件
*
* @param url 文件下载地址
* @return 文件的字节流
* @throws IOException 下载过程中出现错误则抛出此异常
@ -448,10 +459,11 @@ public class HttpKit {
/**
* 从指定的地址下载文件
* @param url 文件下载地址
* @param params 参数对
*
* @param url 文件下载地址
* @param params 参数对
* @param responseEncoding 响应的文件编码
* @param headers 请求头
* @param headers 请求头
* @return 文件的字节流
* @throws IOException 下载过程中出现错误则抛出此异常
*/

24
src/main/java/com/fanruan/api/report/ReportEntryKit.java

@ -0,0 +1,24 @@
package com.fanruan.api.report;
import com.fr.decision.webservice.v10.entry.ReportEntryService;
/**
* @author Zed
* @version 10.0
* Created by Zed on 2020/12/14
* 在平台挂查看FR模板的工具类
*/
public class ReportEntryKit {
/**
* 获取FR模板树
*
* @param currentUserId 当前用户id
* @param keyword keyword
* @return 模板树
* @throws Exception 异常
*/
public static Object getReportTemplateTree(String currentUserId, String keyword) throws Exception {
return ReportEntryService.getInstance().getReportTemplateTree(currentUserId, keyword);
}
}

9
src/main/java/com/fanruan/api/runtime/EnvKit.java

@ -48,4 +48,13 @@ public class EnvKit {
public static void checkout() {
SimpleWork.checkOut();
}
/**
* 判断工作目录是否是本地
*
* @return isLocal
*/
public static boolean isLocal() {
return WorkContext.getCurrent().isLocal();
}
}

40
src/main/java/com/fanruan/api/security/SecurityKit.java

@ -1,7 +1,9 @@
package com.fanruan.api.security;
import com.fr.security.SecurityConstant;
import com.fr.security.SecurityToolbox;
import com.fr.stable.CodeUtils;
import com.fr.third.org.apache.commons.lang3.RandomStringUtils;
/**
* @author richie
@ -12,22 +14,27 @@ import com.fr.stable.CodeUtils;
public class SecurityKit {
/**
* RSA加密
*
* @param plainText 要加密的文本内容
* @return 加密后的内容
*/
public static String encrypt(String plainText) {
return SecurityToolbox.encrypt(plainText);
}
/**
* RSA解密
*
* @param cipherText 密文数据
* @return 解密后的内容
*/
public static String decrypt(String cipherText) {
return SecurityToolbox.decrypt(cipherText);
}
/**
* 给字符串解密
*
* @param passwordText 待解密的字符串
* @return 解密后的字符串
*/
@ -38,10 +45,43 @@ public class SecurityKit {
/**
* 给字符串加密
*
* @param passwordText 待加密的字符串
* @return 解加密的字符串
*/
public static String passwordEncode(String passwordText) {
return CodeUtils.passwordEncode(passwordText);
}
/**
* aes加密
*
* @param plainText 明文
* @param seed seed
* @return 密文
*/
public static String aesEncrypt(String plainText, String seed) {
return SecurityToolbox.aesEncrypt(plainText, seed);
}
/**
* aes解密
*
* @param cipherText 密文
* @param seed seed
* @return 明文
*/
public static String aesDecrypt(String cipherText, String seed) {
return SecurityToolbox.aesDecrypt(cipherText, seed);
}
/**
* 生成seed
*
* @return seed
*/
public static String createSeed() {
return RandomStringUtils.randomAlphabetic(SecurityConstant.SEED_LENGTH);
}
}

49
src/test/java/com/fanruan/api/cal/ParameterKitTest.java

@ -150,4 +150,53 @@ public class ParameterKitTest extends Prepare {
"[{\"name\":\"p1\",\"value\":1,\"type\":\"Integer\"},{\"name\":\"p2\",\"value\":\"abc\",\"type\":\"String\"},{\"name\":\"p3\",\"value\":\"=sum(1, 2, 4)\",\"type\":\"String\"}]",
ParameterKit.parameters2Json(providers).toString());
}
@Test
public void testAnalyzeAndMergeParameters() {
ParameterProvider param1 = ParameterKit.newParameter("test1", "1");
ParameterProvider param2 = ParameterKit.newParameter("test2", "2");
String text1 = "${a}";
String text2 = "${test1}";
ParameterProvider[] parameters1 = ParameterKit.analyzeAndMergeParameters(
new String[]{text1, text2},
new ParameterProvider[] {param1, param2}
);
ParameterProvider[] parameters2 = ParameterKit.analyzeAndMergeParameters(null, null);
ParameterProvider[] parameters3 = ParameterKit.analyzeAndMergeParameters(
null,
new ParameterProvider[] {param1, param2}
);
ParameterProvider[] parameters4 = ParameterKit.analyzeAndMergeParameters(
new String[] {},
new ParameterProvider[] {param1, param2}
);
ParameterProvider[] parameters5 = ParameterKit.analyzeAndMergeParameters(
new String[]{text1, text2},
new ParameterProvider[] {}
);
Assert.assertEquals(parameters1.length, 3);
Assert.assertEquals(parameters1[0], param1);
Assert.assertEquals(parameters1[1], param2);
Assert.assertEquals(parameters1[2].getName(), "a");
Assert.assertEquals(parameters1[2].getValue(), "");
Assert.assertEquals(parameters2.length, 0);
Assert.assertEquals(parameters3.length, 2);
Assert.assertEquals(parameters3[0], param1);
Assert.assertEquals(parameters3[1], param2);
Assert.assertEquals(parameters4.length, 2);
Assert.assertEquals(parameters4[0], param1);
Assert.assertEquals(parameters4[1], param2);
Assert.assertEquals(parameters5.length, 2);
Assert.assertEquals(parameters5[0].getName(), "a");
Assert.assertEquals(parameters5[0].getValue(), "");
Assert.assertEquals(parameters5[1].getName(), "test1");
Assert.assertEquals(parameters5[1].getValue(), "");
}
}

20
src/test/java/com/fanruan/api/cluster/state/FineCollectionsKitTest.java

@ -0,0 +1,20 @@
package com.fanruan.api.cluster.state;
import com.fr.collections.api.FineCollectionClient;
import com.fr.collections.api.FineCollectionClientWrapper;
import org.junit.Test;
/**
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/19
*/
public class FineCollectionsKitTest {
@Test
public void testGetClient() throws Exception {
// test
FineCollectionsKit.destroy();
}
}

2
src/test/java/com/fanruan/api/cluster/state/FineJedisPoolKitTest.java

@ -19,7 +19,7 @@ import static org.easymock.EasyMock.mock;
public class FineJedisPoolKitTest {
@Test
public void TestSetRealClient() {
public void testSetRealClient() {
FineJedisPoolKit.setRealClient(new FineStoreWrapper() {

4
src/test/java/com/fanruan/api/cluster/state/RedisConfigKitTest.java

@ -13,7 +13,7 @@ import org.junit.Test;
public class RedisConfigKitTest extends Prepare {
@Test
public void TestGetTableNamePrefix() {
public void testGetTableNamePrefix() {
RedisConfig.getInstance().setTableNamePrefix("test_table name_prefix");
Assert.assertEquals("test_table name_prefix", RedisConfigKit.getTableNamePrefix());
@ -23,7 +23,7 @@ public class RedisConfigKitTest extends Prepare {
}
@Test
public void TestGetExpireStateRemoveInterval() {
public void testGetExpireStateRemoveInterval() {
RedisConfig.getInstance().setExpireStateRemoveInterval(111);
Assert.assertEquals(111, RedisConfig.getInstance().getExpireStateRemoveInterval());

2
src/test/java/com/fanruan/api/cluster/state/StandAloneJedisKitTest.java

@ -18,7 +18,7 @@ import static org.easymock.EasyMock.mock;
public class StandAloneJedisKitTest {
@Test
public void TestCreateStandAloneJedis() {
public void testCreateStandAloneJedis() {
Jedis mockJedis = mock(Jedis.class);
expect(mockJedis.type(anyObject(byte[].class))).andReturn("test_echo");

17
src/test/java/com/fanruan/api/cluster/state/StateServerConfigKitTest.java

@ -13,7 +13,7 @@ import org.junit.Test;
public class StateServerConfigKitTest extends Prepare {
@Test
public void TestGetType() {
public void testGetType() {
StateServerConfig.getInstance().setType("test_type");
Assert.assertEquals("test_type", StateServerConfigKit.getType());
@ -23,7 +23,7 @@ public class StateServerConfigKitTest extends Prepare {
}
@Test
public void TestSetShareMode() {
public void testSetShareMode() {
StateServerConfigKit.setShareMode(true);
Assert.assertTrue(StateServerConfig.getInstance().isShareMode());
@ -33,7 +33,7 @@ public class StateServerConfigKitTest extends Prepare {
}
@Test
public void TestSetType() {
public void testSetType() {
StateServerConfigKit.setType("test_type3");
Assert.assertEquals("test_type3", StateServerConfig.getInstance().getType());
@ -43,8 +43,17 @@ public class StateServerConfigKitTest extends Prepare {
}
@Test
public void TestGetConfigClass() {
public void testGetConfigClass() {
Assert.assertEquals(StateServerConfigKit.getConfigClass(), StateServerConfig.class);
}
@Test
public void testIsShareMode() {
StateServerConfig.getInstance().setShareMode(false);
Assert.assertFalse(StateServerConfigKit.isShareMode());
StateServerConfig.getInstance().setShareMode(true);
Assert.assertTrue(StateServerConfigKit.isShareMode());
}
}

38
src/test/java/com/fanruan/api/cluster/state/StoreTemplateKitTest.java

@ -0,0 +1,38 @@
package com.fanruan.api.cluster.state;
import com.fr.store.impl.accessor.FineStorePool;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
/**
* @author Dylan.Liu
* @version 10.0
* Created by Dylan.Liu on 2021/1/19
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest({FineStorePool.class})
public class StoreTemplateKitTest {
@Test
public void testClose() throws Exception {
// test
FineStorePool fineStorePool = mock(FineStorePool.class);
fineStorePool.close();
expectLastCall().times(1);
PowerMock.mockStaticPartial(FineStorePool.class, "getPool");
expect(FineStorePool.getPool()).andReturn(fineStorePool).times(1);
PowerMock.replayAll();
StoreTemplateKit.close();
PowerMock.verifyAll();
}
}

29
src/test/java/com/fanruan/api/conf/ConfigurationKitTest.java

@ -0,0 +1,29 @@
package com.fanruan.api.conf;
import com.fr.config.Configuration;
import org.junit.Assert;
import org.junit.Test;
import java.lang.reflect.Method;
import java.util.Map;
/**
* @author Zed
* @version 10.0
* Created by Zed on 2020/12/15
*/
public class ConfigurationKitTest {
@Test
public void update() throws Exception {
Class<?> classBook = Class.forName("com.fanruan.api.conf.ConfigurationKit");
Assert.assertNotNull(classBook);
Method method1 = classBook.getDeclaredMethod("getConfig", Configuration.class);
Assert.assertNotNull(method1);
Method method2 = classBook.getDeclaredMethod("setConfig", Configuration.class, Map.class);
Assert.assertNotNull(method2);
}
}

11
src/test/java/com/fanruan/api/decision/CommonKitTest.java

@ -10,9 +10,11 @@ import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import javax.servlet.http.HttpServletRequest;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method;
/**
* @author Lucian.Chen
@ -56,4 +58,13 @@ public class CommonKitTest {
String result = Base64.encode(im, "");
Assert.assertEquals(result, CommonKit.encode(im, ""));
}
@Test
public void ajaxRequest() throws Exception {
Class<?> classBook = Class.forName("com.fanruan.api.decision.CommonKit");
Assert.assertNotNull(classBook);
Method method1 = classBook.getDeclaredMethod("ajaxRequest", HttpServletRequest.class);
Assert.assertNotNull(method1);
}
}

42
src/test/java/com/fanruan/api/decision/login/LoginKitTest.java

@ -19,6 +19,10 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
/**
* @author lidongy
* @version 10.0
@ -38,7 +42,7 @@ public class LoginKitTest {
}
@Test
public void testRefreshToken() throws Exception{
public void testRefreshToken() throws Exception {
String jwtString = JwtKit.createDefaultJWT("123");
try {
LoginKit.refreshToken(jwtString, 1000 * 60, null);
@ -62,4 +66,40 @@ public class LoginKitTest {
AppearanceConfig.getInstance().setLoginPageId("aaa");
Assert.assertEquals(LoginKit.getLoginPageId(), "aaa");
}
@Test
public void getUserNameFromRequest() throws Exception {
Class<?> classBook = Class.forName("com.fanruan.api.decision.login.LoginKit");
Assert.assertNotNull(classBook);
Method method1 = classBook.getDeclaredMethod("getUserNameFromRequest", HttpServletRequest.class);
Assert.assertNotNull(method1);
Method method2 = classBook.getDeclaredMethod("getUserNameFromRequestCookie", HttpServletRequest.class);
Assert.assertNotNull(method2);
Method method3 = classBook.getDeclaredMethod("getDisplayNameFromRequest", HttpServletRequest.class);
Assert.assertNotNull(method3);
Method method4 = classBook.getDeclaredMethod("getDisplayNameFromRequestCookie", HttpServletRequest.class);
Assert.assertNotNull(method4);
Method method5 = classBook.getDeclaredMethod("getCurrentUserNameFromRequest", HttpServletRequest.class);
Assert.assertNotNull(method5);
Method method6 = classBook.getDeclaredMethod("getCurrentUserNameFromRequestCookie", HttpServletRequest.class);
Assert.assertNotNull(method6);
Method method7 = classBook.getDeclaredMethod("login", HttpServletRequest.class, HttpServletResponse.class, String.class);
Assert.assertNotNull(method7);
Method method8 = classBook.getDeclaredMethod("getTokenByHeader", HttpServletRequest.class);
Assert.assertNotNull(method8);
Method method9 = classBook.getDeclaredMethod("getTokenByCookie", HttpServletRequest.class);
Assert.assertNotNull(method9);
Method method10 = classBook.getDeclaredMethod("checkTokenValid", HttpServletRequest.class, String.class, String.class);
Assert.assertNotNull(method10);
}
}

6
src/test/java/com/fanruan/api/decision/user/UserKitTest.java

@ -31,6 +31,12 @@ public class UserKitTest {
Method method1 = classBook.getDeclaredMethod("getCurrentUserId", HttpServletRequest.class);
Assert.assertNotNull(method1);
Method method2 = classBook.getDeclaredMethod("getCurrentUserIdFromCookie", HttpServletRequest.class);
Assert.assertNotNull(method2);
Method method3 = classBook.getDeclaredMethod("existUsername", String.class);
Assert.assertNotNull(method3);
}
@Test

24
src/test/java/com/fanruan/api/report/ReportEntryKitTest.java

@ -0,0 +1,24 @@
package com.fanruan.api.report;
import org.junit.Assert;
import org.junit.Test;
import java.lang.reflect.Method;
/**
* @author Zed
* @version 10.0
* Created by Zed on 2020/12/15
*/
public class ReportEntryKitTest {
@Test
public void getReportTemplateTree() throws Exception {
Class<?> classBook = Class.forName("com.fanruan.api.report.ReportEntryKit");
Assert.assertNotNull(classBook);
Method method1 = classBook.getDeclaredMethod("getReportTemplateTree", String.class, String.class);
Assert.assertNotNull(method1);
}
}

15
src/test/java/com/fanruan/api/security/SecurityKitTest.java

@ -1,18 +1,25 @@
package com.fanruan.api.security;
import java.util.*;
import com.fr.stable.CommonCodeUtils;
import org.junit.Assert;
import org.junit.Test;
public class SecurityKitTest {
@Test
public void passwordDecode(){
public void passwordDecode() {
Assert.assertEquals(SecurityKit.passwordDecode("1234"), CommonCodeUtils.passwordDecode("1234"));
}
@Test
public void passwordEncode(){
public void passwordEncode() {
Assert.assertEquals(SecurityKit.passwordEncode("1234"), CommonCodeUtils.passwordEncode("1234"));
}
@Test
public void aes() {
String seed = SecurityKit.createSeed();
String text = SecurityKit.aesEncrypt("zed", seed);
Assert.assertEquals("zed", SecurityKit.aesDecrypt(text, seed));
}
}

Loading…
Cancel
Save