package com.fanruan.api.env; import com.fanruan.api.env.shell.ModuleShell; import com.fr.base.operator.common.CommonOperator; import com.fr.chart.activator.ChartBaseActivator; import com.fr.cluster.engine.activator.standalone.StandaloneModeActivator; import com.fr.config.activator.BaseDBActivator; import com.fr.config.activator.ConfigurationActivator; import com.fr.env.operator.CommonOperatorImpl; import com.fr.general.I18nResource; import com.fr.module.Module; import com.fr.module.tool.ActivatorToolBox; import com.fr.report.ReportActivator; import com.fr.report.RestrictionActivator; import com.fr.report.module.ReportBaseActivator; import com.fr.scheduler.SchedulerActivator; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import com.fr.store.StateServerActivator; import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; import com.fr.workspace.resource.WorkResource; import com.fr.workspace.simple.SimpleWork; import org.jetbrains.annotations.NotNull; /** * @author richie * @version 10.0 * Created by richie on 2019-08-09 */ public class EnvKit { /** * 获取当前的工作目录 * @return 工作目录 */ public static Workspace getCurrent() { return WorkContext.getCurrent(); } /** * 获取当前工作目录的资源读写对象 * @return 资源读写对象 */ public static WorkResource getWorkResource() { return WorkContext.getWorkResource(); } /** * 设置一个目录为工作目录 * @param path 工作目录位置 */ public static void setCurrent(@NotNull String path) { if (path.endsWith(ProjectConstants.WEBINF_NAME)) { SimpleWork.checkIn(path); } else { throw new IllegalArgumentException("Cannot set " + path + " as work directory."); } } /** * 创建本地服务器启动模块 * * @param envPath 本地工程路径 : D:\\FineReport_10.0\\webapps\\webroot\\WEB-INF * @return 模块代理对象 使用ModuleShell的start和stop控制模块启停 */ public static ModuleShell createLocalStartModule(String envPath) { Module module = ActivatorToolBox.simpleLink( new BaseDBActivator(), new ConfigurationActivator(), new StandaloneModeActivator(), new StateServerActivator(), new SchedulerActivator(), new ReportBaseActivator(), new RestrictionActivator(), new ReportActivator(), new ChartBaseActivator() ); SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl()); if (StringUtils.isNotEmpty(envPath)) { SimpleWork.checkIn(envPath); } I18nResource.getInstance(); return new ModuleShell(module); } /** * 退出当前工作目录 */ public static void checkout() { SimpleWork.checkOut(); } }