sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/ResourceFileValidator.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
//
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;
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.util.HashMap;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    22
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    23
/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    24
 * @author barbararosi-schwartz
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    25
 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    26
 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    27
public class ResourceFileValidator extends XmlFileValidator {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    28
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    29
	 * The Map that caches all defined resource schema files, keyed by the
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    30
	 * ResourcesEnums enums.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    31
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    32
	private static final HashMap<ResourcesEnums, String> resourceSchemaFilesMap = new HashMap<ResourcesEnums, String>();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    33
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    34
	static {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    35
		for (ResourcesEnums type : ResourcesEnums.values()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    36
			switch (type) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    37
			case BORDER_SHAPES:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    38
				resourceSchemaFilesMap
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    39
						.put(type,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    40
								"./resources/xsd/Border-shapes.xsd");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    41
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    42
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    43
			case BORDER_STYLES:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    44
				resourceSchemaFilesMap
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    45
						.put(type,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    46
								"./resources/xsd/Border-styles.xsd");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    47
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    48
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    49
			case COLOURS:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    50
				resourceSchemaFilesMap
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    51
						.put(type,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    52
								"./resources/xsd/Colours.xsd");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    53
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    54
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    55
			case DEPENDENCIES:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    56
				// No need for schema validation
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    57
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    58
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    59
			case LEVELS:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    60
				resourceSchemaFilesMap
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    61
						.put(type,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    62
								"./resources/xsd/Levels.xsd");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    63
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    64
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    65
			case LOCALISATION:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    66
				resourceSchemaFilesMap
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    67
						.put(type,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    68
								"./resources/xsd/Localisation.xsd");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    69
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    70
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    71
			case PATTERNS:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    72
				resourceSchemaFilesMap
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    73
						.put(type,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    74
								"./resources/xsd/Patterns.xsd");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    75
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    76
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    77
			case SHAPES:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    78
				// TODO:BRS: Need to get the Shapes schema right before
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    79
				// validating with it.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    80
				// resourceSchemaFilesMap.put(type,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    81
				// "./../SystemModelGenerator/resources/xsd/Shapes.xsd");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    82
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    83
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    84
			case SYSTEM_INFO:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    85
				// No need for schema validation
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    86
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    87
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    88
			case S12_XML:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    89
				// No need for schema validation
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    90
				break;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    91
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    92
			default:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    93
				throw new RuntimeException("Unknown resource type ["
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    94
						+ type.arg() + "]");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    95
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    96
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    97
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    98
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    99
	private ResourcesEnums selectedResourceType;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   100
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   101
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   102
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   103
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   104
	public ResourceFileValidator(ResourcesEnums selectedResourceType) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   105
		super();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   106
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   107
		this.selectedResourceType = selectedResourceType;
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
	// TODO:BRS:This method is incomplete and currently unused. It is related to 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   111
	// comparing 2 different border shapes and making sure elements are not repeated 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   112
	// between files (the same should apply to patterns).
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   113
	// The return type in the signature should also be changed to a list of border
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   114
	// shape item objects.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   115
//	private void getBorderShapesItems(String filePath) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   116
//		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   117
//			JAXBContext context = JAXBContext.newInstance(Values.class);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   118
//			Unmarshaller unmarshaller = context.createUnmarshaller();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   119
//			// Values values = unmarshaller.unmarshal(File or URL);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   120
//		} catch (JAXBException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   121
//			e.printStackTrace();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   122
//		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   123
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   124
//	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   125
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   126
	protected File getSchemaFile() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   127
		String schemaFilePath = resourceSchemaFilesMap
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   128
				.get(selectedResourceType);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   129
		File schemaFile = new File(Helper.relative2AbsolutePaths(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   130
				schemaFilePath, smgFolder, "|"));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   131
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   132
		return schemaFile;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   133
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   134
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   135
	public String validateXml(String filePath) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   136
		String errorMessage = super.validateXml(filePath);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   137
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   138
		if (errorMessage == null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   139
			if (selectedResourceType.equals(ResourcesEnums.BORDER_SHAPES)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   140
					|| selectedResourceType.equals(ResourcesEnums.PATTERNS)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   141
				// Finally, if we have multiple files for this resource, check
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   142
				// about duplicates
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   143
				// TODO:BRS:This piece of code is unfinished. If it is required to check 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   144
				// that there are no duplicate items across multiple files, use method 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   145
				// getBorderShapesItems() above and create similar getPatternsItem() method
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   146
				// errorMessage = do special validation
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   147
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   148
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   149
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   150
		return errorMessage;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   151
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   152
}