Address Sonar issues in sunburst visualisation
This commit addresses a number of bugs and
code smells reported by Sonar in the Eclipse Capra's
sunburst visualisation.
Change-Id: I67f40e72624d02ccd2a6cc89a97ada74806af1e5
diff --git a/bundles/org.eclipse.capra.ui.sunburst/src/org/eclipse/capra/ui/sunburst/SunburstPreferences.java b/bundles/org.eclipse.capra.ui.sunburst/src/org/eclipse/capra/ui/sunburst/SunburstPreferences.java
index 517b759..46e64d0 100644
--- a/bundles/org.eclipse.capra.ui.sunburst/src/org/eclipse/capra/ui/sunburst/SunburstPreferences.java
+++ b/bundles/org.eclipse.capra.ui.sunburst/src/org/eclipse/capra/ui/sunburst/SunburstPreferences.java
@@ -19,6 +19,13 @@
public class SunburstPreferences {
+ /**
+ * Private constructor to hide implicit public one.
+ */
+ private SunburstPreferences() {
+ // Deliberately do nothing.
+ }
+
public static final IScopeContext SCOPE_CONTEXT = InstanceScope.INSTANCE;
public static final String PREFERENCE_NODE = "org.eclipse.capra.ui.sunburst";
diff --git a/bundles/org.eclipse.capra.ui.sunburst/src/org/eclipse/capra/ui/sunburst/view/SunburstView.java b/bundles/org.eclipse.capra.ui.sunburst/src/org/eclipse/capra/ui/sunburst/view/SunburstView.java
index e2965c9..7612f60 100644
--- a/bundles/org.eclipse.capra.ui.sunburst/src/org/eclipse/capra/ui/sunburst/view/SunburstView.java
+++ b/bundles/org.eclipse.capra.ui.sunburst/src/org/eclipse/capra/ui/sunburst/view/SunburstView.java
@@ -39,10 +39,10 @@
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.Composite;
@@ -89,9 +89,9 @@
private Browser browser;
private Action selectDepthAction;
- final TraceMetaModelAdapter traceAdapter = ExtensionPointHelper.getTraceMetamodelAdapter().get();
- TraceMetaModelAdapter metamodelAdapter = ExtensionPointHelper.getTraceMetamodelAdapter().get();
- TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get();
+ private final TraceMetaModelAdapter traceAdapter = ExtensionPointHelper.getTraceMetamodelAdapter().orElseThrow();
+ private final TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter()
+ .orElseThrow();
private ResourceSet resourceSet = new ResourceSetImpl();
private EObject traceModel = persistenceAdapter.getTraceModel(resourceSet);
@@ -108,22 +108,22 @@
getSelected(part, selection);
browser.setText(createHTML());
}
- };
- /**
- * Retrieves the selected elements from {@code selection} and stores them in
- * {@link #selectedModels}.
- *
- * @param part the workbench part
- * @param selection the selection
- */
- private void getSelected(IWorkbenchPart part, ISelection selection) {
- selectedModels.clear();
- if (part.getSite().getSelectionProvider() != null) {
- selectedModels.addAll(SelectionSupportHelper
- .extractSelectedElements(part.getSite().getSelectionProvider().getSelection(), part));
+ /**
+ * Retrieves the selected elements from {@code selection} and stores them in
+ * {@link #selectedModels}.
+ *
+ * @param part the workbench part
+ * @param selection the selection
+ */
+ private void getSelected(IWorkbenchPart part, ISelection selection) {
+ selectedModels.clear();
+ if (part.getSite().getSelectionProvider() != null) {
+ selectedModels.addAll(SelectionSupportHelper
+ .extractSelectedElements(part.getSite().getSelectionProvider().getSelection(), part));
+ }
}
- }
+ };
@Override
public void createPartControl(Composite parent) {
@@ -236,7 +236,6 @@
List<EObject> alreadySeen = new ArrayList<>();
if (!selectedModels.isEmpty()) {
- ArtifactHelper artifactHelper = new ArtifactHelper(artifactModel);
for (Object selection : selectedModels) {
IArtifactHandler<Object> handler = (IArtifactHandler<Object>) artifactHelper.getHandler(selection)
@@ -273,8 +272,7 @@
}
}
- String json = start + inner.toString() + end;
- return json;
+ return start + inner.toString() + end;
}
/**
@@ -369,31 +367,27 @@
private class SelectDepthAction extends Action {
@Override
public void run() {
- IInputValidator numberValidator = new IInputValidator() {
-
- @Override
- public String isValid(String newText) {
- boolean validationError = false;
- try {
- int i = Integer.parseInt(newText);
- if (i < 1) {
- validationError = true;
- }
- } catch (NumberFormatException ex) {
+ IInputValidator numberValidator = newText -> {
+ boolean validationError = false;
+ try {
+ int i = Integer.parseInt(newText);
+ if (i < 1) {
validationError = true;
}
- if (validationError) {
- return "Please enter a valid number larger than 0.";
- }
- return null;
+ } catch (NumberFormatException ex) {
+ validationError = true;
}
+ if (validationError) {
+ return "Please enter a valid number larger than 0.";
+ }
+ return null;
};
InputDialog dialog = new InputDialog(getViewSite().getShell(), "Trace link depth",
"Please select the maximum depth until which traceability links will be traversed for the Sunburst view.",
String.valueOf(maxRecursionLevel), numberValidator);
dialog.setBlockOnOpen(true);
dialog.open();
- if (dialog.getReturnCode() == Dialog.OK) {
+ if (dialog.getReturnCode() == Window.OK) {
maxRecursionLevel = Integer.parseInt(dialog.getValue());
preferences.putInt(SunburstPreferences.MAX_RECURSION_LEVEL, maxRecursionLevel);
try {
@@ -405,6 +399,6 @@
browser.setText(createHTML());
}
}
- };
+ }
}
\ No newline at end of file