/*
* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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.nokia.helium.sysdef;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/**
* This class implement the logic to parse package_map.xml files.
*
* Example of package_map.xml file:
* <code>
* <?xml version="1.0"?>
* <PackageMap root="sf" layer="app" />
* </code>
*
*/
public class PackageMap {
private String root;
private String layer;
/**
* Create a PackageMapParser by loading data from an XML file.
*
* @param file the file to parse
* @throws PackageMapParsingException in case of error
*/
public PackageMap(File file) throws PackageMapParsingException {
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(file);
if (!doc.getDocumentElement().getNodeName().equals("PackageMap")) {
throw new PackageMapParsingException("Invalid XML format for " + file.getAbsolutePath() + " root element must be PackageMap");
}
if (!doc.getDocumentElement().hasAttribute("root")) {
throw new PackageMapParsingException("root attribute under element " + doc.getDocumentElement().getTagName() + " is missing in file: " + file);
}
if (!doc.getDocumentElement().hasAttribute("layer")) {
throw new PackageMapParsingException("layer attribute under element " + doc.getDocumentElement().getTagName() + " is missing in file: " + file);
}
setRoot(doc.getDocumentElement().getAttribute("root"));
setLayer(doc.getDocumentElement().getAttribute("layer"));
} catch (ParserConfigurationException e) {
throw new PackageMapParsingException("Error from the XML parser configuration: " + e.getMessage(), e);
} catch (SAXException e) {
throw new PackageMapParsingException("Error parsing the file: " + file + ": " + e.getMessage(), e);
} catch (IOException e) {
throw new PackageMapParsingException(e.getMessage(), e);
}
}
public void setRoot(String root) {
this.root = root;
}
public String getRoot() {
return root;
}
public void setLayer(String layer) {
this.layer = layer;
}
public String getLayer() {
return layer;
}
}