diff -r 000000000000 -r 522a326673b6 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); + } + } +}