sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/FileValidationHelper.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/FileValidationHelper.java Thu Mar 11 19:08:43 2010 +0200
@@ -0,0 +1,169 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+package com.symbian.smt.gui;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author barbararosi-schwartz
+ *
+ */
+public class FileValidationHelper {
+
+ private static void createErrorMarker(IResource resource,
+ String errorMessage) {
+ IMarker marker;
+ try {
+ marker = resource.createMarker(IMarker.PROBLEM);
+
+ if (marker.exists()) {
+ marker.setAttribute(IMarker.MESSAGE, errorMessage);
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
+ marker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
+ }
+ } catch (CoreException e) {
+ Logger.log("Cannot create error marker for resource ["
+ + resource.getName() + "].", e);
+ }
+ }
+
+ private static void deleteErrorMarkers(IResource resource) {
+ try {
+ resource
+ .deleteMarkers(IMarker.PROBLEM, false, IResource.DEPTH_ZERO);
+ } catch (CoreException e) {
+ Logger.log("Cannot delete error marker for resource ["
+ + resource.getName() + "].", e);
+ }
+ }
+
+ private static void showProblemsView() {
+ IWorkbenchWindow window = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow();
+
+ if (window == null) {
+ return;
+ }
+
+ IWorkbenchPage page = window.getActivePage();
+
+ if (page == null) {
+ return;
+ }
+
+ try {
+ page.showView("org.eclipse.ui.views.ProblemView");
+ } catch (PartInitException e) {
+ String message = "Could not open the Problems View. Reason: "
+ + e.getMessage();
+ String title = "Error";
+
+ MessageDialog.openError(window.getShell(), title, message);
+ }
+ }
+
+ private static void communicateCoreException(CoreException e) {
+ Logger.log(e.getMessage(), e);
+
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+
+ if (window == null) {
+ return;
+ }
+
+ String message = "Problem encountered in locating errors in the workspace. Reason: "
+ + e.getMessage();
+ String title = "Error";
+
+ MessageDialog.openError(window.getShell(), title, message);
+ }
+
+ public static void validateResourceFile(IFile file) {
+ ResourcesEnums resourceType = ManageResources.getResourceType(file);
+
+ if (resourceType != null) {
+ ResourceFileValidator validator = new ResourceFileValidator(
+ resourceType);
+ String errorMessage;
+
+ try {
+ String url = ManageResources.getResourceUrl(file);
+
+ if (url == null) {
+ errorMessage = validator.validateXml(file.getLocation()
+ .toOSString());
+ }
+ else {
+ errorMessage = validator.validateXml(url);
+ }
+
+ deleteErrorMarkers(file);
+
+ if (errorMessage != null) {
+ createErrorMarker(file, errorMessage);
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ showProblemsView();
+ }
+ });
+
+ }
+ } catch (CoreException e) {
+ communicateCoreException(e);
+ }
+ }
+ }
+
+ public static void validateSysDefFile(IFile file) {
+ XmlFileValidator validator = new XmlFileValidator();
+ String errorMessage;
+
+ try {
+ String url = ManageResources.getResourceUrl(file);
+
+ if (url == null) {
+ errorMessage = validator.validateXml(file.getLocation()
+ .toOSString());
+ }
+ else {
+ errorMessage = validator.validateXml(url);
+ }
+
+ deleteErrorMarkers(file);
+
+ if (errorMessage != null) {
+ createErrorMarker(file, errorMessage);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ showProblemsView();
+ }
+ });
+ }
+ } catch (CoreException e) {
+ communicateCoreException(e);
+ }
+ }
+}