|
|
|
@ -12,6 +12,9 @@ import com.fr.design.mainframe.JTemplate;
|
|
|
|
|
import com.fr.design.mainframe.JTemplateActionListener; |
|
|
|
|
import com.fr.design.mainframe.vcs.VcsConfigManager; |
|
|
|
|
import com.fr.design.mainframe.vcs.ui.FileVersionTable; |
|
|
|
|
import com.fr.event.Event; |
|
|
|
|
import com.fr.event.EventDispatcher; |
|
|
|
|
import com.fr.event.Listener; |
|
|
|
|
import com.fr.general.IOUtils; |
|
|
|
|
import com.fr.log.FineLoggerFactory; |
|
|
|
|
import com.fr.plugin.context.PluginContext; |
|
|
|
@ -20,11 +23,14 @@ import com.fr.report.entity.VcsEntity;
|
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
import com.fr.stable.project.ProjectConstants; |
|
|
|
|
import com.fr.workspace.WorkContext; |
|
|
|
|
import com.fr.workspace.Workspace; |
|
|
|
|
import com.fr.workspace.WorkspaceEvent; |
|
|
|
|
import com.fr.workspace.server.vcs.VcsOperator; |
|
|
|
|
import com.fr.workspace.server.vcs.filesystem.VcsFileSystem; |
|
|
|
|
import com.fr.workspace.server.vcs.git.config.GcConfig; |
|
|
|
|
|
|
|
|
|
import javax.swing.Icon; |
|
|
|
|
import javax.swing.SwingUtilities; |
|
|
|
|
import javax.swing.border.EmptyBorder; |
|
|
|
|
import java.awt.Color; |
|
|
|
|
import java.util.List; |
|
|
|
@ -55,10 +61,26 @@ public class VcsHelper implements JTemplateActionListener {
|
|
|
|
|
private final static String SERVICE_NAME_MOVE = "moveVcs"; |
|
|
|
|
private static final VcsHelper INSTANCE = new VcsHelper(); |
|
|
|
|
|
|
|
|
|
private volatile boolean legacyMode; |
|
|
|
|
|
|
|
|
|
public static VcsHelper getInstance() { |
|
|
|
|
return INSTANCE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private VcsHelper() { |
|
|
|
|
VcsOperator op = WorkContext.getCurrent().get(VcsOperator.class); |
|
|
|
|
// 开了设计器启动页面时一开始取不到VcsOperator,通过下面的切换环境事件再取,这边判断下
|
|
|
|
|
if (op != null) { |
|
|
|
|
legacyMode = op.isLegacyMode(); |
|
|
|
|
} |
|
|
|
|
EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener<Workspace>() { |
|
|
|
|
@Override |
|
|
|
|
public void on(Event event, Workspace param) { |
|
|
|
|
legacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private int containsFolderCounts() { |
|
|
|
|
TemplateFileTree fileTree = TemplateTreePane.getInstance().getTemplateFileTree(); |
|
|
|
|
if (fileTree.getSelectionPaths() == null) { |
|
|
|
@ -137,20 +159,18 @@ public class VcsHelper implements JTemplateActionListener {
|
|
|
|
|
String fileName = getEditingFilename(); |
|
|
|
|
VcsOperator operator = WorkContext.getCurrent().get(VcsOperator.class); |
|
|
|
|
VcsEntity entity = operator.getFileVersionByIndex(fileName, 0); |
|
|
|
|
boolean replace = needDeleteVersion(entity); |
|
|
|
|
int latestFileVersion = 0; |
|
|
|
|
if (entity != null) { |
|
|
|
|
latestFileVersion = entity.getVersion(); |
|
|
|
|
} |
|
|
|
|
if (jt.getEditingFILE() instanceof VcsCacheFileNodeFile) { |
|
|
|
|
operator.saveVersionFromCache(getCurrentUsername(), fileName, StringUtils.EMPTY, latestFileVersion + 1); |
|
|
|
|
operator.saveVersionFromCache(getCurrentUsername(), fileName, StringUtils.EMPTY, latestFileVersion + 1, replace); |
|
|
|
|
String path = DesignerFrameFileDealerPane.getInstance().getSelectedOperation().getFilePath(); |
|
|
|
|
FileVersionTable.getInstance().updateModel(1, WorkContext.getCurrent().get(VcsOperator.class).getVersions(path.replaceFirst(VCS_FILE_SLASH, StringUtils.EMPTY))); |
|
|
|
|
List<VcsEntity> updatedList = WorkContext.getCurrent().get(VcsOperator.class).getVersions(path.replaceFirst(VCS_FILE_SLASH, StringUtils.EMPTY)); |
|
|
|
|
SwingUtilities.invokeLater(() -> FileVersionTable.getInstance().updateModel(1, updatedList)); |
|
|
|
|
} else { |
|
|
|
|
operator.saveVersion(getCurrentUsername(), fileName, StringUtils.EMPTY, latestFileVersion + 1); |
|
|
|
|
} |
|
|
|
|
VcsEntity oldEntity = WorkContext.getCurrent().get(VcsOperator.class).getFileVersionByIndexAndUsername(fileName, getCurrentUsername(), 1); |
|
|
|
|
if (needDeleteVersion(oldEntity)) { |
|
|
|
|
operator.deleteVersion(oldEntity.getFilename(), oldEntity.getVersion()); |
|
|
|
|
operator.saveVersion(getCurrentUsername(), fileName, StringUtils.EMPTY, latestFileVersion + 1, replace); |
|
|
|
|
} |
|
|
|
|
if (GcConfig.getInstance().isGcEnable()) { |
|
|
|
|
operator.gc(); |
|
|
|
@ -188,6 +208,13 @@ public class VcsHelper implements JTemplateActionListener {
|
|
|
|
|
moveVcs.shutdown(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 判断是否为老模式 |
|
|
|
|
* @return 是否为老模式 |
|
|
|
|
*/ |
|
|
|
|
public boolean isLegacyMode() { |
|
|
|
|
return legacyMode; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void templateOpened(JTemplate<?, ?> jt) { |
|
|
|
|