|
|
|
@ -15,6 +15,7 @@ import com.fr.esd.util.ESDUtils;
|
|
|
|
|
import com.fr.locale.InterProviderFactory; |
|
|
|
|
import com.fr.log.FineLoggerFactory; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
import com.fr.third.org.quartz.CronExpression; |
|
|
|
|
|
|
|
|
|
import javax.swing.AbstractAction; |
|
|
|
|
import javax.swing.JPanel; |
|
|
|
@ -25,9 +26,11 @@ import java.awt.Desktop;
|
|
|
|
|
import java.awt.event.ActionEvent; |
|
|
|
|
import java.awt.event.ActionListener; |
|
|
|
|
import java.net.URI; |
|
|
|
|
import java.text.ParseException; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Collections; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Date; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author rinoux |
|
|
|
@ -36,7 +39,6 @@ import java.util.List;
|
|
|
|
|
*/ |
|
|
|
|
public class ESDStrategyConfigPane extends BasicBeanPane<StrategyConfig> { |
|
|
|
|
private static final String CRON_HELP_URL = "http://help.fanruan.com/finereport/doc-view-693.html"; |
|
|
|
|
|
|
|
|
|
private UIRadioButton selectAutoUpdate; |
|
|
|
|
private UIRadioButton selectBySchema; |
|
|
|
|
private UICheckBox shouldEvolve; |
|
|
|
@ -131,8 +133,7 @@ public class ESDStrategyConfigPane extends BasicBeanPane<StrategyConfig> {
|
|
|
|
|
ob = StrategyConfigHelper.createStrategyConfig(true, false, true); |
|
|
|
|
} |
|
|
|
|
this.strategyConfig = ob; |
|
|
|
|
|
|
|
|
|
this.updateInterval.setText(ob.getUpdateInterval() <= 0 ? "0" : String.valueOf(ob.getUpdateInterval() / (double) CacheConstants.MILLIS_OF_MINUTE)); |
|
|
|
|
this.updateInterval.setText(ob.getUpdateInterval() <= 0 ? "0" : String.format("%.0f", ob.getUpdateInterval() / (double) CacheConstants.MILLIS_OF_MINUTE)); |
|
|
|
|
this.schemaTime.setText(StringUtils.join(",", ob.getUpdateSchema().toArray(new String[0]))); |
|
|
|
|
this.shouldEvolve.setSelected(ob.shouldEvolve()); |
|
|
|
|
this.selectBySchema.setSelected(ob.isScheduleBySchema()); |
|
|
|
@ -177,11 +178,19 @@ public class ESDStrategyConfigPane extends BasicBeanPane<StrategyConfig> {
|
|
|
|
|
|
|
|
|
|
if (ESDUtils.checkUpdateTimeSchema(text)) { |
|
|
|
|
if (ESDUtils.isCronExpression(text)) { |
|
|
|
|
schemaTimes.add(text); |
|
|
|
|
if (checkCornTimeInterval(text)) { |
|
|
|
|
schemaTimes.add(text); |
|
|
|
|
} else { |
|
|
|
|
this.schemaTimeCheckTips.setText(InterProviderFactory.getDesignI18nProvider().i18nText("Fine-Design_ESD_Error_Time_Interval_Too_Short")); |
|
|
|
|
this.schemaTimeCheckTips.setVisible(true); |
|
|
|
|
throw new IllegalArgumentException("[ESD]Update schema time interval is to short."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
Collections.addAll(schemaTimes, text.split(",")); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
this.schemaTimeCheckTips.setText(InterProviderFactory.getDesignI18nProvider().i18nText("Fine-Design_ESD_Error_Time_Format")); |
|
|
|
|
this.schemaTimeCheckTips.setVisible(true); |
|
|
|
|
throw new IllegalArgumentException("[ESD]Update schema time format error."); |
|
|
|
|
} |
|
|
|
@ -211,7 +220,7 @@ public class ESDStrategyConfigPane extends BasicBeanPane<StrategyConfig> {
|
|
|
|
|
|
|
|
|
|
private boolean checkUpdateInterval(String intervalValue) { |
|
|
|
|
try { |
|
|
|
|
return !StringUtils.isEmpty(intervalValue) && !(Double.parseDouble(intervalValue) <= 0); |
|
|
|
|
return !StringUtils.isEmpty(intervalValue) && !(Integer.parseInt(intervalValue) <= 0); |
|
|
|
|
} catch (NumberFormatException e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
} |
|
|
|
@ -219,6 +228,18 @@ public class ESDStrategyConfigPane extends BasicBeanPane<StrategyConfig> {
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean checkCornTimeInterval (String cronText) { |
|
|
|
|
// 判断后两次更新时间间隔,如果小于1分钟就返回false
|
|
|
|
|
try { |
|
|
|
|
CronExpression cron = new CronExpression(cronText); |
|
|
|
|
Date next1 = cron.getNextValidTimeAfter(new Date()); |
|
|
|
|
Date next2 = cron.getNextValidTimeAfter(next1); |
|
|
|
|
return next2.getTime() - next1.getTime() >= CacheConstants.MILLIS_OF_MINUTE; |
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected String title4PopupWindow() { |
|
|
|
|
return InterProviderFactory.getDesignI18nProvider().i18nText("Fine-Design_ESD_Cache_Strategy_Config_Title"); |
|
|
|
|