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