diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java index 9c173a363c..0923283345 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java @@ -31,6 +31,7 @@ import com.fr.stable.StringUtils; import com.fr.stable.core.PropertyChangeAdapter; import com.fr.workspace.WorkContext; import com.fr.workspace.server.database.DataBaseTypeOperator; +import com.fr.workspace.server.repository.connection.ConnectionRepository; import org.jetbrains.annotations.NotNull; import javax.swing.SwingWorker; @@ -314,7 +315,7 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh for (ConnectionBean connectionBean : addedOrUpdatedConnections) { Connection connection = connectionBean.getConnection(); try { - DataOperator.getInstance().validateConnectionSettings(connection); + ConnectionRepository.getInstance().validSettings(new com.fr.workspace.server.entity.connection.ConnectionBean(connection)); } catch (DriverClassNotFoundException e) { FineLoggerFactory.getLogger().info(e.getMessage()); } catch (Exception e) { @@ -327,8 +328,11 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh private void alterConnections(List removedConnNames, List addedOrUpdatedConnections) { try { - WorkContext.getCurrent().get(ConnectionOperator.class, exceptionInfo -> saveByOldWay(removedConnNames, addedOrUpdatedConnections)) - .saveConnection(removedConnNames, addedOrUpdatedConnections); + + /// 数据连接要改为单个修改的形式(考虑配合newUI) + ConnectionRepository.getInstance().add(new com.fr.workspace.server.entity.connection.ConnectionBean(addedOrUpdatedConnections.get(0).getConnection(), "FRDemo")); + //WorkContext.getCurrent().get(ConnectionOperator.class, exceptionInfo -> saveByOldWay(removedConnNames, addedOrUpdatedConnections)) + // .saveConnection(removedConnNames, addedOrUpdatedConnections); // hades:远程环境时,由于时直接RPC调用远程修改,因此设计器本地配置需要失效 if (!WorkContext.getCurrent().isLocal()) { diff --git a/designer-base/src/main/java/com/fr/design/extra/LoginWebBridge.java b/designer-base/src/main/java/com/fr/design/extra/LoginWebBridge.java index 0e561d6881..212cf2cae7 100644 --- a/designer-base/src/main/java/com/fr/design/extra/LoginWebBridge.java +++ b/designer-base/src/main/java/com/fr/design/extra/LoginWebBridge.java @@ -84,7 +84,7 @@ public class LoginWebBridge { */ public void setMessageCount(int count) { if (count == MIN_MESSAGE_COUNT) { - Carina.config(FineBBSConfigProvider.class).setInShowBBsName(DesignerEnvManager.getEnvManager().getDesignerLoginUsername()); + Carina.config(FineBBSConfigProvider.class).setBbsUsername(DesignerEnvManager.getEnvManager().getDesignerLoginUsername()); return; } this.messageCount = count; @@ -92,7 +92,7 @@ public class LoginWebBridge { sb.append(StringUtils.BLANK).append(DesignerEnvManager.getEnvManager().getDesignerLoginUsername()) .append("(").append(this.messageCount) .append(")").append(StringUtils.BLANK); - Carina.config(FineBBSConfigProvider.class).setInShowBBsName(sb.toString()); + Carina.config(FineBBSConfigProvider.class).setBbsUsername(sb.toString()); } public void setQQDialog(UIDialog qqDialog) { diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginWebBridge.java b/designer-base/src/main/java/com/fr/design/extra/PluginWebBridge.java index 2cadcc6770..58b731cf79 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginWebBridge.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginWebBridge.java @@ -551,7 +551,7 @@ public class PluginWebBridge { * 清除用户信息 */ public void clearUserInfo() { - Carina.config(FineBBSConfigProvider.class).setInShowBBsName(StringUtils.EMPTY); + Carina.config(FineBBSConfigProvider.class).setBbsUsername(StringUtils.EMPTY); } public void getPackInfo(final JSObject callback){ diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/generate/task/ComponentUploader.java b/designer-form/src/main/java/com/fr/design/mainframe/share/generate/task/ComponentUploader.java index dfc08ed53d..315cf6bac8 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/generate/task/ComponentUploader.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/generate/task/ComponentUploader.java @@ -104,7 +104,7 @@ public class ComponentUploader implements ComponentBanner { private boolean login(CloseableHttpClient client) throws IOException { String bbsUsername = Carina.config(FineBBSConfigProvider.class).getBbsUsername(); - String bbsPassword = Carina.config(FineBBSConfigProvider.class).getBbsPassword(); + String bbsPassword = Carina.config(FineBBSConfigProvider.class).getCipherPassword(); List pairs = new ArrayList<>(); pairs.add(new BasicNameValuePair(KEY_USERNAME, bbsUsername)); pairs.add(new BasicNameValuePair(KEY_PASSWORD, bbsPassword)); diff --git a/designer-realize/src/main/java/com/fanruan/boot/ConfigHelper.java b/designer-realize/src/main/java/com/fanruan/boot/ConfigHelper.java index b987a1e277..40aebe54b6 100644 --- a/designer-realize/src/main/java/com/fanruan/boot/ConfigHelper.java +++ b/designer-realize/src/main/java/com/fanruan/boot/ConfigHelper.java @@ -4,6 +4,7 @@ import com.fanruan.carina.Carina; import com.fanruan.product.ProductConstants; import com.fr.io.utils.ResourceIOUtils; import com.fr.log.FineLoggerFactory; +import com.fr.stable.StringUtils; import java.io.File; @@ -23,9 +24,12 @@ import java.util.Properties; * Created on 2024/6/26 */ public class ConfigHelper { - public static final String BASE = ProductConstants.getEnvHome() + File.separator + ProductConstants.APP_NAME; public static final String TAIL = ".properties"; + public static final String CONFIG = "confighelper"; + public static final String BASE = ProductConstants.getEnvHome() + File.separator + CONFIG + File.separator; public static final String BASE_PATH = BASE + "BaseProperties" + TAIL; + private static String path = StringUtils.EMPTY; + /** @@ -47,7 +51,36 @@ public class ConfigHelper { * 获取当前环境配置的路径 */ public static String getEnvPropertiesPath() { - return BASE + Carina.getApplicationContext().getWebInfPath().replace("\\", "_").replace("/", "_").replace(":", "_") + TAIL; + return path + TAIL; + } + + /** + * 规范化配置文件的路径,保证配置文件落在缓存文件夹(110)中 + */ + public static String normalise(String path) { + if (!path.startsWith(BASE)) { + path = BASE + path.replace("\\", "_").replace("/", "_").replace(":", "_"); + } + return path; + } + + + /** + * 设置config路径 + */ + public static void setPath(String path) { + ConfigHelper.path = normalise(path); + } + + + /** + * 获取路径 + */ + public static String getPath() { + if (StringUtils.isEmpty(path)) { + path = Carina.getApplicationContext().getWebInfPath(); + } + return path; } private static Properties getProperties(String path, Properties defaultValue){ diff --git a/designer-realize/src/main/java/com/fanruan/boot/env/DesignEnvChooseComponent.java b/designer-realize/src/main/java/com/fanruan/boot/env/DesignEnvChooseComponent.java index 20a92f2c54..e9c9d672db 100644 --- a/designer-realize/src/main/java/com/fanruan/boot/env/DesignEnvChooseComponent.java +++ b/designer-realize/src/main/java/com/fanruan/boot/env/DesignEnvChooseComponent.java @@ -35,6 +35,7 @@ import com.fr.report.lock.DefaultLockInfoOperator; import com.fr.report.lock.LocalLockInfoOperator; import com.fr.report.lock.LockInfoOperator; import com.fr.report.lock.ServerLockInfoOperator; +import com.fr.stable.StringUtils; import com.fr.start.DesignContext; import com.fr.start.module.StartupArgs; import com.fr.value.NotNullLazyValue; @@ -78,6 +79,7 @@ import com.fr.workspace.server.lock.editlock.DefaultEditLockOperator; import com.fr.workspace.server.lock.editlock.EditLockOperator; import com.fr.workspace.server.lock.editlock.LocalEditLockOperator; import com.fr.workspace.server.lock.editlock.ServerEditLockOperator; +import com.fr.workspace.server.repository.WorkplaceConstants; import com.fr.workspace.server.share.DefaultShareComponentOperator; import com.fr.workspace.server.share.DefaultShareEmbeddedConverter; import com.fr.workspace.server.socket.FineSocketInfoOperator; @@ -108,6 +110,8 @@ public class DesignEnvChooseComponent { public void on(Event event, Workspace current) { try { BootstrapFactory.get().reboot("design_env_prepare"); + // 环境切换后,等到模块重启更新一下当前的系统信息 + WorkplaceConstants.updateBean(); } catch (Exception e) { throw new RuntimeException(e); } @@ -182,6 +186,7 @@ public class DesignEnvChooseComponent { String current = DesignerEnvManager.getEnvManager().getCurEnvName(); workspaceInfo = WorkspaceUtils.getWorkspaceInfo(); ((DesignContext)Carina.getApplicationContext()).setDesignWebInfPath(workspaceInfo.getPath()); + updateConfigPath(workspaceInfo); Workspace workspace = DesignerWorkspaceGenerator.generate(workspaceInfo); boolean checkValid = workspace != null && workspaceInfo.checkValid(); if (!checkValid) { @@ -203,6 +208,14 @@ public class DesignEnvChooseComponent { ConfigRepositoryFactory.getInstance().registerConfigRepositoryBuilder(new LocalConfigRepositoryBuilder(ConfigHelper.getEnvProperties(), ConfigHelper.getEnvPropertiesPath())); } + private void updateConfigPath(DesignerWorkspaceInfo workspaceInfo) { + if (StringUtils.isEmpty(workspaceInfo.getPath())) { + ConfigHelper.setPath(workspaceInfo.getConnection().getUrl()); + } else { + ConfigHelper.setPath(workspaceInfo.getPath()); + } + } + /** * 注册切换环境前后事件监听 */ diff --git a/designer-realize/src/main/java/com/fanruan/boot/env/DesignEnvComponent.java b/designer-realize/src/main/java/com/fanruan/boot/env/DesignEnvComponent.java index 55799fc3ec..5c7937416d 100644 --- a/designer-realize/src/main/java/com/fanruan/boot/env/DesignEnvComponent.java +++ b/designer-realize/src/main/java/com/fanruan/boot/env/DesignEnvComponent.java @@ -244,20 +244,21 @@ public class DesignEnvComponent { private void startCorePrepare() { - - EncryptionInitialization.getInstance().init(); - EncryptionScaffold.setSecuritySeedProvider(new SecuritySeedProvider() { - @Override - public byte[] getSeed() { - return LoadSeedSecurityKey.getInstance().loadSeedFile(); - } - - @Override - public void resetSeed() { - LoadSeedSecurityKey.getInstance().reset(); - } - }); - LoadSeedSecurityKey.getInstance().init(); + if (WorkContext.getCurrent().isLocal()) { + EncryptionInitialization.getInstance().init(); + EncryptionScaffold.setSecuritySeedProvider(new SecuritySeedProvider() { + @Override + public byte[] getSeed() { + return LoadSeedSecurityKey.getInstance().loadSeedFile(); + } + + @Override + public void resetSeed() { + LoadSeedSecurityKey.getInstance().reset(); + } + }); + LoadSeedSecurityKey.getInstance().init(); + } } private void stopCorePrepare() { diff --git a/designer-realize/src/main/java/com/fanruan/boot/init/DesignWorkContextComponent.java b/designer-realize/src/main/java/com/fanruan/boot/init/DesignWorkContextComponent.java index 49fef0bd5e..4411a66674 100644 --- a/designer-realize/src/main/java/com/fanruan/boot/init/DesignWorkContextComponent.java +++ b/designer-realize/src/main/java/com/fanruan/boot/init/DesignWorkContextComponent.java @@ -7,6 +7,7 @@ import com.fanruan.carina.annotions.Start; import com.fanruan.carina.annotions.Stop; import com.fanruan.carina.annotions.Supplemental; import com.fanruan.plugin.autonomy.AutonomyClassManagerGroup; +import com.fanruan.workplace.conetxt.CompatiblePool; import com.fanruan.workplace.http.RepositoryManager; import com.fanruan.workplace.http.WorkspaceHeartBeatShell; import com.fanruan.workplace.standard.ServerInfo; @@ -88,12 +89,11 @@ public class DesignWorkContextComponent { RepositoryManager.getInstance().pureRegisterRepo4Start(WorkResourceRepository.getInstance()); RepositoryManager.getInstance().pureRegisterRepo4Start(PublicResourceRepository.getInstance()); RepositoryManager.getInstance().initLocalRepository(); + CompatibleRegister.registerCompatibleEnv(); for (WorkRPCRegister workRPCRegister : ServiceContext.group(WorkspaceKey.class).getAll()) { validate(workRPCRegister.getClazz()); - FineObjectPool.getInstance().add(workRPCRegister.getClazz(), workRPCRegister.getType(), workRPCRegister.getObject()); + FineObjectPool.getInstance().add(workRPCRegister.getClazz(), workRPCRegister.getType(), CompatiblePool.getInstance().getCompatibleUse(workRPCRegister.getClazz(), workRPCRegister.getObject())); } - CompatibleRegister.registerCompatibleEnv(); - WorkContext.setConnector(HttpWorkspaceConnector.getInstance()); WorkContext.setFactory(FineWorkspaceFactory.getInstance()); WorkContext.setWorkResource(new FineWorkResourceAdaptor());