|
|
|
package com.fr.start.common;
|
|
|
|
|
|
|
|
import com.fr.design.DesignerEnvManager;
|
|
|
|
import com.fr.design.env.DesignerWorkspaceInfo;
|
|
|
|
import com.fr.design.env.DesignerWorkspaceType;
|
|
|
|
import com.fr.file.FileFILE;
|
|
|
|
import com.fr.start.module.StartupArgs;
|
|
|
|
import com.fr.startup.metric.DesignerMetrics;
|
|
|
|
import com.fr.startup.ui.StartupPageModel;
|
|
|
|
import com.fr.third.guava.collect.Lists;
|
|
|
|
import com.fr.third.org.apache.commons.lang3.time.StopWatch;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Iterator;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 启动页上下文
|
|
|
|
*
|
|
|
|
* created by Harrison on 2022/06/22
|
|
|
|
**/
|
|
|
|
public class DesignerStartupContext {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 启动参数
|
|
|
|
*/
|
|
|
|
private StartupArgs startupArgs;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 启动数据
|
|
|
|
*/
|
|
|
|
private StartupPageModel startupPageModel;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 设计器启动埋点
|
|
|
|
*/
|
|
|
|
private final DesignerMetrics designerMetrics = new DesignerMetrics();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 是否在起始页打开的等待过程中
|
|
|
|
*/
|
|
|
|
private boolean onWaiting = false;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 是否在启动中
|
|
|
|
*/
|
|
|
|
private boolean onStartup = true;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 是否在预热中
|
|
|
|
*/
|
|
|
|
private boolean onWarmup = false;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 打开上一次的文件
|
|
|
|
*/
|
|
|
|
private boolean openLastFile;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 打开空设计器
|
|
|
|
*/
|
|
|
|
private boolean openEmpty;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 直接创建一个新模板
|
|
|
|
*/
|
|
|
|
private boolean createNew;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 启动的模板
|
|
|
|
*/
|
|
|
|
private FileFILE startingTemplateFile;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 时间记录
|
|
|
|
*/
|
|
|
|
private static StopWatch STOP_WATCH = new StopWatch();
|
|
|
|
|
|
|
|
public static DesignerStartupContext getInstance() {
|
|
|
|
return StartupContextHolder.INSTANCE;
|
|
|
|
}
|
|
|
|
|
|
|
|
private static class StartupContextHolder {
|
|
|
|
private static final DesignerStartupContext INSTANCE = new DesignerStartupContext();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static StopWatch getRecorder() {
|
|
|
|
return STOP_WATCH;
|
|
|
|
}
|
|
|
|
|
|
|
|
public DesignerMetrics getDesignerMetrics() {
|
|
|
|
return designerMetrics;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 启动模式 */
|
|
|
|
|
|
|
|
public FileFILE getStartingTemplateFile() {
|
|
|
|
return startingTemplateFile;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setStartingTemplateFile(FileFILE startingTemplateFile) {
|
|
|
|
this.startingTemplateFile = startingTemplateFile;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 展示启动页
|
|
|
|
* 1. 判断当前的工作目录数量
|
|
|
|
* 2. 判断是否是 demo、还是打开目标文件
|
|
|
|
* 3. 功能是否开启
|
|
|
|
*
|
|
|
|
* @return 是/否
|
|
|
|
*/
|
|
|
|
public boolean isShowStartupPage() {
|
|
|
|
|
|
|
|
DesignerEnvManager envManager = DesignerEnvManager.getEnvManager();
|
|
|
|
Iterator<String> envNameIterator = envManager.getEnvNameIterator();
|
|
|
|
ArrayList<String> envs = Lists.newArrayList(envNameIterator);
|
|
|
|
return !startupArgs.isDemo() && DesignerStartupUtil.convertArgs2FILE(startupArgs.get()) == null && !envs.isEmpty() && envManager.isStartupPageEnabled();
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 预热相关 */
|
|
|
|
|
|
|
|
public boolean onWarmup() {
|
|
|
|
|
|
|
|
return this.onWarmup;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean canWarmup() {
|
|
|
|
|
|
|
|
String curEnvName = DesignerEnvManager.getEnvManager().getCurEnvName();
|
|
|
|
DesignerWorkspaceInfo workspaceInfo = DesignerEnvManager.getEnvManager().getWorkspaceInfo(curEnvName);
|
|
|
|
return workspaceInfo.getType() == DesignerWorkspaceType.Local;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setStartupPageModel(StartupPageModel startupPageModel) {
|
|
|
|
this.startupPageModel = startupPageModel;
|
|
|
|
}
|
|
|
|
|
|
|
|
public StartupPageModel getStartupPageModel() {
|
|
|
|
|
|
|
|
return startupPageModel;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isOnWaiting() {
|
|
|
|
return onWaiting;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setOnWaiting(boolean onWaiting) {
|
|
|
|
this.onWaiting = onWaiting;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isSupport() {
|
|
|
|
return onStartup && isShowStartupPage();
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isOnStartup() {
|
|
|
|
return onStartup;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setOnStartup(boolean onStartup) {
|
|
|
|
this.onStartup = onStartup;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 文件相关*/
|
|
|
|
|
|
|
|
public boolean isOpenLastFile() {
|
|
|
|
|
|
|
|
return this.openLastFile;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isOpenEmpty() {
|
|
|
|
|
|
|
|
return this.openEmpty;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* set */
|
|
|
|
|
|
|
|
public void setOnWarmup(boolean onWarmup) {
|
|
|
|
this.onWarmup = onWarmup;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setOpenLastFile(boolean openLastFile) {
|
|
|
|
this.openLastFile = openLastFile;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setOpenEmpty(boolean openEmpty) {
|
|
|
|
this.openEmpty = openEmpty;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isCreateNew() {
|
|
|
|
return createNew;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setCreateNew(boolean createNew) {
|
|
|
|
this.createNew = createNew;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setStartupArgs(StartupArgs startupArgs) {
|
|
|
|
this.startupArgs = startupArgs;
|
|
|
|
}
|
|
|
|
}
|