sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/smtwidgets/SystemDefinitionFileSelectionValidator.java
author terytkon
Thu, 11 Mar 2010 19:08:43 +0200
changeset 0 522a326673b6
permissions -rw-r--r--
Moved swconfigapps content under oss repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     2
// All rights reserved.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     3
// This component and the accompanying materials are made available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     5
// which accompanies this distribution, and is available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     7
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     8
// Initial Contributors:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    10
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    11
// Contributors:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    12
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    13
// Description:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    14
// ${file_name}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    15
// 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    16
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    17
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    18
package com.symbian.smt.gui.smtwidgets;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    19
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    20
import java.io.File;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    21
import java.io.IOException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    22
import java.io.InputStream;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    23
import java.net.MalformedURLException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    24
import java.net.URL;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    25
import java.net.URLConnection;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    26
import java.util.List;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    27
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    28
import javax.xml.parsers.DocumentBuilder;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    29
import javax.xml.parsers.DocumentBuilderFactory;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    30
import javax.xml.parsers.ParserConfigurationException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    31
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    32
import org.w3c.dom.Document;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    33
import org.xml.sax.ErrorHandler;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    34
import org.xml.sax.SAXException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    35
import org.xml.sax.SAXParseException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    36
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    37
import com.symbian.smt.gui.Logger;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    38
import com.symbian.smt.gui.XmlFileValidator;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    39
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    40
/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    41
 * @author barbararosi-schwartz
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    42
 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    43
 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    44
public class SystemDefinitionFileSelectionValidator extends
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    45
		XmlFileValidator implements IXmlFileInputValidator {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    46
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    47
	private List<String> sysdefFilenames;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    48
	private InputStream urlInputStream;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    49
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    50
	public SystemDefinitionFileSelectionValidator(List<String> filenames) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    51
		super();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    52
		
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    53
		this.sysdefFilenames = filenames;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    54
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    55
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    56
	private void closeInputStream() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    57
		if (urlInputStream != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    58
			try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    59
				urlInputStream.close();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    60
			} catch (IOException ignore) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    61
				Logger.log(ignore.getMessage(), ignore);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    62
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    63
			urlInputStream = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    64
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    65
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    66
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    67
	protected Document createDocument(final String filePath)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    68
			throws ParserConfigurationException, SAXException, IOException {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    69
		DocumentBuilderFactory domFactory = DocumentBuilderFactory
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    70
				.newInstance();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    71
		domFactory.setNamespaceAware(true);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    72
		domFactory.setValidating(false);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    73
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    74
		DocumentBuilder builder = domFactory.newDocumentBuilder();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    75
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    76
		ErrorHandler errorHandler = new ErrorHandler() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    77
			public void error(SAXParseException exception)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    78
					throws SAXParseException {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    79
				throw exception;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    80
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    81
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    82
			public void fatalError(SAXParseException exception)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    83
					throws SAXParseException {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    84
				throw exception;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    85
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    86
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    87
			public void warning(SAXParseException exception)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    88
					throws SAXParseException {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    89
				throw exception;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    90
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    91
		};
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    92
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    93
		builder.setErrorHandler(errorHandler);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    94
		Document doc = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    95
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    96
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    97
			if (isUrl(filePath)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    98
				if (urlInputStream != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    99
					doc = builder.parse(urlInputStream);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   100
					closeInputStream();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   101
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   102
			} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   103
				doc = builder.parse(filePath);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   104
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   105
		} catch (InvalidPathException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   106
			// This cannot happen as it has already been checked while the user
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   107
			// was typing in
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   108
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   109
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   110
		return doc;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   111
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   112
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   113
	private String isFilePathValid(String filePath) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   114
		return isFileReadable(filePath);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   115
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   116
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   117
	/* (non-Javadoc)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   118
	 * @see com.symbian.smt.gui.smtwidgets.IFileInputValidator#isFileReadable(java.lang.String)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   119
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   120
	public String isFileReadable(String filePath) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   121
		String errorMessage = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   122
		File inFile = new File(filePath);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   123
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   124
		if (!inFile.canRead()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   125
			return "Selected file cannot be read.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   126
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   127
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   128
		return errorMessage;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   129
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   130
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   131
	/* (non-Javadoc)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   132
	 * @see com.symbian.smt.gui.smtwidgets.IFileInputValidator#isUrl(java.lang.String)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   133
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   134
	public boolean isUrl(String filePath) throws InvalidPathException {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   135
		int index = filePath.indexOf(':');
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   136
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   137
		if (index == -1 || index == 1) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   138
			return false;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   139
		} else if (index > 1) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   140
			return true;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   141
		} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   142
			throw new InvalidPathException("Unexpected file path format.");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   143
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   144
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   145
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   146
	/* (non-Javadoc)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   147
	 * @see com.symbian.smt.gui.smtwidgets.IFileInputValidator#isUrlResourceReadable(java.lang.String)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   148
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   149
	public String isUrlResourceReadable(String filePath) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   150
		String errorMessage = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   151
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   152
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   153
			URL fileURL = new URL(filePath.trim());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   154
			URLConnection connection = fileURL.openConnection();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   155
			String contentType = connection.getContentType();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   156
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   157
			if (contentType == null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   158
				return "System definition resource at specified URL cannot be read.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   159
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   160
			
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   161
			if (!contentType.endsWith("xml")) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   162
				return "Specified URL is not an XML document.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   163
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   164
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   165
			urlInputStream = connection.getInputStream();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   166
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   167
			if (urlInputStream == null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   168
				errorMessage = "System definition resource at specified URL cannot be read.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   169
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   170
		} catch (IllegalArgumentException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   171
			closeInputStream();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   172
			errorMessage = "System definition resource at specified URL cannot be read.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   173
		} catch (MalformedURLException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   174
			closeInputStream();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   175
			errorMessage = "Specified URL is not a valid URL.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   176
		} catch (IOException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   177
			closeInputStream();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   178
			errorMessage = "System definition resource at specified URL cannot be reached.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   179
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   180
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   181
		return errorMessage;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   182
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   183
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   184
	private String isUrlValid(String url) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   185
		String errorMessage = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   186
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   187
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   188
			URL inputUrl = new URL(url);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   189
			inputUrl.openConnection();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   190
		} catch (MalformedURLException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   191
			closeInputStream();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   192
			errorMessage = "Specified URL is not a valid URL.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   193
		} catch (IOException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   194
			closeInputStream();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   195
			errorMessage = "Resource at specified URL cannot be reached.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   196
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   197
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   198
		return errorMessage;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   199
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   200
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   201
	/*
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   202
	 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(java.lang.String)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   203
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   204
	public String isValid(String filePath) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   205
		if (filePath == null || filePath.length() == 0) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   206
			return "";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   207
		} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   208
			return validateResourceWhileUserTypes(filePath);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   209
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   210
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   211
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   212
	/* (non-Javadoc)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   213
	 * @see com.symbian.smt.gui.smtwidgets.IXmlFileInputValidator#isXmlValid(java.lang.String)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   214
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   215
	public String isXmlValid(String filePath) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   216
		return validateXml(filePath);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   217
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   218
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   219
	private String validateResourceWhileUserTypes(String filePath) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   220
		String errorMessage = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   221
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   222
		// First check path is not UNC
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   223
		if (filePath.startsWith(File.separator)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   224
			return "UNC paths are not compatible with the System Model Manager";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   225
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   226
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   227
		// Then check that filename (path) is not duplicate
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   228
		// by checking name against table
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   229
		if ((sysdefFilenames != null) && (sysdefFilenames.contains(filePath))) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   230
			return "The selected file has already been assigned.";
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   231
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   232
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   233
		// Then check that path is appropriate
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   234
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   235
			if (isUrl(filePath)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   236
				errorMessage = isUrlValid(filePath);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   237
			} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   238
				errorMessage = isFilePathValid(filePath);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   239
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   240
		} catch (InvalidPathException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   241
			errorMessage = e.getMessage();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   242
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   243
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   244
		return errorMessage;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   245
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   246
}