@ -79,7 +79,14 @@ public class VcsHelper implements JTemplateActionListener {
EventDispatcher . listen ( ConfigEvent . READY , new ListenerAdaptor ( ) {
@Override
protected void on ( Event event ) {
legacyMode = WorkContext . getCurrent ( ) . get ( VcsOperator . class ) . isLegacyMode ( ) ;
try {
legacyMode = WorkContext . getCurrent ( ) . get ( VcsOperator . class ) . isLegacyMode ( ) ;
FineLoggerFactory . getLogger ( ) . info ( "[VcsHelper] legacyMode:{}" , legacyMode ) ;
} catch ( Exception e ) {
//保险起见走老逻辑
legacyMode = true ;
FineLoggerFactory . getLogger ( ) . error ( "[VcsHelper] get legacy failed" , e . getMessage ( ) ) ;
}
}
} ) ;
}
@ -99,7 +106,6 @@ public class VcsHelper implements JTemplateActionListener {
JTemplate template = HistoryTemplateListCache . getInstance ( ) . getCurrentEditingTemplate ( ) ;
if ( DesignerEnvManager . getEnvManager ( ) . getVcsConfigManager ( ) . isVcsEnable ( ) & & JTemplate . isValid ( template ) ) {
fireAutoSaveVcs ( template ) ;
FineLoggerFactory . getLogger ( ) . info ( "[VcsV2] fire Vcs auto save success!" ) ;
}
}
} , interval , interval , TimeUnit . MINUTES ) ;
@ -263,7 +269,7 @@ public class VcsHelper implements JTemplateActionListener {
@Override
public void templateOpened ( JTemplate < ? , ? > jt ) {
try {
if ( VcsConfigManager . getInstance ( ) . isUseAutoSave ( ) ) {
if ( checkAutoSaveSupport ( ) ) {
startAutoSave ( VcsConfigManager . getInstance ( ) . getAutoSaveInterval ( ) ) ;
}
} catch ( Exception e ) {
@ -282,25 +288,16 @@ public class VcsHelper implements JTemplateActionListener {
* @param jt 模板
* /
public void fireAutoSaveVcs ( final JTemplate jt ) {
ExecutorService fireVcs = Executors . newSingleThreadExecutor ( new NamedThreadFactory ( "autoFireVcs" ) ) ;
fireVcs . execute ( new Runnable ( ) {
@Override
public void run ( ) {
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 ( JTemplate . isValid ( jt ) ) {
doSave ( jt , fileName , latestFileVersion , replace , operator ) ;
}
}
} ) ;
if ( ! fireVcs . isShutdown ( ) ) {
fireVcs . shutdown ( ) ;
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 ( JTemplate . isValid ( jt ) ) {
doSave ( jt , fileName , latestFileVersion , replace , operator ) ;
}
}
@ -348,7 +345,9 @@ public class VcsHelper implements JTemplateActionListener {
@Override
public void templateClosed ( JTemplate < ? , ? > jt ) {
try {
stopAutoSave ( ) ;
if ( checkAutoSaveSupport ( ) ) {
stopAutoSave ( ) ;
}
} catch ( Exception e ) {
FineLoggerFactory . getLogger ( ) . error ( e . getMessage ( ) ) ;
}
@ -372,4 +371,13 @@ public class VcsHelper implements JTemplateActionListener {
public boolean checkMoveFunctionSupport ( ) {
return VcsHelper . getInstance ( ) . isLegacyMode ( ) & & ( WorkContext . getCurrent ( ) . isLocal ( ) | | WorkContext . getCurrent ( ) . isRoot ( ) ) ;
}
/ * *
* 是否支持自动保存
*
* @return 支持返回true
* /
public boolean checkAutoSaveSupport ( ) {
return VcsConfigManager . getInstance ( ) . isUseAutoSave ( ) & & ! VcsHelper . getInstance ( ) . isLegacyMode ( ) ;
}
}