diff --git a/main/plugins/org.talend.core.runtime/META-INF/MANIFEST.MF b/main/plugins/org.talend.core.runtime/META-INF/MANIFEST.MF
index 66f1008502..275db29a63 100644
--- a/main/plugins/org.talend.core.runtime/META-INF/MANIFEST.MF
+++ b/main/plugins/org.talend.core.runtime/META-INF/MANIFEST.MF
@@ -6,6 +6,7 @@ Bundle-Version: 8.0.1.qualifier
Bundle-Localization: plugin
Bundle-Vendor: .Talend SA.
Export-Package: org.talend.analysistask,
+ org.talend.commons.report,
org.talend.commons.utils.generation,
org.talend.commons.utils.io,
org.talend.commons.utils.workbench.resources,
diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/analysistask/ItemAnalysisReportManager.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/analysistask/ItemAnalysisReportManager.java
index 00e15127cd..75b0e81726 100644
--- a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/analysistask/ItemAnalysisReportManager.java
+++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/analysistask/ItemAnalysisReportManager.java
@@ -26,26 +26,12 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.widgets.WidgetFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.report.ItemsReportUtil;
-import org.talend.commons.utils.io.FilesUtils;
+import org.talend.commons.report.ReportAccessDialog;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.general.Project;
import org.talend.core.model.properties.Item;
@@ -175,8 +161,10 @@ public class ItemAnalysisReportManager {
boolean generateSuccess = ItemsReportUtil.generateReportFile(reportFile, ANALYSIS_REPORT_HEAD, recordLines);
if (generateSuccess) {
Display.getDefault().asyncExec(() -> {
- AnalysisReportAccessDialog accessDialog = new AnalysisReportAccessDialog(
+ ReportAccessDialog accessDialog = new ReportAccessDialog(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ Messages.getString("AnalysisReportAccessDialog.shellTitle"),
+ Messages.getString("AnalysisReportAccessDialog.generateSuccess"),
reportFile.getAbsolutePath());
accessDialog.open();
});
@@ -240,76 +228,3 @@ public class ItemAnalysisReportManager {
}
}
-
-class AnalysisReportAccessDialog extends Dialog {
-
- private String reportGeneratedFile;
-
- protected AnalysisReportAccessDialog(Shell parentShell, String reportGeneratedFile) {
- super(parentShell);
- this.reportGeneratedFile = reportGeneratedFile;
- }
-
- @Override
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(Messages.getString("AnalysisReportAccessDialog.shellTitle"));
- }
-
- @Override
- protected void initializeBounds() {
- getShell().setSize(700, 190);
- Point location = getInitialLocation(getShell().getSize());
- getShell().setLocation(location.x, location.y);
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- GridLayout layout = new GridLayout();
- layout.marginWidth = 0;
- layout.marginHeight = 0;
- Composite container = WidgetFactory.composite(SWT.NONE).layout(layout).layoutData(new GridData(GridData.FILL_BOTH))
- .create(parent);
- applyDialogFont(container);
-
- Composite composite = new Composite(container, SWT.NONE);
- GridLayout compositeLayout = new GridLayout();
- compositeLayout.numColumns = 1;
- compositeLayout.marginWidth = 0;
- compositeLayout.marginTop = 8;
- compositeLayout.marginLeft = 10;
- composite.setLayout(compositeLayout);
- Label successMsgLabel = new Label(composite, SWT.NONE);
- successMsgLabel.setText(Messages.getString("AnalysisReportAccessDialog.generateSuccess"));
- GridData gridData = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_VERTICAL);
- successMsgLabel.setLayoutData(gridData);
-
- Link accessLink = new Link(composite, SWT.NONE);
- accessLink.setText(Messages.getString("AnalysisReportAccessDialog.completeReportAvailable") + " "
- + Messages.getString("AnalysisReportAccessDialog.accessReport") + " ");
- accessLink.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_VERTICAL));
- accessLink.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- File reportFile = new File(reportGeneratedFile);
- if (reportFile != null && reportFile.exists()) {
- try {
- FilesUtils.selectFileInSystemExplorer(reportFile);
- } catch (Exception excep) {
- ExceptionHandler.process(excep);
- }
- }
- }
-
- });
-
- return container;
- }
-
- @Override
- protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
- }
-
-}
diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/commons/report/ReportAccessDialog.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/commons/report/ReportAccessDialog.java
new file mode 100644
index 0000000000..384fd95664
--- /dev/null
+++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/commons/report/ReportAccessDialog.java
@@ -0,0 +1,128 @@
+// ============================================================================
+//
+// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
+//
+// This source code is available under agreement available at
+// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
+//
+// You should have received a copy of the agreement
+// along with this program; if not, write to Talend SA
+// 9 rue Pages 92150 Suresnes, France
+//
+// ============================================================================
+package org.talend.commons.report;
+
+import java.io.File;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.widgets.WidgetFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.talend.commons.exception.ExceptionHandler;
+import org.talend.commons.utils.io.FilesUtils;
+import org.talend.core.runtime.i18n.Messages;
+
+/**
+ * DOC jding class global comment. Detailled comment
+ */
+public class ReportAccessDialog extends Dialog {
+
+ private String shellTitle;
+
+ private String message;
+
+ private String reportGeneratedFile;
+
+ public ReportAccessDialog(Shell parentShell, String shellTitle, String message, String reportGeneratedFile) {
+ super(parentShell);
+ this.shellTitle = shellTitle;
+ this.message = message;
+ this.reportGeneratedFile = reportGeneratedFile;
+ }
+
+ @Override
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText(shellTitle);
+ }
+
+ @Override
+ protected void initializeBounds() {
+ getShell().setSize(700, 190);
+ Point location = getInitialLocation(getShell().getSize());
+ getShell().setLocation(location.x, location.y);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ Composite container = WidgetFactory.composite(SWT.NONE).layout(layout).layoutData(new GridData(GridData.FILL_BOTH))
+ .create(parent);
+ applyDialogFont(container);
+
+ Composite composite = new Composite(container, SWT.NONE);
+ GridLayout compositeLayout = new GridLayout();
+ compositeLayout.numColumns = 1;
+ compositeLayout.marginWidth = 0;
+ compositeLayout.marginTop = 8;
+ compositeLayout.marginLeft = 10;
+ composite.setLayout(compositeLayout);
+ Label successMsgLabel = new Label(composite, SWT.NONE);
+ successMsgLabel.setText(message);
+ GridData gridData = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_VERTICAL);
+ successMsgLabel.setLayoutData(gridData);
+
+ Composite noteComp = new Composite(composite, SWT.NONE);
+ noteComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+ noteComp.setLayout(new FormLayout());
+ Label noteLabel = new Label(noteComp, SWT.NONE);
+ noteLabel.setText(Messages.getString("AnalysisReportAccessDialog.completeReportAvailable"));
+ FormData noteLabelFormData = new FormData();
+ noteLabelFormData.bottom = new FormAttachment(100, -5);
+ noteLabelFormData.left = new FormAttachment(0, 0);
+ noteLabel.setLayoutData(noteLabelFormData);
+ Button browseBtn = new Button(noteComp, SWT.NONE);
+ browseBtn.setText(Messages.getString("AnalysisReportAccessDialog.accessBrowse"));
+ FormData linkFormData = new FormData();
+ linkFormData.top = new FormAttachment(0, 0);
+ linkFormData.left = new FormAttachment(noteLabel, 5);
+ browseBtn.setLayoutData(linkFormData);
+ browseBtn.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ File reportFile = new File(reportGeneratedFile);
+ if (reportFile != null && reportFile.exists()) {
+ try {
+ FilesUtils.selectFileInSystemExplorer(reportFile);
+ } catch (Exception excep) {
+ ExceptionHandler.process(excep);
+ }
+ }
+ }
+
+ });
+ return container;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+ }
+
+}
diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/runtime/i18n/messages.properties b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/runtime/i18n/messages.properties
index 1e9653fe32..5761b01ca7 100644
--- a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/runtime/i18n/messages.properties
+++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/runtime/i18n/messages.properties
@@ -640,7 +640,7 @@ TalendLibsServerManager.cannotGetUserLibraryServer=Cannot get the user library s
MigrationReportAccessDialog.title=Project items migration
MigrationReportAccessDialog.migrateSuccess=Project items migrated successfully.
MigrationReportAccessDialog.completeReportAvailable=Check the report
-MigrationReportAccessDialog.accessReport=here
+MigrationReportAccessDialog.accessBrowse=Browse...
MigrationReportAccessDialog.provideAnalysisTool=You can run project analysis now to analyze your migrated project. This experimental tool will generate a report containing:
MigrationReportAccessDialog.listOfProblems=- List of items to fix manually.
MigrationReportAccessDialog.listItems=- List of items to check.
@@ -655,7 +655,7 @@ ItemAnalysisReportManager.Warning.message=Can't run a new analysis now. Wait for
AnalysisReportAccessDialog.shellTitle=Project analysis
AnalysisReportAccessDialog.generateSuccess=Project analysis completed successfully.
AnalysisReportAccessDialog.completeReportAvailable=Check the report
-AnalysisReportAccessDialog.accessReport=here
+AnalysisReportAccessDialog.accessBrowse=Browse...
AbstractPomTemplateProjectSettingPage.defaultTabLabel=Default
AbstractPomTemplateProjectSettingPage.customTabLabel=Custom
AbstractPomTemplateProjectSettingPage.previewButton=Preview
diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/service/IDetectCVEService.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/service/IDetectCVEService.java
index eb7a585d5e..036c0e9b18 100644
--- a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/service/IDetectCVEService.java
+++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/service/IDetectCVEService.java
@@ -24,7 +24,9 @@ import java.util.List;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
+import org.talend.commons.CommonsPlugin;
import org.talend.commons.exception.ExceptionHandler;
+import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
import org.talend.core.model.general.Project;
import org.talend.core.model.properties.Item;
@@ -88,6 +90,13 @@ public interface IDetectCVEService extends IService {
*/
void clearCache();
+ public static IDetectCVEService get() {
+ if (GlobalServiceRegister.getDefault().isServiceRegistered(IDetectCVEService.class)) {
+ return GlobalServiceRegister.getDefault().getService(IDetectCVEService.class);
+ }
+ return null;
+ }
+
public static String mavenUri2GAV(String uri) {
if (MavenUrlHelper.isMvnUrl(uri)) {
MavenArtifact art = MavenUrlHelper.parseMvnUrl(uri);
@@ -1009,7 +1018,7 @@ public interface IDetectCVEService extends IService {
this.version = ver;
}
- private Date parseVersion() {
+ public Date parseVersion() {
String ver = version;
if (ver != null) {
if (ver.startsWith("R")) {
@@ -1019,7 +1028,10 @@ public interface IDetectCVEService extends IService {
try {
return df.parse(ver);
} catch (ParseException e) {
- ExceptionHandler.process(e);
+ if (CommonsPlugin.isDebugMode()) {
+ // avoid too much log
+ ExceptionHandler.process(e);
+ }
}
}
return null;
diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/migration/MigrationReportAccessDialog.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/migration/MigrationReportAccessDialog.java
index 24a9ab2376..a2eaca195a 100644
--- a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/migration/MigrationReportAccessDialog.java
+++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/migration/MigrationReportAccessDialog.java
@@ -21,13 +21,15 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Shell;
import org.talend.analysistask.ItemAnalysisReportManager;
import org.talend.commons.exception.ExceptionHandler;
@@ -84,11 +86,23 @@ public class MigrationReportAccessDialog extends Dialog {
migrationInfoLayout.marginLeft = 10;
migrationInfoArea.setLayout(migrationInfoLayout);
createMessageLabel(migrationInfoArea, Messages.getString("MigrationReportAccessDialog.migrateSuccess"));
- Link accessLink = new Link(migrationInfoArea, SWT.NONE);
- accessLink.setText(Messages.getString("MigrationReportAccessDialog.completeReportAvailable") + " "
- + Messages.getString("MigrationReportAccessDialog.accessReport") + " .");
- accessLink.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_VERTICAL));
- accessLink.addSelectionListener(new SelectionAdapter() {
+
+ Composite noteComp = new Composite(migrationInfoArea, SWT.NONE);
+ noteComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+ noteComp.setLayout(new FormLayout());
+ Label noteLabel = new Label(noteComp, SWT.NONE);
+ noteLabel.setText(Messages.getString("MigrationReportAccessDialog.completeReportAvailable"));
+ FormData noteLabelFormData = new FormData();
+ noteLabelFormData.bottom = new FormAttachment(100, -5);
+ noteLabelFormData.left = new FormAttachment(0, 0);
+ noteLabel.setLayoutData(noteLabelFormData);
+ Button browseBtn = new Button(noteComp, SWT.NONE);
+ browseBtn.setText(Messages.getString("MigrationReportAccessDialog.accessBrowse"));
+ FormData linkFormData = new FormData();
+ linkFormData.top = new FormAttachment(0, 0);
+ linkFormData.left = new FormAttachment(noteLabel, 5);
+ browseBtn.setLayoutData(linkFormData);
+ browseBtn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {