package com.fr.startup.ui; import com.fr.design.DesignerEnvManager; import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.env.DesignerWorkspaceType; import com.fr.stable.StringUtils; import com.fr.third.guava.collect.Lists; import com.fr.workspace.connect.WorkspaceConnectionInfo; import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * created by Harrison on 2022/07/06 **/ public class StartupPageModel { private StartupWorkspaceBean selectWorkspaceInfo; private List workspaceInfos = new ArrayList<>(); private Map> recentFilesMap = new HashMap<>(); private Runnable openLastTemplateRunnable; private Runnable createNewTemplateRunnable; private Runnable openEmptyTemplateRunnable; public static StartupPageModel create() { DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); String curEnvName = envManager.getCurEnvName(); Iterator envNameIterator = envManager.getEnvNameIterator(); Comparator startupWorkspaceBeanComparator = convertComparator(curEnvName); List infos = Lists.newArrayList(envNameIterator) .stream() .map((e) -> { DesignerWorkspaceInfo workspaceInfo = envManager.getWorkspaceInfo(e); if (workspaceInfo.getType() == DesignerWorkspaceType.Remote) { WorkspaceConnectionInfo connection = workspaceInfo.getConnection(); return new StartupWorkspaceBean(e, connection.getUrl(), workspaceInfo.getType()); } else { return new StartupWorkspaceBean(e, workspaceInfo.getPath(), workspaceInfo.getType()); } }) .sorted(startupWorkspaceBeanComparator) .collect(Collectors.toList()); Map> recentFileMap = new HashMap<>(); for (StartupWorkspaceBean info : infos) { String name = info.getName(); List recentFiles = envManager.getRecentOpenedFilePathList4Env(name); recentFileMap.put(name, recentFiles); } return new StartupPageModel(infos, recentFileMap); } public StartupPageModel(List workspaceInfos, Map> recentFilesMap) { this.selectWorkspaceInfo = workspaceInfos.get(0); this.workspaceInfos = workspaceInfos; this.recentFilesMap = recentFilesMap; } public StartupWorkspaceBean getSelectWorkspaceInfo() { return selectWorkspaceInfo; } public void setSelectWorkspaceInfo(StartupWorkspaceBean selectWorkspaceInfo) { this.selectWorkspaceInfo = selectWorkspaceInfo; } public List getWorkspaceInfos() { return workspaceInfos; } public void setWorkspaceInfos(List workspaceInfos) { this.workspaceInfos = workspaceInfos; } public Map> getRecentFilesMap() { return recentFilesMap; } public void setRecentFilesMap(Map> recentFilesMap) { this.recentFilesMap = recentFilesMap; } public Runnable getOpenLastTemplateRunnable() { return openLastTemplateRunnable; } public void setOpenLastTemplateRunnable(Runnable openLastTemplateRunnable) { this.openLastTemplateRunnable = openLastTemplateRunnable; } public Runnable getCreateNewTemplateRunnable() { return createNewTemplateRunnable; } public void setCreateNewTemplateRunnable(Runnable createNewTemplateRunnable) { this.createNewTemplateRunnable = createNewTemplateRunnable; } public Runnable getOpenEmptyTemplateRunnable() { return openEmptyTemplateRunnable; } public void setOpenEmptyTemplateRunnable(Runnable openEmptyTemplateRunnable) { this.openEmptyTemplateRunnable = openEmptyTemplateRunnable; } private static Comparator convertComparator(String curEnvName) { return (o1, o2) -> { if (StringUtils.equals(curEnvName, o1.getName())) { return -1; } if (StringUtils.equals(curEnvName, o2.getName())) { return 1; } return 0; }; } }