提交 a16b90ed 编写于 作者: S serge-rider

Version update checker redesign

上级 ffa5453b
......@@ -26,16 +26,12 @@ import org.eclipse.ui.application.WorkbenchAdvisor;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
import org.eclipse.ui.ide.IDE;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.core.application.update.DBeaverVersionChecker;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.ui.actions.datasource.DataSourceHandler;
import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog;
import org.jkiss.dbeaver.ui.editors.content.ContentEditorInput;
import java.util.Calendar;
import java.util.Random;
/**
* This workbench advisor creates the window advisor, and specifies
* the perspective id for the initial window.
......@@ -98,27 +94,8 @@ public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
}
private void startVersionChecker() {
if (DBeaverCore.getGlobalPreferenceStore().getBoolean(DBeaverPreferences.UI_AUTO_UPDATE_CHECK)) {
if (new Random().nextInt(4) != 0) {
// check for update with 25% chance
// to avoid too high load on server in release days
return;
}
long lastVersionCheckTime = DBeaverCore.getGlobalPreferenceStore().getLong(DBeaverPreferences.UI_UPDATE_CHECK_TIME);
if (lastVersionCheckTime > 0) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(lastVersionCheckTime);
int checkDay = cal.get(Calendar.DAY_OF_MONTH);
cal.setTimeInMillis(System.currentTimeMillis());
int curDay = cal.get(Calendar.DAY_OF_MONTH);
if (curDay == checkDay) {
return;
}
}
DBeaverCore.getGlobalPreferenceStore().setValue(DBeaverPreferences.UI_UPDATE_CHECK_TIME, System.currentTimeMillis());
DBeaverVersionChecker checker = new DBeaverVersionChecker(false);
checker.schedule(3000);
}
DBeaverVersionChecker checker = new DBeaverVersionChecker(false);
checker.schedule(3000);
}
@Override
......
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.core.application.update;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.Log;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
......@@ -28,6 +29,8 @@ import org.jkiss.dbeaver.registry.updater.VersionDescriptor;
import org.jkiss.dbeaver.model.runtime.AbstractJob;
import java.io.IOException;
import java.util.Calendar;
import java.util.Random;
/**
* Version checker job
......@@ -38,19 +41,46 @@ public class DBeaverVersionChecker extends AbstractJob {
private final boolean showAlways;
public DBeaverVersionChecker(boolean showAlways)
public DBeaverVersionChecker(boolean force)
{
super("DBeaver new version release checker");
this.showAlways = showAlways;
this.showAlways = force;
}
@Override
protected IStatus run(DBRProgressMonitor monitor)
{
boolean showUpdateDialog = showAlways;
if (!showUpdateDialog) {
// Check for auto-update settings
showUpdateDialog = DBeaverCore.getGlobalPreferenceStore().getBoolean(DBeaverPreferences.UI_AUTO_UPDATE_CHECK);
if (showUpdateDialog) {
long lastVersionCheckTime = DBeaverCore.getGlobalPreferenceStore().getLong(DBeaverPreferences.UI_UPDATE_CHECK_TIME);
if (lastVersionCheckTime > 0) {
// Do not check more often than daily
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(lastVersionCheckTime);
int checkMonth = cal.get(Calendar.MONTH);
int checkDay = cal.get(Calendar.DAY_OF_MONTH);
cal.setTimeInMillis(System.currentTimeMillis());
int curMonth = cal.get(Calendar.MONTH);
int curDay = cal.get(Calendar.DAY_OF_MONTH);
if (curMonth == checkMonth && curDay == checkDay) {
// Already checked today
return Status.OK_STATUS;
}
}
}
}
try {
DBeaverCore.getGlobalPreferenceStore().setValue(DBeaverPreferences.UI_UPDATE_CHECK_TIME, System.currentTimeMillis());
VersionDescriptor versionDescriptor = new VersionDescriptor(VersionDescriptor.DEFAULT_VERSION_URL);
if (versionDescriptor.getProgramVersion().compareTo(DBeaverCore.getVersion()) > 0) {
showUpdaterDialog(versionDescriptor);
if (showAlways || showUpdateDialog) {
showUpdaterDialog(versionDescriptor);
}
} else if (showAlways) {
showUpdaterDialog(null);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册