diff options
author | sminto | 2009-08-12 20:28:54 +0000 |
---|---|---|
committer | sminto | 2009-08-12 20:28:54 +0000 |
commit | 56074a3e375193bc25243ddd0bc71532f69b28bb (patch) | |
tree | f165e634fed2c85793c6d5991ed887df33f163c5 /org.eclipse.mylyn.monitor.usage | |
parent | ce8de82f91ff33d4d6aa8b9afd66b176c70877f9 (diff) | |
download | org.eclipse.mylyn.incubator-56074a3e375193bc25243ddd0bc71532f69b28bb.tar.gz org.eclipse.mylyn.incubator-56074a3e375193bc25243ddd0bc71532f69b28bb.tar.xz org.eclipse.mylyn.incubator-56074a3e375193bc25243ddd0bc71532f69b28bb.zip |
RESOLVED - bug 286282: [usage] allow usage upload to support uploading to a server other than eclipse.org
https://bugs.eclipse.org/bugs/show_bug.cgi?id=286282
Diffstat (limited to 'org.eclipse.mylyn.monitor.usage')
7 files changed, 127 insertions, 43 deletions
diff --git a/org.eclipse.mylyn.monitor.usage/schema/study.exsd b/org.eclipse.mylyn.monitor.usage/schema/study.exsd index 041e31ff..0e4f2031 100644 --- a/org.eclipse.mylyn.monitor.usage/schema/study.exsd +++ b/org.eclipse.mylyn.monitor.usage/schema/study.exsd @@ -12,7 +12,7 @@ <element name="study"> <complexType> - <sequence> + <sequence minOccurs="1" maxOccurs="unbounded"> <element ref="scripts"/> <element ref="ui"/> <element ref="monitors"/> diff --git a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/ReportGenerator.java b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/ReportGenerator.java index 41633cac..7dd28d2d 100644 --- a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/ReportGenerator.java +++ b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/ReportGenerator.java @@ -12,6 +12,7 @@ package org.eclipse.mylyn.internal.monitor.usage; import java.io.File; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -27,6 +28,7 @@ import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.IJobChangeListener; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.internal.monitor.core.collection.IUsageCollector; import org.eclipse.mylyn.internal.monitor.core.collection.IUsageScanner; @@ -34,6 +36,8 @@ import org.eclipse.mylyn.internal.monitor.core.collection.InteractionEventCompar import org.eclipse.mylyn.internal.monitor.core.collection.InteractionEventSummary; import org.eclipse.mylyn.internal.monitor.core.collection.InteractionEventUtil; import org.eclipse.mylyn.monitor.core.InteractionEvent; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.progress.IProgressService; /** * Used for generating reports of user activity. @@ -115,18 +119,37 @@ public class ReportGenerator { public void getStatisticsFromInteractionHistories(List<File> sources, IJobChangeListener jobChangeListener) { - GenerateStatisticsJob job = new GenerateStatisticsJob(this, sources); - if (jobChangeListener != null) { - job.addJobChangeListener(jobChangeListener); - } - if (this.listener != null) { - job.addJobChangeListener(this.listener); - } - job.setPriority(Job.LONG); - if (forceSyncForTesting) { - job.run(new NullProgressMonitor()); + final GenerateStatisticsJob job = new GenerateStatisticsJob(this, sources); + if (jobChangeListener == null) { + IProgressService service = PlatformUI.getWorkbench().getProgressService(); + try { + service.run(true, false, new IRunnableWithProgress() { + + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + job.run(monitor); + } + + }); + } catch (InvocationTargetException e) { + StatusHandler.log(new Status(IStatus.ERROR, UiUsageMonitorPlugin.ID_PLUGIN, e.getMessage(), e)); + } catch (InterruptedException e) { + StatusHandler.log(new Status(IStatus.ERROR, UiUsageMonitorPlugin.ID_PLUGIN, e.getMessage(), e)); + } + } else { - job.schedule(); + + if (jobChangeListener != null) { + job.addJobChangeListener(jobChangeListener); + } + if (this.listener != null) { + job.addJobChangeListener(this.listener); + } + job.setPriority(Job.LONG); + if (forceSyncForTesting) { + job.run(new NullProgressMonitor()); + } else { + job.schedule(); + } } } diff --git a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/StudyParameters.java b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/StudyParameters.java index 89c8a43f..43392e02 100644 --- a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/StudyParameters.java +++ b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/StudyParameters.java @@ -21,9 +21,9 @@ import org.eclipse.mylyn.monitor.usage.AbstractStudyQuestionnairePage; */ public class StudyParameters { - private String title = UiUsageMonitorPlugin.DEFAULT_TITLE; + private String title; - private String description = UiUsageMonitorPlugin.DEFAULT_DESCRIPTION; + private String description; private AbstractStudyQuestionnairePage questionnairePage = null; @@ -31,23 +31,47 @@ public class StudyParameters { private long transmitPromptPeriod = UiUsageMonitorPlugin.DEFAULT_DELAY_BETWEEN_TRANSMITS; - private String acceptedUrlList = UiUsageMonitorPlugin.DEFAULT_ACCEPTED_URL_LIST; + private String acceptedUrlList; - private String useContactField = UiUsageMonitorPlugin.DEFAULT_CONTACT_CONSENT_FIELD; + private String useContactField; - private String formsConsent = UiUsageMonitorPlugin.DEFAULT_ETHICS_FORM; + private String formsConsent; - private String version = UiUsageMonitorPlugin.DEFAULT_VERSION; + private String version; - private String servletUrl = UiUsageMonitorPlugin.DEFAULT_UPLOAD_SERVER; + private String uploadServletUrl; - public String getServletUrl() { - return servletUrl; + private String idServletUrl; + + private String questionaireServletUrl; + + public String getUploadServletUrl() { + return uploadServletUrl; } - public void setServletUrl(String servletServerUrl) { - if (servletUrl != null) { - this.servletUrl = servletServerUrl; + public void setUploadServletUrl(String servletServerUrl) { + if (servletServerUrl != null) { + this.uploadServletUrl = servletServerUrl; + } + } + + public String getUserIdServletUrl() { + return idServletUrl; + } + + public void setUserIdServletUrl(String servletUserId) { + if (servletUserId != null) { + this.idServletUrl = servletUserId; + } + } + + public String getQuestionaireServletUrl() { + return questionaireServletUrl; + } + + public void setQuestionaireServletUrl(String servletQuestionaire) { + if (servletQuestionaire != null) { + this.questionaireServletUrl = servletQuestionaire; } } @@ -138,4 +162,13 @@ public class StudyParameters { this.useContactField = useContactField; } } + + public boolean isComplete() { + return title != null && description != null && uploadServletUrl != null && idServletUrl != null; + } + + public boolean isEmpty() { + return title == null && description == null && uploadServletUrl == null && idServletUrl == null; + } + } diff --git a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/UiUsageMonitorPlugin.java b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/UiUsageMonitorPlugin.java index d9f0e278..2ce4a15a 100644 --- a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/UiUsageMonitorPlugin.java +++ b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/UiUsageMonitorPlugin.java @@ -89,12 +89,12 @@ public class UiUsageMonitorPlugin extends AbstractUIPlugin { private static final long DELAY_ON_USER_REQUEST = 5 * DAY; + public static final long DEFAULT_DELAY_BETWEEN_TRANSMITS = 21 * 24 * HOUR; + public static final String DEFAULT_TITLE = "Mylyn Feedback"; public static final String DEFAULT_DESCRIPTION = "Fill out the following form to help us improve Mylyn based on your input.\n"; - public static final long DEFAULT_DELAY_BETWEEN_TRANSMITS = 21 * 24 * HOUR; - public static final String DEFAULT_ETHICS_FORM = "doc/study-ethics.html"; public static final String DEFAULT_VERSION = ""; @@ -277,6 +277,22 @@ public class UiUsageMonitorPlugin extends AbstractUIPlugin { // ------- moved from synch start new MonitorUsageExtensionPointReader().initExtensions(); + if (studyParameters.isEmpty()) { + + studyParameters.setVersion(DEFAULT_VERSION); + studyParameters.setUploadServletUrl(DEFAULT_UPLOAD_SERVER + DEFAULT_UPLOAD_SERVLET); + studyParameters.setUserIdServletUrl(DEFAULT_UPLOAD_SERVER + DEFAULT_UPLOAD_SERVLET_ID); + studyParameters.setQuestionaireServletUrl(null); + + studyParameters.setTitle(DEFAULT_TITLE); + studyParameters.setDescription(DEFAULT_DESCRIPTION); + studyParameters.setTransmitPromptPeriod(DEFAULT_DELAY_BETWEEN_TRANSMITS); + studyParameters.setUseContactField(DEFAULT_CONTACT_CONSENT_FIELD); + studyParameters.setAcceptedUrlList(DEFAULT_ACCEPTED_URL_LIST); + studyParameters.setFormsConsent("/" + DEFAULT_ETHICS_FORM); + + } + if (preferenceMonitor == null) { preferenceMonitor = new PreferenceChangeMonitor(); } @@ -288,10 +304,6 @@ public class UiUsageMonitorPlugin extends AbstractUIPlugin { menuMonitor = new MenuCommandMonitor(); keybindingCommandMonitor = new KeybindingCommandMonitor(); - // browserMonitor = new BrowserMonitor(); - // setAcceptedUrlMatchList(studyParameters.getAcceptedUrlList()); - - studyParameters.setServletUrl(DEFAULT_UPLOAD_SERVER + DEFAULT_UPLOAD_SERVLET); // ------- moved from synch start if (getPreferenceStore().getBoolean(MonitorPreferenceConstants.PREF_MONITORING_ENABLED)) { @@ -315,6 +327,10 @@ public class UiUsageMonitorPlugin extends AbstractUIPlugin { } public void startMonitoring() { + if (studyParameters == null || !studyParameters.isComplete()) { + System.out.println("here"); + return; + } if (getPreferenceStore().contains(MonitorPreferenceConstants.PREF_MONITORING_STARTED)) { return; } @@ -613,8 +629,10 @@ public class UiUsageMonitorPlugin extends AbstractUIPlugin { public void configureProxy(HttpClient httpClient, String uploadScript) { WebUtil.configureHttpClient(httpClient, null); + HostConfiguration hostConfiguration = WebUtil.createHostConfiguration(httpClient, new WebLocation(uploadScript, - uploadAuthentication.getUser(), uploadAuthentication.getPassword()), null); + uploadAuthentication != null ? uploadAuthentication.getUser() : null, + uploadAuthentication != null ? uploadAuthentication.getPassword() : null), null); httpClient.setHostConfiguration(hostConfiguration); } @@ -644,7 +662,7 @@ public class UiUsageMonitorPlugin extends AbstractUIPlugin { class MonitorUsageExtensionPointReader { - public static final String EXTENSION_ID_STUDY = "org.eclipse.mylyn.monitor.ui.study"; + public static final String EXTENSION_ID_STUDY = "org.eclipse.mylyn.monitor.usage.study"; public static final String ELEMENT_SCRIPTS = "scripts"; @@ -691,6 +709,7 @@ public class UiUsageMonitorPlugin extends AbstractUIPlugin { if (extensionPoint != null) { IExtension[] extensions = extensionPoint.getExtensions(); for (IExtension extension : extensions) { + //TODO make this support multiple studies properly IConfigurationElement[] elements = extension.getConfigurationElements(); for (IConfigurationElement element : elements) { if (element.getName().compareTo(ELEMENT_SCRIPTS) == 0) { @@ -714,6 +733,15 @@ public class UiUsageMonitorPlugin extends AbstractUIPlugin { private void readScripts(IConfigurationElement element) { studyParameters.setVersion(element.getAttribute(ELEMENT_SCRIPTS_VERSION)); + String serverUrl = element.getAttribute(ELEMENT_SCRIPTS_SERVER_URL); + String userIdScript = element.getAttribute(ELEMENT_SCRIPTS_GET_USER_ID); + String usageUploadScript = element.getAttribute(ELEMENT_SCRIPTS_UPLOAD_USAGE); + String questionaireUploadScript = element.getAttribute(ELEMENT_SCRIPTS_UPLOAD_QUESTIONNAIRE); + + studyParameters.setUploadServletUrl(serverUrl + usageUploadScript); + studyParameters.setUserIdServletUrl(serverUrl + userIdScript); + studyParameters.setQuestionaireServletUrl(serverUrl + questionaireUploadScript); + } private void readForms(IConfigurationElement element) throws CoreException { diff --git a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/preferences/UsageDataPreferencePage.java b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/preferences/UsageDataPreferencePage.java index 6256e64d..5c22bf1a 100644 --- a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/preferences/UsageDataPreferencePage.java +++ b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/preferences/UsageDataPreferencePage.java @@ -150,7 +150,7 @@ public class UsageDataPreferencePage extends PreferencePage implements IWorkbenc uploadUrl = new Text(group, SWT.BORDER); uploadUrl.setEditable(false); uploadUrl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - uploadUrl.setText(UiUsageMonitorPlugin.getDefault().getStudyParameters().getServletUrl()); + uploadUrl.setText(UiUsageMonitorPlugin.getDefault().getStudyParameters().getUploadServletUrl()); Label events = new Label(group, SWT.NULL); events.setText(" Events since upload:"); diff --git a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/wizards/UsageSubmissionWizard.java b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/wizards/UsageSubmissionWizard.java index 4db8f7e2..e4657a1b 100644 --- a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/wizards/UsageSubmissionWizard.java +++ b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/wizards/UsageSubmissionWizard.java @@ -314,7 +314,7 @@ public class UsageSubmissionWizard extends Wizard implements INewWizard { int status = 0; try { - String servletUrl = UiUsageMonitorPlugin.getDefault().getStudyParameters().getServletUrl(); + String servletUrl = UiUsageMonitorPlugin.getDefault().getStudyParameters().getUploadServletUrl(); final PostMethod filePost = new PostMethod(servletUrl); Part[] parts = { new FilePart("temp.txt", f) }; @@ -404,8 +404,7 @@ public class UsageSubmissionWizard extends Wizard implements INewWizard { // TODO, do this method properly // create a new post method - String url = UiUsageMonitorPlugin.getDefault().getStudyParameters().getServletUrl() - + UiUsageMonitorPlugin.getDefault().getStudyParameters().getServletUrl(); + String url = UiUsageMonitorPlugin.getDefault().getStudyParameters().getUserIdServletUrl(); final GetMethod getUidMethod = new GetMethod(url); NameValuePair first = new NameValuePair("firstName", firstName); @@ -522,9 +521,9 @@ public class UsageSubmissionWizard extends Wizard implements INewWizard { } public int getNewUid() { - final PostMethod filePost = new PostMethod(UiUsageMonitorPlugin.DEFAULT_UPLOAD_SERVER - + UiUsageMonitorPlugin.DEFAULT_UPLOAD_SERVLET_ID); - + final PostMethod filePost = new PostMethod(UiUsageMonitorPlugin.getDefault() + .getStudyParameters() + .getUserIdServletUrl()); filePost.addParameter(new NameValuePair("MylarUserID", "")); final HttpClient client = new HttpClient(); int status = 0; @@ -560,8 +559,9 @@ public class UsageSubmissionWizard extends Wizard implements INewWizard { try { addBackgroundPage(); - final PostMethod filePost = new PostMethod(UiUsageMonitorPlugin.DEFAULT_UPLOAD_SERVER - + UiUsageMonitorPlugin.DEFAULT_UPLOAD_SERVLET_ID); + final PostMethod filePost = new PostMethod(UiUsageMonitorPlugin.getDefault() + .getStudyParameters() + .getUserIdServletUrl()); filePost.addParameter(new NameValuePair("MylarUserID", "")); final HttpClient client = new HttpClient(); int status = 0; diff --git a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/wizards/UsageUploadWizardPage.java b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/wizards/UsageUploadWizardPage.java index 794f37ba..400aab14 100644 --- a/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/wizards/UsageUploadWizardPage.java +++ b/org.eclipse.mylyn.monitor.usage/src/org/eclipse/mylyn/internal/monitor/usage/wizards/UsageUploadWizardPage.java @@ -55,7 +55,7 @@ public class UsageUploadWizardPage extends WizardPage { setTitle("Usage Data Submission"); if (UiUsageMonitorPlugin.getDefault().getCustomizingPlugin() != null) { String customizedTitle = UiUsageMonitorPlugin.getDefault().getStudyParameters().getTitle(); - if (!customizedTitle.equals("")) { + if (customizedTitle != null && !customizedTitle.equals("")) { setTitle(customizedTitle + ": Usage Data Upload"); } } @@ -98,7 +98,7 @@ public class UsageUploadWizardPage extends WizardPage { GridData gd = new GridData(GridData.FILL_HORIZONTAL); serverAddrText.setLayoutData(gd); serverAddrText.setEditable(false); - serverAddrText.setText(UiUsageMonitorPlugin.getDefault().getStudyParameters().getServletUrl()); + serverAddrText.setText(UiUsageMonitorPlugin.getDefault().getStudyParameters().getUploadServletUrl()); label = new Label(topContainer, SWT.NULL); label.setText("Usage file location:"); |